Request a card payout
Last updated: October 17, 2024
You can perform card payouts for the following Funds Transfer Type categories:
- money transfers
- non-money transfers
- online gambling
You can perform a payout using:
- the full card details, if your level of PCI compliance is SAQ D
- a payment instrument
- a card token
- a network token
Generally, to perform a card payout, you should:
- Verify that the recipient card is eligible to receive a card payout.
- Check the indicative FX rate, if your Checkout.com account currency and the recipient's currency are different.
- Verify that you have sufficient funds in your sub-account to fund the transfer.
- Perform the payout.
- Check the outcome of the card payout.
To be eligible to receive a payout, the issuing bank must have enabled Visa Direct or Mastercard Moneysend for the recipient card.
You can check whether a card is eligible for Visa Direct or Mastercard Moneysend by retrieving the card's metadata.
The API response also informs you whether the issuing bank has enabled Fast Funds for the card. 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
Funds for Fast Funds-enabled cards may take longer than 30 minutes to become available if the issuing bank or Checkout.com have to perform additional checks for sanctions screening and anti-money laundering purposes.
To retrieve the card's metadata, use the following endpoint and specify "format": "card_payouts"
in your request.
post
https://api.checkout.com/metadata/card
1{2"source": {3"type": "card",4"number": "4921817844445119"5},6"format": "card_payouts"7}
The response will return the card's level of eligibility for the various card payout types in the card_payouts
object. For each card payout type, the value will be one of the following:
fast_funds
: the card has Fast Funds enabled for this card payout typestandard
: the card is eligible for this card payout type, but does not have Fast Funds enablednot_supported
: the card does not support this card payout typeunknown
: the card account or issuing bank details could not be found, or the card scheme does not know if the card is eligible for this card payout type or region
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"domestic_gambling": "not_supported",18"cross_border_gambling": "unknown"19}20}
If the holding currency from your sub-account is different to the recipient card's processing currency, you can check the indicative FX rate using the FX rates API.
To see the recipient card's currency, see the response when you checked the card's payout eligibility.
Information
As the rates are indicative, they may not represent the actual rates at the point of transaction conversion.
get
https://api.checkout.com/forex/rates
The query parameters you provide in the URL determine which rates are returned in the response. For example, the following query parameters will return the indicative Visa FX rate for the USD > GBP
currency pair:
1https://api.sandbox.checkout.com/forex/rates?product=card_payouts&source=visa¤cy_pairs=USDGBP&processing_channel_id=pc_vxt6yftthv4e5flqak6w2i7rim
1{2"product": "card_payouts",3"source": "visa",4"rates": [5{6"exchange_rate": 0.83708142,7"currency_pair": "USDGBP"8}9],10"invalid_currency_pairs": ["XXXAAA"]11}
The indicative FX rates for card payouts are sourced directly from Visa and Mastercard.
Visa updates their FX rates every 24 hours at 00:00 UTC, excluding weekends and some public holidays. Mastercard updates their FX rates every 24 hours at 19:00 UTC.
Before you perform a card payout, you should verify that you have sufficient funds in your sub-account to fund the transaction.
To check your sub-account balance, use the following endpoint and replace {id}
with your entity ID. Your entity ID will have the format ent_<UNIQUE_ID>
.
get
https://balances.checkout.com/balances/{id}?withCurrencyAccountId=true
1{2"data": [3{4"currency_account_id": "ca_ux6najg5mnqexjs2jezz6gwseu",5"descriptor": "Revenue Account 2",6"holding_currency": "GBP",7"balances": {8"pending": 23000,9"available": 50000,10"payable": 2700,11"collateral": 6000,12"operational": 700013}14}15]16}
If you have insufficient funds in your sub-account to perform a payout, you can top up your sub-account balance or enable Funds Pooling.
When you perform a card payout, you must include the following in your request:
- your fund transfer type code in the
instruction.funds_transfer_type
field - the
currency_account_id
that you want to use to fund the card payout - the processing
currency
of the payout - the
amount
to be paid out, formatted according to thecurrency
you specify
Information
You may be able to avoid FX conversions from the recipient's issuer bank if the payout's processing currency
matches the card's billing currency. You can check the card's billing currency in the card metadata response.
If the payout is linked to a previous Account Funding Transaction (AFT), you must include the previous_payment_id
field in your request.
If the card receiving the payout was issued in one of the countries listed in the following table, you must adhere to the corresponding field requirements:
Payout destination country | Field requirements |
---|---|
Argentina |
|
Australia |
|
Brazil |
|
Canada |
|
Colombia |
|
Ecuador |
|
Peru |
|
Puerto Rico |
|
United States |
|
1{2"source": {3"type": "currency_account",4"id": "ca_ux6najg5mnqexjs2jezz6gwseu"5},6"destination": {7"type": "card",8"number": "4242424242424242",9"expiry_month": 12,10"expiry_year": 30,11"account_holder": {12"type": "individual",13"first_name": "Hannah",14"last_name": "Bret"15}16},17"amount": 5000,18"currency": "GBP",19"sender": {20"type": "individual",21"first_name": "Ali",22"last_name": "Farid",23"address": {24"address_line1": "123 High St.",25"city": "London",26"country": "GB"27},28"reference": "012345",29"reference_type": "other",30"source_of_funds": "debit"31},32"reference": "012345678901",33"instruction": {34"funds_transfer_type": "PP"35},36"processing_channel_id": "pc_vxt6yftthv4e5flqak6w2i7rim"37}
1{2"source": {3"type": "currency_account",4"id": "ca_ux6najg5mnqexjs2jezz6gwseu"5},6"destination": {7"type": "card",8"number": "4242424242424242",9"expiry_month": 12,10"expiry_year": 30,11"account_holder": {12"type": "individual",13"first_name": "Hannah",14"last_name": "Bret"15}16},17"amount": 5000,18"currency": "GBP",19"reference": "012345678901",20"instruction": {21"funds_transfer_type": "FD"22},23"processing_channel_id": "pc_vxt6yftthv4e5flqak6w2i7rim"24}
1{2"source": {3"type": "currency_account",4"id": "ca_ux6najg5mnqexjs2jezz6gwseu"5},6"destination": {7"type": "card",8"number": "4242424242424242",9"expiry_month": 12,10"expiry_year": 30,11"account_holder": {12"type": "individual",13"first_name": "Hannah",14"last_name": "Bret"15}16},17"amount": 5000,18"currency": "GBP",19"reference": "012345678901",20"instruction": {21"funds_transfer_type": "OG"22},23"processing_channel_id": "pc_vxt6yftthv4e5flqak6w2i7rim"24}
Note
If you attempt a payout to an ineligible card, you'll receive a 422 Invalid data was sent
error.
If you have insufficient funds in your sub-account balance to fund the transaction, you'll receive a payment_declined
webhook and a 50003
response code. You can top up your account balance and attempt the payout again.
1{2"id": "pay_jtgumbqb3w3udfjajcv33vam6q",3"status": "Pending",4"reference": "Sent to Hannah",5"instruction": {6"value_date": "2024-02-01T14:00:17.3747307Z"7},8"_links": {9"self": {10"href": "https://api.sandbox.checkout.com/payments/pay_jtgumbqb3w3udfjajcv33vam6q"11},12"actions": {13"href": "https://api.sandbox.checkout.com/payments/pay_jtgumbqb3w3udfjajcv33vam6q/actions"14}15}16}
To comply with regulatory requirements, Checkout.com performs sanctions screening on all card payouts. During this time, the payout status will be set to Pending
.
If a payment is flagged as requiring further manual review, there may be a short delay in processing the payout. You can subscribe to the payment_compliance_review
webhook to be notified if this happens.
Information
To reduce the likelihood of a payout requiring manual review, provide as much information about the sender and recipient as possible within the sender
and destination.account_holder
fields, respectively.
You'll be informed of the final outcome of the card payout through webhook notifications.
If you've enabled webhook notifications, you'll be notified of the final outcome of the payout request through a webhook containing a response code.
If the card payout was successful, you'll receive a payment_approved
webhook with the following fields in the webhook body:
"response_code": "10000"
"response_summary": "Approved"
If the card payout was declined, you'll receive a payment_declined
webhook with the following fields in the webhook body:
response_code
: a five-digit code between50000 - 50399
response_summary
: a description of the decline reason
If the card payout was returned, you'll receive a payment_returned
webhook with the following fields in the webhook body:
response_code
: a five-digit code between50401 - 50599
response_summary
: a description of the return reason