Account Funding Transactions (AFT)
Overview
An Account Funding Transaction (AFT) is an operation that allows transferring funds from a card to a bank account or to another person. This type of transaction is available for Visa and Mastercard cards, and its availability depends on the MCC (Merchant Category Code) of the merchant and the card brand.
In Paylands, the logic that determines whether an AFT is applied and its type depends on the presence of the aft
field and the user data provided in extra_data
when generating the payment order, as well as the merchant configuration.
AFT Types
Type | Description | Requires receiver data |
---|---|---|
NONE | Forces AFT not to be used. | No |
ACCOUNT_TO_ACCOUNT | Transfer of funds from a card to the same user's account. | No |
PERSON_TO_PERSON | Transfer of funds to another person (receiver data required). | Yes |
If the aft
field is not provided, Paylands may automatically apply an ACCOUNT_TO_ACCOUNT
AFT, as long as:
- The merchant is configured for it (based on its MCC).
- Sender information is correctly provided in the
profile
andbilling_address
fields.
Structure of extra_data.aft
The aft
field is included inside extra_data
. Its structure depends on the AFT type:
"aft": {
"type": "PERSON_TO_PERSON",
"receiver": {
"first_name": "John",
"last_name": "Doe",
"country": "ESP",
"account_number": "4111111111111111",
"account_type": "CARD_NUMBER"
}
}
Fields of the aft
object
Field | Type | Required | Description |
---|---|---|---|
type | string | Yes | AFT type: NONE , ACCOUNT_TO_ACCOUNT , PERSON_TO_PERSON |
receiver | object | Only if type = PERSON_TO_PERSON | Receiver’s transfer details |
Fields of the receiver
object
Field | Type | Required | Description |
---|---|---|---|
first_name | string | Yes | Receiver’s first name |
last_name | string | Yes | Receiver’s last name |
country | string | Yes | Receiver’s country (ISO 3-letter format, e.g., ESP ) |
account_number | string | Yes | Receiver’s card, account, or phone number |
account_type | string | No | Account type: CARD_NUMBER (default), ACCOUNT_NUMBER , MOBILE_PHONE_NUMBER |
Required sender data
To execute an AFT correctly (explicit or implicit), the following fields must be provided in extra_data
:
profile
Field | Required | Description |
---|---|---|
first_name | Yes | User’s first name |
last_name | Yes | User’s last name |
birthdate | Yes | Date of birth (YYYY-MM-DD) |
email | No | User’s email (recommended) |
billing_address
Field | Required | Description |
---|---|---|
country | Yes | User’s country |
address1 | Yes | Address line |
city | Yes | City |
zip_code | Yes | Postal code |
state_code | Only if country is USA or CAN | State code |
AFT compatibility by brand and MCC
The following tables show which AFT types are supported depending on the card brand and the merchant’s MCC:
Visa
AFT Type | Supported MCCs |
---|---|
ACCOUNT_TO_ACCOUNT | 4829, 6012, 6051, 6211, 6540 |
PERSON_TO_PERSON | 4829 |
Mastercard
AFT Type | Supported MCCs |
---|---|
ACCOUNT_TO_ACCOUNT | 6012, 6051, 6211, 6536, 6537, 6540 |
PERSON_TO_PERSON | 4829, 6536, 6537, 6538, 6540 |
Integration examples
AFT type ACCOUNT_TO_ACCOUNT
(explicit)
"extra_data": {
"profile": {
"first_name": "Joy",
"last_name": "Cardholder",
"email": "joy@carholder.com",
"birthdate": "1996-06-04"
},
"billing_address": {
"country": "ESP",
"address1": "Avda. del Mar",
"city": "Castellon",
"state_code": "CT",
"zip_code": "12006"
},
"aft": {
"type": "ACCOUNT_TO_ACCOUNT"
}
}
AFT type ACCOUNT_TO_ACCOUNT
(implicit)
"extra_data": {
"profile": {
"first_name": "Joy",
"last_name": "Cardholder",
"email": "joy@carholder.com",
"birthdate": "1996-06-04"
},
"billing_address": {
"country": "ESP",
"address1": "Avda. del Mar",
"city": "Castellon",
"state_code": "CT",
"zip_code": "12006"
}
}
AFT type PERSON_TO_PERSON
"extra_data": {
"profile": {
"first_name": "Joy",
"last_name": "Cardholder",
"email": "joy@carholder.com",
"birthdate": "1996-06-04"
},
"billing_address": {
"country": "ESP",
"address1": "Avda. del Mar",
"city": "Castellon",
"state_code": "CT",
"zip_code": "12006"
},
"aft": {
"type": "PERSON_TO_PERSON",
"receiver": {
"first_name": "John",
"last_name": "Doe",
"country": "ESP",
"account_number": "4111111111111111",
"account_type": "CARD_NUMBER"
}
}
}
Force no AFT (NONE
)
"extra_data": {
"aft": {
"type": "NONE"
}
}
AFT supported services
The following services support AFT functionality in Paylands:
- Cecabank
- Paynopain
- Trustpayments
- Nuvei
- Finaro (Credorax)
- Worldpay