Account Funding Transactions
A funding transaction (or Account Funding Transaction - AFT) is a money movement for a reason other than for the purchase of goods or services.
Examples:
- Loading a wallet with funds using a card (including stored value digital wallets and crypto or trading wallets)
- Adding funds to a pre-paid card using a debit card
- Sending money to another person (for example as a gift)
You must be registered with Visa and Mastercard to perform funding transactions.
Parameters
You must include the instruction.fundsTransfer
object to correctly flag a transaction as a funds transfer.
Rules for the payment scenarios that constitute a funding transaction vary between Visa and Mastercard. We allow you to submit the fundsTransfer
object for your particular scenario irrespective of the card scheme. The scenario is usually determined by a combination of fundsTransfer.type
, fundsTransfer.purpose
and fundsTransfer.recipient.account.type
, and we ensure the transaction is routed in accordance with card scheme rules.
Specifies the type of the funds transfer. You may only submit the fundsTransfer.type
values that relate to the use cases that you have been approved for by the schemes.
Enum Value | Description |
---|---|
accountToAccount | Move funds to another financial institution account owned by the same person |
cash | A card is used to fund a transfer where funds are given to the recipient in cash |
disbursement | A card is used as the source of funds for a disbursement |
personToPerson | Move funds to an account owned by another person (eg gifts) |
purchase | For the initial purchase of a reloadable account (such as prepaid or gift card), or direct crypto & liquid asset purchases without an intermediary wallet load |
topUp | Top up a pre-paid or debit card |
walletLoad | Move funds to a digital wallet owned by the same person |
Specifies the purpose of the funds transfer. Required for some regions and use cases (eg crypto).
An object containing details about the recipient of funds, including name and address information, as well as recipient account details. In many use cases, the recipient is the same person as the sender (for example if your customer uses their card to load funds into their own crypto exchange or investment account). Although an optional object in the API schema, recipient
is required for some regions and use cases.
An object containing details about the sender of funds, including name and address information. The sender account is always the card account declared within instruction.paymentInstrument
. Although an optional object in the API schema, sender
is required for some regions and use cases.
International funds transfers
For cross border and inter-regional funds transfers you must submit the following:
Recipient:
recipient.address.address1
recipient.address.city
recipient.address.postalCode
(supply an empty string if postal codes are not widely supported for the suppliedcountryCode
eg for Ireland,IE
)recipient.address.state
(mandatory for US and Canada)recipient.address.countryCode
Sender:
sender.address.address1
sender.address.city
sender.address.postalCode
(supply an empty string if postal codes are not widely supported for the suppliedcountryCode
eg for Ireland,IE
)sender.address.state
(mandatory for US and Canada)sender.address.countryCode
Use cases
Use Case | Description | Required request values |
---|---|---|
Account to Account | Transfer funds from a card account to a financial institution account owned by the cardholder. | "type":"accountToAccount" "purpose" Not "creditCardRepayment" |
Credit card repayment | Use a debit card to pay off a credit card bill. | "type":"accountToAccount" "purpose":creditCardRepayment |
Cash | Use a card to fund a transfer where the funds are given to the recipient in cash. | "type":"cash" |
Disbursement: Business to Business (B2B) | Pull funds from a business card in order to pay an invoice due from another business. | "type":"disbursement" "purpose":"businessToBusiness" |
Disbursement: Payroll | Pull funds from a business card to fund payroll disbursements made by a payroll provider on behalf of a business. | "type":"disbursement" "purpose":"payroll" |
Disbursement: Business to Consumer (B2C) | Pull funds from a business card to fund a business disbursement. | "type":"disbursement" "purpose" Not "businessToBusiness" or "payroll" |
Person to Person | Transfer funds from a card account to an account owned by another person. | "type":"personToPerson" |
Purchase a gift card | Purchase a gift card. Note: sender and recipient values must exactly match if the recipient of the gift card is the same as the person purchasing the gift card. | "type":"purchase" "purpose":"giftCard" |
Purchase a pre-paid card | Purchase a pre-paid card. | "type":"purchase" "purpose":"prePaidCard" |
Purchase cryptocurrency | Purchase crypto directly without an intermediary fiat wallet load. | "type":"purchase" "purpose":"crypto" "recipient.account.type": "wallet" |
Purchase liquid assets | Purchase crypto directly without an intermediary fiat wallet load. Liquid assets include shares, stock and foreign currencies. | "type":"purchase" "purpose":"liquidAssets" "recipient.account.type": "wallet" |
Top up a debit account | Transfer funds from a card to a debit card account owned by the cardholder. | "type":"topUp" "purpose":"debitCard" |
Top up a pre-paid account | Transfer funds from a card to a pre-paid card account. | "type":"topUp" "purpose":"prePaidCard" |
Wallet load: cryptocurrency | Transfer funds from a card to a crypto exchange wallet for the purpose of purchasing cryptocurrency. | "type":"walletLoad" "purpose":"crypto" "recipient.account.type": "storedValueWallet" |
Wallet load: liquid assets | Transfer funds from a card to a trading wallet for the purpose of purchasing stocks, shares, or foreign currency. | "type":"walletLoad" "purpose":"liquidAssets" "recipient.account.type": "storedValueWallet" |
Wallet load: high risk securities | Transfer funds from a card to a trading wallet for the purpose of purchasing high risk securities. | "type":"walletLoad" "purpose":"highRiskSecurities" "recipient.account.type": "storedValueWallet" |
Wallet load: gaming | Transfer funds from a card to a gaming wallet. | "type":"walletLoad" "purpose":"gaming" "recipient.account.type": "storedValueWallet" |
Wallet load: merchant wallet | Transfer funds from a card to a merchant wallet, where funds can be used to purchase items from the merchant exclusively. | "type":"walletLoad" "recipient.account.type": "merchantWallet" |
Request examples
"instruction": {
"fundsTransfer": {
"type": "walletLoad",
"purpose": "crypto",
"recipient": {
"account": {
"type": "storedValueWallet",
"walletReference": "ABCDE12345"
},
"firstName": "John",
"middleName": "Roger",
"lastName": "Smith",
"address": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"postalCode": "NW1 6XE",
"city": "London",
"state": "LDN",
"countryCode": "GB"
},
"dateOfBirth": {
"day": 12,
"month": 4,
"year": 2001
},
"phoneNumber": "+447987 654321"
},
"sender": {
"firstName": "John",
"middleName": "Roger",
"lastName": "Smith",
"address": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"postalCode": "NW1 6XE",
"city": "London",
"state": "LDN",
"countryCode": "GB"
}
}
}
}
Response
The authorization response is the same across both funding transactions and regular card payment authorizations.
Refunds
Refunds for funding transactions must only be used for true refund scenarios (e.g. a funding transaction is used as the source of funds for a subsequent funds transfer which fails; the funding transaction is refunded to return the funds to the sender's card account). A refund must not be used to return funds previously transferred into a wallet or account (unless the funds had been transferred in error in which case the full amount should be refunded).
If funds need to be unloaded from a wallet or account back to the owner's card then you must make a card payout.