Request an Apple Pay Card Payout
Last updated: October 1, 2025
The Apple Pay Card Payout solution enables you to perform payouts to eligible cards with Apple Pay on the following platforms and minimum OS versions:
- iOS 17.0
- iPadOS 17.0
- Mac Catalyst 17.0
- visionOS 1.0
Note
You cannot perform Apple Pay card payouts using macOS or a browser.
To perform an Apple Pay card payout, follow these steps:
- Configure Apple Pay. This step is only required once during your initial setup.
- Generate a Checkout.com card token using the Apple Pay token.
- Check the recipient card's eligibility to receive payouts.
- Check your sub-account balance to ensure you have sufficient funds for the payout.
- Perform a direct funds disbursement, or money transfer.
- Check the payout's outcome.
To perform payouts using Apple Pay, you must add your Apple merchant ID and generate your payment processing certificate.
Note
If you've previously configured Apple Pay as a payment method, you can skip to generating a card token.
In your Apple Developer account:
- Go to the Add Merchant IDs section.
- Select Merchant IDs, then Continue.
- Add a description for the ID. For example,
Merchant ID for sandbox environment
. - Enter a merchant ID name in the Identifier section. Use a descriptive name that matches the domain and environment you will use the ID in. For example,
merchant.com.mywebsite.sandbox
.
To make it easier to test your integration, create separate merchant IDs for your sandbox and production environments.
Call the Generate Apple Pay signing request endpoint to create a certificate signing request (CSR).
post
https://api.checkout.com/applepay/signing-requests
1curl --location --request POST 'https://api.checkout.com/applepay/signing-requests' \2--header 'Authorization: Bearer pk_xxxxxxxxxxxxxxxxxxxxxxxxxx' \
1{2"content": "--- --BEGIN CERTIFICATE REQUEST--- --MIIBSTCB8AIBADCBjzELMAkGA1UEBhMCR0IxDzANBgNVBAgMBkxvbmRvbjEPMA0GA1UEBwwGTG9uZG9uMRUwEwYDVQQKDAxDaGVja291dC5jb20xCzAJBgNVBA8MAklUMRUwEwYDVQQDDAxjaGVja291dC5jb20xIzAhBgkqhkiG9w0BCQEWFHN1cHBvcnRAY2hlY2tvdXQuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwjiZ410yhHCkwa04OfrPb0e5bqt4FncefJwAbFpcqARTWefYZNvLyYkV68PmAKoO7cthfAFVfoVNqXBEGzjg1TAKBggqhkjOPQQDAgNIADBFAiAcgJLboQK3GBQX/K5ghNzbcw4mnVcVk/rUmkIxu0M28gIhALO01kH13CZzMkAhRhnkeCUPaP+IqUqQaDdZL8d5xgFc--- --END CERTIFICATE REQUEST--- --"3}
The response returns a .csr
file. You need to upload this to your Apple Developer account in the Create a payment processing certificate step.
Sign in to your Apple Developer account:
- Go to the Merchant IDs list, and select the merchant ID you created in the Configure Apple Pay step.
- In the Apple Pay Payment Processing Certificate section, select Create Certificate.
- If you're prompted about processing in China, select No, then select Continue.
- Upload the
.csr
file you received in the Generate a CSR step, then select Continue. - Select Download to retrieve your payment processing certificate. This will be a
.cer
file.
You must provide Checkout.com with the signed payment processing certificate.
We use the certificate to decrypt Apple Pay tokens, which we then use to generate Checkout.com card tokens. You can use the card tokens to request a payment or payout.
Before uploading the certificate, you must convert it to a base64-encoded string. In your terminal, run the following command:
1openssl x509 -inform der -in apple_pay.cer -out base64_converted.cer
Call the Upload Apple Pay certificate endpoint to upload the base64-encoded payment processing certificate.
post
https://api.checkout.com/applepay/certificates
1curl --location --request POST 'https://api.sandbox.checkout.com/applepay/certificates' \2--header 'Authorization: Bearer pk_xxxxxxxxxxxxxxxxxxxxxxxxxx' \3--header 'Content-Type: application/json' \4--data-raw '{5"content": "MIIEfTCCBCOgAwIBAgIID/asezaWNycwCgYIKoZIzj0EAwIwgYAxNDAyBgNVBAMMK0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zIENBIC0gRzIxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0yMTA2MTExMzQ0MjVaFw0yMzA3MTExMzQ0MjRaMIGuMS0wKwYKCZImiZPyLGQBAQwdbWVyY2hhbnQuY29tLmNoZWNrb3V0LnNhbmRib3gxQzBBBgNVBAMMOkFwcGxlIFBheSBQYXltZW50IFByb2Nlc3Npbmc6bWVyY2hhbnQuY29tLmNoZWNrb3V0LnNhbmRib3gxEzARBgNVBAsMCkUzMlhCUUs0UTUxFjAUBgNVBAoMDUNoZWNrb3V0IEx0ZC4xCzAJBgNVBAYTAkdCMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsvyUM9D1cssldH+VPptEn4VAw/Q6ovJuHVlyBSRaPGLHFce04lCiT/xnXOWRkUxyCzQWKhfG2zo19u4s+evx7aOCAlUwggJRMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUhLaEzDqGYnIWWZToGqO9SN863wswRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzABhitodHRwOi8vb2NzcC5hcHBsZS5jb20vb2NzcDA0LWFwcGxld3dkcmNhMjAxMIIBHQYDVR0gBIIBFDCCARAwggEMBgkqhkiG92NkBQEwgf4wgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wNgYIKwYBBQUHAgEWKmh0dHA6Ly93d3cuYXBwbGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5LzA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLmFwcGxlLmNvbS9hcHBsZXd3ZHJjYTIuY3JsMB0GA1UdDgQWBBRNhvr33NDuM4QxBZd16a+ACbHoEzAOBgNVHQ8BAf8EBAMCAygwTwYJKoZIhvdjZAYgBEIMQDdGRjg0REI5MDE5NkVGN0I5RTc4NDZEMjg4NzZCNkJGRDU2RjM4MDlCNzUyNjAzRDM4QzcxNUJFMTY2M0JENEMwCgYIKoZIzj0EAwIDSAAwRQIgTjywMwOrLX3TwDUrPn7yDGL/dhc+VNudv0uGBOWRyXACIQClFQFvgx+hfTwVdHt8klrswpgtZtbYjs74p9GYuc8Puw=="6}'
1{2"id": "aplc_hefptsiydvkexnzzb35zrlqgfq",3"public_key_hash": "tqYV+tmG9aMh+l/K6cicUnPqkb1gUiLjSTM9gEz6Nl0=",4"valid_from": "2021-01-01T17:32:28.000Z",5"valid_until": "2025-01-01T17:32:28.000Z"6}
When a customer authenticates a transaction with biometrics on Apple Pay, Apple generates a unique payment token for the session.
You can then do one of the following:
- Use the Apple Pay token to generate a Checkout.com card token.
- Decrypt the token in your back end.
To generate a Checkout.com card token, call the Request a token endpoint:
post
https://api.checkout.com/tokens
1{2"type": "applepay",3"token_data": {4"version": "EC_v1",5"data": "t7GeajLB9skXB6QSWfEpPA4WPhDqB7ekdd+F7588arLzvebKp3P0TekUslSQ8nkuacUgLdks2IKyCm7U3OL/PEYLXE7w60VkQ8WE6FXs/cqHkwtSW9vkzZNDxSLDg9slgLYxAH2/iztdipPpyIYKl0Kb6Rn9rboF+lwgRxM1B3n84miApwF5Pxl8ZOOXGY6F+3DsDo7sMCUTaJK74DUJJcjIXrigtINWKW6RFa/4qmPEC/Y+syg04x7B99mbLQQzWFm7z6HfRmynPM9/GA0kbsqd/Kn5Mkqssfhn/m6LuNKsqEmbKi85FF6kip+F17LRawG48bF/lT8wj/QEuDY0G7t/ryOnGLtKteXmAf0oJnwkelIyfyj2KI8GChBuTJonGlXKr5klPE89/ycmkgDl+T6Ms7PhiNZpuGEE2QE=",6"signature": "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",7"header": {8"ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX1ievoT8DRB8T5zGkhHZHeDr0oBmYEgsDSxyT0MD0IZ2Mpfjz2LdWq6LUwSH9EmxdPEzMunsZKWMyOr3K/zlsw==",9"publicKeyHash": "tqYV+tmG9aMh+l/K6cicUnPqkb1gUiLjSTM9gEz6Nl0=",10"transactionId": "3cee89679130a4b2617c76118a1c62fd400cd45b49dc0916d5b951b560cd17b4"11}12}13}
1{2"type": "applepay",3"token": "tok_ymu4qlccztkedmd6b7c3hcf6ae",4"expires_on": "2024-10-21T10:48:35Z",5"expiry_month": 1,6"expiry_year": 2025,7"scheme": "VISA",8"last4": "6222",9"bin": "481891",10"card_type": "DEBIT",11"card_category": "CONSUMER",12"issuer": "Test Bank",13"issuer_country": "GB",14"product_id": "F",15"product_type": "CLASSIC"16}
To be eligible to receive a payout, the issuer must have enabled Visa Direct or Mastercard Moneysend for the recipient card.
Information
You can use the supportsDisbursements()
method exposed by Apple's PassKit API to verify if the user's device supports disbursement requests. This ensures that only relevant cards are displayed on the payment sheet.
You can check whether a card is eligible for Visa Direct or Mastercard Moneysend by retrieving the card's metadata.
Call the Get card metadata endpoint.
post
https://api.checkout.com/metadata/card
1{2"source": {3"type": "card",4"number": "4921817844445119"5},6"format": "card_payouts"7}
1{2"bin": "481891",3"scheme": "visa",4"card_type": "DEBIT",5"card_category": "CONSUMER",6"currency": "GBP",7"issuer": "Test Bank",8"issuer_country": "GB",9"issuer_country_name": "United Kingdom",10"product_id": "F",11"product_type": "Visa Classic",12"card_payouts": {13"domestic_non_money_transfer": "standard",14"cross_border_non_money_transfer": "standard",15"domestic_money_transfer": "fast_funds",16"cross_border_money_transfer": "standard"17}18}
The response returns the card's eligibility for the various card payout types in the card_payouts
object. For each card payout type, the value is one of the following:
fast_funds
– The card is eligible and has Fast Funds enabled for this card payout type.standard
– The card is eligible for this card payout type, but does not have Fast Funds enabled.not_supported
– The card does not support this card payout type.unknown
– The card account or issuer details could not be found, or the card scheme could not determine if the card is eligible for this card payout type or for payouts in the specified region.
With Fast Funds, funds from payouts are made available to the recipient card within 30 minutes. If Fast Funds is not enabled, funds may take up to 48 hours to become available.
Note
There can be a delay in performing Fast Funds payouts if the issuer or Checkout.com has to conduct additional sanction and anti-money laundering checks.
Before you perform a card payout, confirm that you have sufficient funds in your sub-account balance for the payout.
Call the Get entity balances endpoint and provide your entity ID, prefixed with ent_
, as the {id}
path parameter.
get
https://balances.checkout.com/balances/{id}?withCurrencyAccountId=true
1{2"data": [3{4"currency_account_id": "ca_ux6najg5mnqexjs2jezz6gwseu",5"descriptor": "Test account",6"holding_currency": "GBP",7"balances": {8"pending": 1000,9"available": 50000,10"payable": 0,11"collateral": 012}13}14]15}
If you have insufficient funds in your sub-account's Available or Pending balances to fund the transaction, you can add funds to your account balance.
A direct funds disbursement is a type of payout in which a merchant transfers money to either an individual or corporate cardholder.
Information
For more information on the PKDisbursementRequest
object from the PassKit API, see Apple Developer PKDisbursementRequest.
To perform a direct funds disbursement, call the Request a payment or payout endpoint.
In the request body, you must provide:
source
objectamount
field – The amount to pay out, with the value formatted according to thecurrency
you specify in the requestdestination.type
field – Set to one of the following:id
– The payment instrument IDnetwork_token
– The decrypted Apple Pay tokentoken
– The Checkout.com card token from the Generate a card token step
post
https://api.checkout.com/payments
1{2"source": {3"type": "currency_account",4"id": "ca_ux6najg5mnqexjs2jezz6gwseu"5},6"destination": {7"type": "id",8"id": "src_nwd3m4in3hkuddfpjsaevunhdy",9"account_holder": {10"type": "individual",11"first_name": "Hannah",12"last_name": "Bret"13}14},15"amount": 5000,16"currency": "GBP",17"sender": {18"type": "individual",19"first_name": "Ali",20"last_name": "Farid",21"address": {22"address_line1": "123 High St.",23"city": "London",24"country": "GB"25},26"reference": "012345",27"reference_type": "other",28"source_of_funds": "debit"29},30"reference": "012345678901",31"instruction": {32"funds_transfer_type": "PP"33},34"processing_channel_id": "pc_vxt6yftthv4e5flqak6w2i7rim"35}
1{2"id": "pay_g7rpbnxfqyreraewiqvltp33ha",3"status": "Accepted",4"reference": "Direct funds disbursement",5"destination": {6"account_holder": {7"id": "src_nwd3m4in3hkuddfpjsaevunhdy"8}9},10"_links": {11"self": {12"href": "https://api.sandbox.checkout.com/payments/pay_pay_g7rpbnxfqyreraewiqvltp33ha"13}14}15}
Note
If you attempt a payout to an ineligible card, you receive a 422 Invalid data sent
error.
If you have insufficient funds in your sub-account's Available or Pending balances to fund the transaction, you receive a Payment declined and a 50003
response code.
You can add funds to your account balance and attempt the payout again.
A money transfer is a type of payout in which an individual consumer sends funds to another consumer, or to another of their own accounts.
To perform a money transfer, call the Request a payment or payout endpoint.
In the request body, you must provide:
source
objectsender
object – The entity's detailsamount
field – The amount to pay out, with the value formatted according to thecurrency
you specify in the requestdestination.type
field – Set to one of the following:id
– The payment instrument IDnetwork_token
– The decrypted Apple Pay tokentoken
– The Checkout.com card token from the Generate a card token step
post
https://api.checkout.com/payments
1{2"source": {3"type": "currency_account",4"id": "ca_ux6najg5mnqexjs2jezz6gwseu"5},6"destination": {7"type": "id",8"id": "src_nwd3m4in3hkuddfpjsaevunhdy",9"account_holder": {10"type": "individual",11"first_name": "Hannah",12"last_name": "Bret"13}14},15"amount": 5000,16"currency": "GBP",17"sender": {18"type": "individual",19"first_name": "Ali",20"last_name": "Farid",21"address": {22"address_line1": "123 High St.",23"city": "London",24"country": "GB"25},26"reference": "012345",27"reference_type": "other",28"source_of_funds": "debit"29},30"reference": "012345678901",31"instruction": {32"funds_transfer_type": "PP"33},34"processing_channel_id": "pc_vxt6yftthv4e5flqak6w2i7rim"35}
1{2"id": "pay_g7rpbnxfqyreraewiqvltp33ha",3"status": "Accepted",4"reference": "Money transfer",5"destination": {6"account_holder": {7"id": "src_nwd3m4in3hkuddfpjsaevunhdy"8}9},10"_links": {11"self": {12"href": "https://api.sandbox.checkout.com/payments/pay_g7rpbnxfqyreraewiqvltp33ha"13}14}15}
If you attempt a payout to an ineligible card, you receive a 422 Unprocessable Content
error.
If you have insufficient funds in your sub-account's Available or Pending balances to fund the transaction, you receive a Payment declined and a 50003
response code webhook.
You can add funds to your account balance and attempt the payout again.
If you set up your webhook receiver, you are notified of the outcome of the card payout request through a webhook containing a response code.
If the payout was successful, you receive a Payment approved webhook with the following fields in the body:
"response_code": "10000"
"response_summary": "Approved"
If the payout was declined, you receive a Payment declined webhook with the following fields in the body:
response_code
– A five-digit code between50000 - 50399
response_summary
– A description of the decline reason
If the payout was returned, you receive a Payment returned webhook with the following fields in the body:
response_code
– A five-digit code between50401 - 50599
response_summary
– A description of the return reason