Skip to main content

Funds transfer

An Account Funding Transaction (AFT) is a type of card transaction used to transfer funds from a cardholder's payment card (like a Mastercard debit or credit card) to another account, such as a bank account, digital wallet, or another card, rather than to pay for goods or services.

Typical AFT Scenarios

  • Transfer between the same user’s own accounts (“me-to-me”).
  • Loading funds into digital or stored value wallets.
  • Adding funds to prepaid cards for personal or third-party use.

Implementation Considerations

The API allows passing funds transfer data through the fundsTransfer object of the Mastercard and Maestro payment methods. The transaction is flagged as a funds transfer only when this object is present.

The supported funds transfer types include:

Funds transfer typeDescription
purchase_cryptoPurchase of cryptocurrencies using card funds.
purchase_high_risk_securitiesPurchase of high-risk securities such as certain stocks or derivatives.
purchase_liquid_assetsPurchase of liquid financial assets like bonds or mutual funds.
wallet_cryptoLoading funds into a cryptocurrency wallet.
wallet_high_risk_securitiesLoading funds into a wallet for high-risk securities.
wallet_liquid_assetsLoading funds into a wallet for liquid assets.
wallet_stored_valueLoading funds into a stored value wallet (e.g., gift cards).
wallet_stagedLoading funds into a staged wallet for later use.
own_accountTransfer between the user's own accounts (“me-to-me”).

In the supported use cases the sender and the recipient are the same person (for example, a customer loading their own crypto or investment wallet).

Funds transfer type and MCC

Card schemes only allow a given funds transfer type for a specific set of Merchant Category Codes (MCC). If the merchant MCC is not compatible with the requested type, the transaction is rejected.

Allowed MCCs per type:

Funds transfer typeMastercard / Maestro MCCs
purchase_crypto6051
purchase_high_risk_securities6211
purchase_liquid_assets6211, 4829
wallet_crypto6051
wallet_high_risk_securities6211
wallet_liquid_assets6211, 4829
wallet_stored_value4829
wallet_staged6540
own_account4829

For Mastercard and Maestro, the MCCs 4829, 6538 and 6540 require a funds transfer: a payment with one of these MCCs and no fundsTransfer object is rejected.

Field requirements

Sender and recipient information is mandatory. The following constraints apply:

FieldRequiredConstraints
fundsTransfer.typeYesOne of the supported types above.
sender.nameYesMax length 35.
sender.surnameYesMax length 35.
sender.addressYes
sender.address.countryYesValid ISO 3166-1 alpha-2 code.
sender.address.stateYes for us and ca; must be omitted for countries without statesMust be a valid subdivision of country.
sender.address.cityNoMax length 255.
sender.address.streetNoMax length 255.
sender.address.houseNumberNoMax length 10.
sender.address.postalCodeNoMax length 10.
recipient.account.typeYesOnly wallet is supported.
recipient.account.wallet.referenceYesMax length 50.

The amount.value must be greater than 0 for a funds transfer.

Domestic vs cross-border

A funds transfer is domestic when the card issuer country is the same as the merchant country, and cross-border when they differ. The issuer country is taken from the card BIN details and, when not available, falls back to sender.address.country.

Cross-border funds transfers are supported.

Sample request

{
"processingAccountId": "ProcessingAccountId",
"merchantReference": "merchantReference",
"amount": {
"value": 10,
"currency": "eur"
},
"paymentMethod": {
"type": "mastercard",
"mastercard": {
"account": {
"number": "card_number",
"expiryMonth": 1,
"expiryYear": 2030,
"cvv": "card_cvv"
},
"fundsTransfer":{
"type": "purchase_crypto",
"sender":{
"name": "john",
"surname": "doe",
"address":{
"country": "de"
}
},
"recipient":{
"account":{
"type": "wallet",
"wallet":{
"reference": "12323434sdsds"
}
}
}
}
}
}
}