Account Funding Transactions
A funding transaction is for funds transfer from an eligible account by an acquirer on behalf of the customer (referred to in this Guide as the ‘sender’), for the purpose of either: (a) funding a subsequent and linked funds transfer from the sender to another person or entity (referred to in this Guide as the ‘recipient’; or (b) transferring funds into another eligible financial account held by that sender. If your payment service provider has enabled Account Funding Transactions (AFT) functionality for you, you can facilitate the following Account Funding Transaction types for your senders:
- Person-to-Person funds transfers
- Intra-organizational funds transfers
- Inter-organizational funds transfers
Supported methods and operations
Integration methods | Payment methods | Transactions |
---|---|---|
All | Credit and debit cards (Mastercard) |
|
All | Credit and debit cards (Visa) |
|
To view an example of an API request with AFT data, download the Postman collection.
The Mastercard AFT support is available from API version 65 onwards.
The Visa AFT support is available from API version 80 onwards.
The following API operations support AFT transactions from API version 80 onwards:
- Authenticate Payer
- Update Session
- Initiate Checkout
Refund is not supported for Visa AFT. Use Void instead of Refund.
- 4829 (Money transfer)
- 6540 (Funding transactions)
- 6538 (Funding transactions for MoneySend)
- 4829 (Money transfer)
- 6540 or 6051 (Funding transactions)
- 6012 (Financial institutions)
AFT data includes information about:
- Sender type
- Sender name & address details
- Funding purpose
- Recipient name & address details
- Recipient type
- Recipient account identification type
- Account funding method
When you are required to submit AFT data, depending on the type of transaction you are submitting, you must provide some or all of the following transaction data in the request.
Account Funding Transaction request fields
Field name | Description | Valid values |
---|---|---|
accountFunding.purpose |
Purpose of account funding payment |
|
accountFunding.senderIsRecipient |
Sender is recipient flag. | - |
accountFunding.senderType |
Sender type |
|
accountFunding.recipient.account.fundingMethod |
Recipient’s account type |
|
accountFunding.recipient.account.identifier |
Recipient’s Payment account identifier | - |
accountFunding.recipient.account.identifierType |
Recipient’s account type Identifier |
|
accountFunding.recipient.address.city |
Recipient’s city | - |
accountFunding.recipient.address.country |
Recipient’s country | - |
accountFunding.recipient.address.postCodeZip |
Recipient’s address zip code | - |
accountFunding.recipient.address.stateProvinceCode |
Recipient’s state province code | - |
accountFunding.recipient.address.street |
Recipient’s first line of address | - |
accountFunding.recipient.address.street2 |
Recipient’s second line of address | - |
accountFunding.recipient.firstName |
Recipient’s first name | - |
accountFunding.recipient.middleName |
Recipient’s middle name | - |
accountFunding.recipient.lastName |
Recipient’s last name | - |
accountFunding.recipient.identification.country |
Recipient’s Identification Issuing country | - |
accountFunding.recipient.identification.type |
Recipient’s Identification Type |
|
accountFunding.recipient.identification.value |
Recipient’s Identification Number | - |
customer.firstName |
Senders’ First Name | - |
customer.middleName |
Senders’ Middle name | - |
customer.lastName |
Senders’ Last Name | - |
customer.identification.country |
Senders’ Identification country | - |
customer.identification.type |
Sender’s Identification type |
|
customer.identification.type |
Sender’s Identification type |
|
customer.identification.value |
Sender’s Identification value | - |
billing.address.street |
Sender’s address | - |
billing.address.city |
Sender’s city | - |
billing.address.country |
Sender’s country | - |
billing.stateProvinceCode |
Sender’s state province code | - |
For API version 79 and earlier, use the Authorize Request for Account Funding API version 79 request instead of Authorize Request for Account Funding API version 80.
Provide the sender’s details for all Visa AFT transaction requests.
Provide both the sender’s and recipient’s details for cross-border Visa AFT transaction requests.
Visa AFT transactions
- Following are the supported MCCs for the Business Application Identifier (BAI) mapping.
MCC Description FT Funds Transfer PP Person-to-Person WT Wallet Transfer TU Top-Up AA Account-to-Account Following are the scenarios for BAI mapping for supported MCCs.
BAI MCC 4829 MCC 6051 MCC 6540 MCC 6012 WS-API request with fields in Auth/Pay operations Transfers Initiated by Consumers to others General person to person – Other than CARD FT N/A FT FT accountFunding.senderType = PERSON
accountFunding.recipient.account.identifierType= OTHER or STORED_VALUE_WALLET_USER_ID
accountFunding.senderIsRecipient = FALSE
General person to person - CARD PP N/A - PP accountFunding.senderType = PERSON
accountFunding.recipient.account.identifierType= CARD_NUMBER
accountFunding.senderIsRecipient = FALSE
General person to person – Staged wallet - WT - - accountFunding.senderType = PERSON
accountFunding.recipient.account.identifierType= STAGED_WALLET_USER_ID
accountFunding.senderIsRecipient = FALSE
General person to person – Prepaid card - TU TU TU -
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType= CARD_NUMBER
-
accountFunding.recipient.account.fundingMethod= UNKNOWN
-
accountFunding.senderIsRecipient = FALSE (If account identifier card is prepaid card, then TU will be populated in BAI)
Transfers Initiated by Consumer to self Transfer to Own card – Debit, Credit or charge AA - - AA -
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType= CARD_NUMBER
-
accountFunding.recipient.account.fundingMethod= DEBIT or CREDIT or CHARGE
-
accountFunding.senderIsRecipient = TRUE
Transfer to Own card – Prepaid - TU TU TU -
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType= CARD_NUMBER
-
accountFunding.recipient.account.fundingMethod= UNKNOWN
-
accountFunding.senderIsRecipient = TRUE (If account identifier card is prepaid card, then TU will be populated in BAI)
Transfer to Own Staged Digital Wallet Account - WT - - -
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType= STAGED_WALLET_USER_ID
-
accountFunding.senderIsRecipient = TRUE
Transfer to Own Stored value wallet account FT - FT FT -
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType= STORED_VALUE_WALLET_USER_ID
-
accountFunding.senderIsRecipient = TRUE
General Transfer to Own Account AA - AA AA -
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType= OTHER or BANK_ACCOUNT_BIC, BANK_ACCOUNT_IBAN, EMAIL_ADDRESS, PHONE_NUMBER, SOCIAL_NETWORK_PROFILE_ID
-
accountFunding.senderIsRecipient = TRUE
OR
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType= CARD_NUMBER
-
accountFunding.senderIsRecipient = TRUE
-
accountFunding.recipient.account.fundingMethod not (CREDIT or CHARGE or DEBIT) (That is, Account Funding Method is not equal to Credit or Charge or Debit)
Transfers Initiated by Organizations to others Business Disbursement- OTHER than CARD FT - FT FT -
accountFunding.senderType = COMMERCIAL_ORGANIZATION or NON_PROFIT_ORGANIZATION
-
accountFunding.recipient.account.identifierType= CARD_NUMBER or OTHER or STORED_VALUE_WALLET_USER_ID
-
accountFunding.senderIsRecipient = FALSE
Business Disbursement – Staged wallet - WT - - -
accountFunding.senderType = COMMERCIAL_ORGANIZATION or NON_PROFIT_ORGANIZATION
-
accountFunding.recipient.account.identifierType= STAGED_WALLET_USER_ID
-
accountFunding.senderIsRecipient = FALSE
Mastercard AFT transaction
- Following are the supported MCCs for the Transaction Type Identifier mapping.
MCC Description F07, F08, F64, F54, F61, F52, F55, F65 Funding Transactions C07, C54, C52, C55, C56, C57, C65 Payment Transactions and Funding Transactions Following are the scenarios for Transaction Type Identifier mapping for supported MCCs.
Transaction Type Identifier MCC 4829 MCC 6538 MCC 6540 API request with fields in Auth/Pay operations Transfers Initiated by Consumers General person to person Transfer Valid for F07 Valid for C07 Valid for F07 F07:
-
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType = OTHER or STORED_VALUE_WALLET_USER_ID [Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER]
-
AccountFunding.senderIsRecipient =false
C07:
-
MCC code (order.merchantCategoryCode): 6538
-
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType = OTHER or STORED_VALUE_WALLET_USER_ID [Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER]
-
accountFunding.senderIsRecipient =false
Person to person – Transfer to Card Account Valid for F08 - - -
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType = CARD_NUMBER
-
accountFunding.purpose = CRYPTOCURRENCY_PURCHASE or OTHER [ for other values will get error due to existing validations]
-
accountFunding.senderIsRecipient= false
Transfers Initiated by Consumers or Organizations Transfer to Own Debit or prepaid account Valid for F64 - - -
accountFunding.senderIsRecipient= true
-
accountFunding.senderType = COMMERCIAL_ORGANIZATION or PERSON
-
accountFunding.recipient.account.identifierType = CARD_NUMBER
-
accountFunding. recipient.account.fundingMethod = DEBIT
Payment of Own Credit Card Bill Valid for F54 Valid for C54 - C54:
-
MCC code (order.merchantCategoryCode): 6538
-
accountFunding.senderIsRecipient= true
-
accountFunding.senderType = PERSON
-
accountFunding.recipient.account.identifierType = CARD_NUMBER
-
accountFunding. recipient.account.fundingMethod = CHARGE or CREDIT
F54:
-
accountFunding.senderIsRecipient= true
-
accountFunding.senderType = PERSON or COMMERCIAL_ORGANIZATION
-
accountFunding.recipient.account.identifierType = CARD_NUMBER
-
accountFunding. recipient.account.fundingMethod = CHARGE or CREDIT
Transfer to Own Staged Digital Wallet Account Valid for F61 - Valid for F61 -
accountFunding.senderIsRecipient= true
-
accountFunding.senderType = PERSON or COMMERCIAL_ORGANIZATION
-
accountFunding.recipient.account.identifierType = STAGED_WALLET_USER_ID
General Transfer to Own Account Valid for F52 Valid for C52 - F52:
-
accountFunding.senderIsRecipient= true
-
accountFunding.senderType = PERSON or COMMERCIAL_ORGANIZATION
-
accountFunding.recipient.account.identifierType = OTHER or CARD_NUMBER
-
[Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER]
-
IF identifier type is CARD_NUMBER then accountFunding. recipient.account.fundingMethod != CHARGE or CREDIT or DEBIT
C52:
-
MCC code (order.merchantCategoryCode): 6538
-
accountFunding.senderIsRecipient= true
-
accountFunding.senderType = PERSON or COMMERCIAL_ORGANIZATION
-
accountFunding.recipient.account.identifierType = OTHER or CARD_NUMBER
-
[Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER]
-
IF identifier type is CARD_NUMBER then accountFunding. recipient.account.fundingMethod != CHARGE or CREDIT or DEBIT
Transfers Initiated by Organizations Business Disbursement Valid for F55 Valid for C55 - F55:
-
accountFunding.senderIsRecipient= false
-
accountFunding.senderType = COMMERCIAL_ORGANIZATION
-
accountFunding.recipient.account.identifierType = OTHER or CARD_NUMBER or STAGED_WALLET_USER_ID [Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER]
C55:
-
MCC code (order.merchantCategoryCode): 6538
-
accountFunding.senderIsRecipient= false
-
accountFunding.senderType = COMMERCIAL_ORGANIZATION
-
accountFunding.recipient.account.identifierType = OTHER or CARD_NUMBER or STAGED_WALLET_USER_ID [Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER]
-
accountFunding.purpose != MERCHANT_SETTLEMENT
Government/Non- Profit Disbursement - Valid for C56 - -
accountFunding.senderIsRecipient= false
-
accountFunding.senderType = NON_PROFIT_ORGANIZATION or GOVERNMENT
-
accountFunding.recipient.account.identifierType = OTHER or CARD_NUMBER or STAGED_WALLET_USER_ID
-
[Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER]
Rapid Merchant Settlement - Valid for C57 - -
accountFunding.senderIsRecipient= false
-
accountFunding.senderType = COMMERCIAL_ORGANIZATION
-
accountFunding.recipient.account.identifierType = OTHER or CARD_NUMBER or STAGED_WALLET_USER_ID [Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER]
-
accountFunding.purpose = MERCHANT_SETTLEMENT
General Business to Business Transfer Valid for F65 Valid for C65 - F65:
-
accountFunding.senderIsRecipient= false
-
accountFunding.purpose = OTHER
-
accountFunding.senderType = COMMERCIAL_ORGANIZATION
-
accountFunding.recipient.account.identifierType = OTHER or CARD_NUMBER or STAGED_WALLET_USER_ID [Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER]
C65:
-
MCC code (order.merchantCategoryCode): 6538
-
accountFunding.senderIsRecipient= false
-
accountFunding.purpose = OTHER
-
accountFunding.senderType = COMMERCIAL_ORGANIZATION
-
accountFunding.recipient.account.identifierType = OTHER or CARD_NUMBER or STAGED_WALLET_USER_ID [Any value other than CARD_NUMBER and STAGED_WALLET_USER_ID maps to OTHER
-
To process the AFT transaction through the gateway, you must submit the transaction with order.purchaseType = ACCOUNT_FUNDING
. In addition, your request must include the MCC you are using for the transaction (order.merchantCategoryCode
), else the default MCC configured on your merchant profile will apply. The submitted data is returned in the transaction response.
Example of AFT fields
{ "order": { "purchaseType": "ACCOUNT_FUNDING", "merchantCategoryCode": "4829" }, "accountFunding": { "recipient": { "account": { "identifier": "4797352254321089", "identifierType": "CARD_NUMBER", "fundingMethod": "UNKNOWN" }, "firstName": "User", "middleName": "John", "lastName": "Duo", "address": { "street": "Street NJ", "street2": "Times Square", "city": "London", "postCodeZip": "00312", "stateProvinceCode": "LON", "country": "GBR" }, "identification": { "type": "EMAIL", "value": "abc12345@email.com", "country": "AUS" } }, "senderIsRecipient": true, "senderType": "PERSON", "purpose": "OTHER" }, "customer": { "firstName": "Steven", "middleName": "M", "lastName": "Smith", "identification": { "type": "INDIVIDUAL_TAX_ID", "value": "12345abcdef6789", "country": "AUS" } } }