Perform an Account Funding Transaction
Last updated: October 22, 2025
In an Account Funding Transaction (AFT) funds are pulled from one account to fund a non-merchant account. For example, to load a prepaid card, add funds to a wallet, or fund a person-to-person (P2P) money transfer.
Information
To enable AFTs, contact your account manager or request support.
Card schemes may require different information about the recipient and the sender depending on the following:
- Operating region – Where the transaction is made
- Transaction category – Whether it's a domestic or cross-border transaction
To perform a Visa AFT, call the Request a payment or payout endpoint.
post
https://api.checkout.com/payments
In the request body, provide the following:
| Field name | Description |
|---|---|
boolean | Set to |
string | The purpose of the payment. This field is required if the card's
You must retrieve the card metadata to view the |
Depending on the operating region, you must provide certain required data in the recipient and sender objects.
Checkout.com supports the following regions and transaction categories for Visa:
- Europe – Domestic
- Europe – Cross-border and intra-Europe
- APAC – Domestic
- APAC – Cross-border
- Canada – Domestic
- UAE – Domestic
- UAE – Cross-border
- USA – Domestic
Note
USA cross-border transactions for Visa are not supported.
| Recipient data | Sender data |
|---|---|
The following fields are required:
If you're funding an account, provide the recipient's account number. This can be one of:
If you're funding a card, provide the PAN. | The sender data is optional. |
| Recipient data | Sender data |
|---|---|
The following fields are required:
If you're funding an account, provide the recipient's account number. This can be one of:
If you're funding a card, provide the PAN. If the recipient card was issued in Australia, New Zealand, or the South Pacific, you must provide For recipients in Canada and funding cards issued in Canada, the following
| The following fields are required:
|
The recipient and the sender data is optional.
| Recipient data | Sender data |
|---|---|
The following fields are required:
If you're funding an account, provide the recipient's account number. This can be one of:
If you're funding a card, provide the PAN. If the recipient card was issued in Australia, New Zealand, or the South Pacific, you must provide For recipients in Canada and funding cards issued in Canada, the following
| The following fields are required:
|
Recipient and the sender data is optional.
Recipient and the sender data is optional.
| Recipient data | Sender data |
|---|---|
The following fields are required:
If you're funding an account, provide the recipient's account number. This can be one of:
If you're funding a card, provide the PAN. If the recipient card was issued in Australia, New Zealand, or the South Pacific, you must provide For recipients in Canada and funding cards issued in Canada, the following
| The following fields are required:
|
| Recipient data | Sender data |
|---|---|
The following fields are required:
| The following fields are required:
|
You can use Visa AFTs to perform merchant-initiated transactions (MITs). For example, to enable your customers to add funds to their wallets on a recurring basis, or automatically based on pre-agreed balance thresholds.
You can perform recurring payments as AFTs. For example, to enable customers to add funds to their wallets:
- Perform an initial AFT to store the customer's card details. For requirements, see Store card details during an initial recurring transaction.
Ensure you provide"payment_type": "Recurring". - Process any subsequent payments as AFTs. For requirements, see:
1{2"source": {3"type": "token",4"token": "tok_4gzeau5o2uqubbk6fufs3m7p54"5},6"amount": 6500,7"currency": "GBP",8"payment_type": "Recurring",9"merchant_initiated": false,10"3ds": {11"enabled": true,12"challenge_indicator": "challenge_requested_mandate"13},14"processing": {15"aft": true16},17"recipient": {18"first_name": "Ali",19"last_name": "Farid",20"account_number": "5555554444",21"address": {22"country": "GB"23}24},25"sender": {26"type": "individual",27"first_name": "Jia",28"last_name": "Tsang",29"date_of_birth": "1990-01-01",30"address": {31"address_line1": "123 High St.",32"city": "London",33"country": "GB"34}35}36}
1{2"source": {3"type": "card",4"number": 4242424242424242,5"expiry_month": 10,6"expiry_year": 2026,7"stored": true8},9"amount": 5000,10"currency": "USD",11"payment_type": "Recurring",12"merchant_initiated": true,13"previous_payment_id": "pay_paymentid",14"processing": {15"aft": true16},17"recipient": {18"first_name": "Ali",19"last_name": "Farid",20"account_number": "5555554444",21"address": {22"country": "GB"23}24},25"sender": {26"type": "individual",27"first_name": "Jia",28"last_name": "Tsang",29"date_of_birth": "1990-01-01",30"address": {31"address_line1": "123 High St.",32"city": "London",33"country": "GB"34}35}36}
To perform a Mastercard AFT, call the Request a payment or payout endpoint.
post
https://api.checkout.com/payments
In the request body, set the processing.aft boolean to true.
Depending on the operating region, you must provide certain required data in the recipient and sender objects.
Checkout.com supports the following regions and transaction categories for Mastercard:
- Europe and APAC – Domestic
- Europe and APAC – Cross-border
- Canada – Domestic
- UAE – Domestic
- USA – Domestic
Note
UAE and USA cross-border transactions for Mastercard are not supported.
| Recipient data | Sender data |
|---|---|
The following fields are required:
If you're funding an account, provide the recipient's account number. This can be one of:
If you're funding a card, provide the following:
| The sender data is optional. |
| Recipient data | Sender data |
|---|---|
The following fields are required:
If you're funding an account, provide the recipient's account number. This can be one of:
If you're funding a card, provide the following:
| The sender data is optional. |
| Recipient data | Sender data |
|---|---|
The following fields are required:
If you're funding an account, provide the recipient's account number. This can be one of:
| The sender data is optional. |
| Recipient data | Sender data |
|---|---|
The following fields are required:
If you're funding an account, provide the recipient's account number. This can be one of:
If you're funding a card, provide the following:
| The sender data is optional. |
| Recipient data | Sender data |
|---|---|
The following fields are required:
If you're funding an account, provide the recipient's account number. This can be one of:
If you're funding a card, provide the following:
| The following fields are required:
|
1{2"source": {3"type": "token",4"token": "tok_4gzeau5o2uqubbk6fufs3m7p54"5},6"amount": 6500,7"currency": "GBP",8"processing": {9"aft": true10},11"recipient": {12"first_name": "Ali",13"last_name": "Farid",14"account_number": "5555554444",15"address": {16"country": "GB"17}18},19"sender": {20"type": "individual",21"first_name": "Jia",22"last_name": "Tsang",23"date_of_birth": "1990-01-01",24"address": {25"address_line1": "123 High St.",26"city": "London",27"country": "GB"28}29}30}
1{2"id": "pay_mbabizu24mvu3mela5njyhpit4",3"action_id": "act_mbabizu24mvu3mela5njyhpit4",4"amount": 6500,5"currency": "GBP",6"approved": true,7"status": "Authorized",8"auth_code": "770687",9"eci": "05",10"scheme_id": "638284745624527",11"response_code": "10000",12"response_summary": "Approved",13"risk": {14"flagged": false15},16"source": {17"id": "src_nwd3m4in3hkuddfpjsaevunhdy",18"type": "card",19"expiry_month": 9,20"expiry_year": 2022,21"scheme": "Visa",22"last4": "4242",23"fingerprint": "F31828E2BDABAE63EB694903825CDD36041CC6ED461440B81415895855502832",24"bin": "424242",25"card_type": "CREDIT",26"card_category": "CONSUMER",27"issuer": "Test Bank",28"issuer_country": "GB",29"product_id": "A",30"product_type": "Visa Traditional",31"avs_check": "S",32"cvv_check": ""33},34"customer": {35"id": "cus_udst2tfldj6upmye2reztkmm4i"36},37"processing": {38"acquirer_transaction_id": "708183248720806995996",39"retrieval_reference_number": "471056794828",40"merchant_category_code": "0742",41"scheme_merchant_id": "502177",42"aft": true43},44"processed_on": "2024-01-25T11:03:36Z",45"reference": "ORD-5023-4E89",46"_links": {47"self": {48"href": "https://api.sandbox.checkout.com/payments/pay_mbabizu24mvu3mela5njyhpit4"49},50"actions": {51"href": "https://api.sandbox.checkout.com/payments/pay_mbabizu24mvu3mela5njyhpit4/actions"52},53"capture": {54"href": "https://api.sandbox.checkout.com/payments/pay_mbabizu24mvu3mela5njyhpit4/captures"55},56"void": {57"href": "https://api.sandbox.checkout.com/payments/pay_mbabizu24mvu3mela5njyhpit4/voids"58}59}60}
The approved boolean indicates if authorization was successful. A value of true indicates success.
If authorization failed, it may be because the payment used:
- An invalid card
- An expired card
- A valid card with an insufficient balance
If you receive a 202 response, the payment requires a redirect. For example, to perform 3D Secure (3DS) authentication.
Potentially fraudulent authorization requests return risk.flagged: true to show that the payment has been flagged.
The possible values for the status field include:
AuthorizedCapturedCard VerifiedDeclinedPending– For 3DS payments only
Information
For more information about the response, see:
- CVV codes and descriptions
- AVS codes
- API response codes (if the authorization failed)