Last Updated: 29 August 2024 | Change Log
Payout to a wallet
Use our card on file resource to authorize a payment with a digital wallet.
You must integrate with Google Pay or Apple Pay before you can submit a wallet payment request to our Payments API.
Payout to wallet flow
- Integrate with your mobile wallet provider: Apple Pay and Google Pay
- Integrate with our Payments API - use our
payments:cardOnFileAuthorize
endpoint with your encrypted payload - see below - You receive a
tokens:token
in your response - Integrate with our Payouts API - use your token to make a payout with
payoutInstrument
`"type": "card/tokenized"
Card on file authorization request
POST
your initial card on file authorizations to our payments:cardOnFileAuthorize
action link resource received in your query the payments root resource request.
Card on file authorization example request:
POST
https://try.access.worldpay.com/payments/authorizations/cardOnFile
cardOnFile
authorization request body
{ "transactionReference": "Memory265-13/08/1876", "merchant": { "entity": "default" }, "instruction": { "narrative": { "line1": "Mind Palace Ltd" }, "value": { "currency": "GBP", "amount": 250 }, "paymentInstrument": { "type": "card/wallet+applepay", "walletToken": "{\"version\": \"EC_v1\",\"data\": \"kdHd..GQ==\",\"signature\": \"MIAGCSqGSIb3DQEH...AAA\",\"header\": {\"transactionId\": \"d3b28af..f8\",\"ephemeralPublicKey\": \"MFkwE..Q==\",\"publicKeyHash\": \"dxCK..6o=\"}}" } } }
Descriptions of your authorization request parameters
Parameter | Required | Description |
---|---|---|
transactionReference | ✅ | A unique reference generated by you that is used to identify a payment throughout its lifecycle. See transaction reference format, for more details and the best practices. |
merchant | ✅ | An object that contains information about the merchant. |
merchant.entity | ✅ | Directs your payment to assist with billing, reporting and reconciliation. This is mandatory for authentication and queries. Contact your Implementation Manager for more details. |
instruction | ✅ | An object that contains all the information related to the payment. |
instruction.narrative | ✅ | The text that appears on your customer's statement. Used to identify the merchant. See narrative format for more details and best practices. |
narrative.line1 | ✅ | The first line of the narrative which appears on your customer's statement (24 characters max. If character is not supported it is replaced with a space.). See narrative line1 format for more details. |
instruction.value | ✅ | An object that contains information about the value of the payment. |
value.currency | ✅ | The three digit currency code. See list of supported currencies. |
value.amount | ✅ | The payment amount. This is a whole number with an exponent e.g. if exponent is two, 250 is 2.50. You can find the relevant exponent in our currency table. |
instruction.paymentInstrument | ✅ | An object that contains the payment type and details. You must integrate with Apple Pay/ Google Pay first to use the card/wallet+applepay /card/wallet+googlepay paymentInstrument . |
cardOnFile authorization optional fields
The requests below contain all the mandatory and optional fields needed for a successful cardOnFile
authorization request. The full request schema is also available in our API reference.
Complete card on file authorization request schema
Full cardOnFile
authorization request body:
{ "transactionReference": "Memory265-13/08/1876", "merchant": { "entity": "default" }, "instruction": { "intent": "instalment", "narrative": { "line1": "Mind Palace Ltd", "line2": "Memory265-13/08/1876" }, "value": { "currency": "GBP", "amount": 1000 }, "paymentInstrument": { "type": "card/wallet+applepay", "walletToken": "{\"version\": \"EC_v1\",\"data\": \"kdHd..GQ==\",\"signature\": \"MIAGCSqGSIb3DQEH...AAA\",\"header\": {\"transactionId\": \"d3b28af..f8\",\"ephemeralPublicKey\": \"MFkwE..Q==\",\"publicKeyHash\": \"dxCK..6o=\"}}", "billingAddress": { "address1": "221B Baker Street", "address2": "Marylebone", "address3": "Westminster", "postalCode": "NW1 6XE", "city": "London", "state": "Greater London", "countryCode": "GB" } } } }
Descriptions of your card on file authorization request parameters
Parameter | Required | Description |
---|---|---|
instruction.intent | ❌ | A parameter detailing the reason for this particular repeat agreement. Possible value:
|
narrative.line2 | ❌ | Additional details about the payment e.g. order number, telephone number. |
Card on file response
Successful response
You receive:
- an HTTP code
201
- an
"outcome": "authorized"
- risk factors (only returned if issuer identifies conflict)
- a scheme reference
- a
paymentInstrument
detailing brand information about the card that was used - links to cancel, settle, partially settle or query a payment payment events
- authorization links
- a token link you can use to make a Payout
Refused response
You receive:
- an HTTP code
201
- an
"outcome": "refused"
- a refusal code
- a
description
which gives additional context on the refusal - risk factors (only returned if issuer identifies conflict)
- a
paymentInstrument
Example response
{ "outcome": "authorized", "riskFactors": [{ "risk": "not_checked", "detail": "postcode", "type": "avs" }, { "risk": "not_checked", "detail": "address", "type": "avs" } ], "scheme": { "reference": "schemeReference" }, "paymentInstrument": { "type": "card/network+masked", "card": { "number": { "bin": "444433", "last4Digits": "1111", "dpan": "4444333322221111" }, "countryCode": "GB", "expiryDate": { "month": 6, "year": 2021 }, "brand": "visa", "fundingType": "debit", "issuer": { "name": "VALID_ISSUER" }, "paymentAccountReference": "somePAR" } }, "_links": { "payments:cancel": { "href": "https://try.access.worldpay.com/payments/authorizations/cancellations/eyJrIjoiazUyOTVhMSIsImxpbmtWZXJzaW9uIjoiMy4wLjAifQ==.7uyuNo1ShOgM5rTwStg86LXzb0a2wdLW1lwX:DIQ2Ecrp4gw65VLnHmjsAVqzpa2NcwixaBb2p8R2x5NPXdRpybJ2ndKlbkNOc9gj+ruN20iaTdYqv2FNgB3ZAw3g+yyUMUlQDFD8DU++ZswXpUQe8YTBHmTP8zHQUXrSORn9IaI6kzJnMu2HWwEJOqKnWLvRCMy:fr4ptatJJrmRVON8WTjisJL:sd3TJ9uDcO:gD+q+Q01y++Mzop0k8y3bDcnNBpsG:8xf4uKGGYO3EcAWA==" }, "payments:settle": { "href": "https://try.access.worldpay.com/payments/settlements/full/eyJrIjoiazUyOTVhMSIsImxpbmtWZXJzaW9uIjoiMy4wLjAifQ==.7uyuNo1ShOgM5rTwStg86LXzb0a2wdLW1lwX:DIQ2Ecrp4gw65VLnHmjsAVqzpa2NcwixaBb2p8R2x5NPXdRpybJ2ndKlbkNOc9gj+ruN20iaTdYqv2FNgB3ZAw3g+yyUMUlQDFD8DU++ZswXpUQe8YTBHmTP8zHQUXrSORn9IaI6kzJnMu2HWwEJOqKnWLvRCMy:fr4ptatJJrmRVON8WTjisJL:sd3TJ9uDcO:gD+q+Q01y++Mzop0k8y3bDcnNBpsG:8xf4uKGGYO3EcAWA==" }, "payments:partialSettle": { "href": "https://try.access.worldpay.com/payments/settlements/partials/eyJrIjoiazUyOTVhMSIsImxpbmtWZXJzaW9uIjoiMy4wLjAifQ==.7uyuNo1ShOgM5rTwStg86LXzb0a2wdLW1lwX:DIQ2Ecrp4gw65VLnHmjsAVqzpa2NcwixaBb2p8R2x5NPXdRpybJ2ndKlbkNOc9gj+ruN20iaTdYqv2FNgB3ZAw3g+yyUMUlQDFD8DU++ZswXpUQe8YTBHmTP8zHQUXrSORn9IaI6kzJnMu2HWwEJOqKnWLvRCMy:fr4ptatJJrmRVON8WTjisJL:sd3TJ9uDcO:gD+q+Q01y++Mzop0k8y3bDcnNBpsG:8xf4uKGGYO3EcAWA==" }, "payments:events": { "href": "https://try.access.worldpay.com/payments/events/eyJrIjoiazUyOTVhMSIsImxpbmtWZXJzaW9uIjoiMy4wLjAifQ==.7uyuNo1ShOgM5rTwStg86LXzb0a2wdLW1lwX:DIQ2Ecrp4gw65VLnHmjsAVqzpa2NcwixaBb2p8R2x5NPXdRpybJ2ndKlbkNOc9gj+ruN20iaTdYqv2FNgB3ZAw3g+yyUMUlQDFD8DU++ZswXpUQe8YTBHmTP8zHQUXrSORn9IaI6kzJnMu2HWwEJOqKnWLvRCMy:fr4ptatJJrmRVON8WTjisJL:sd3TJ9uDcO:gD+q+Q01y++Mzop0k8y3bDcnNBpsG:8xf4uKGGYO3EcAWA==" }, "payments:cardOnFileAuthorize": { "href": "https://try.access.worldpay.com/payments/authorizations/cardOnFile/eyJrIjoiazUyOTVhMSIsImxpbmtWZXJzaW9uIjoiMS4wLjAifQ==.R6PzeBs1kC+VT5dtn2WKHquYi:0CPtdsTmoC0CiPjw6CkE+Ujvons6ZVs+R2JwUJmXAx1+34Kz67cP9hSVZNkQ==" }, "payments:recurringAuthorize": { "href": "https://try.access.worldpay.com/payments/authorizations/recurring/eyJrIjoiazUyOTVhMSIsImxpbmtWZXJzaW9uIjoiMS4wLjAifQ==.R6PzeBs1kC+VT5dtn2WKHquYi:0CPtdsTmoC0CiPjw6CkE+Ujvons6ZVs+R2JwUJmXAx1+34Kz67cP9hSVZNkQ==" }, "tokens:token": { "href": "https://access.worldpay.com/tokens/linkData" }, "curies": [{ "name": "payments", "href": "https://try.access.worldpay.com/rels/payments/{rel}", "templated": true }] } }
You can use the payments:settle
action link to settle the payment straight away. Alternatively you can cache the response and use the link to settle the payment later.
Next Steps
Make a payout with the token you have received in your card on file response.