Send funds via Visa AFTs
Use Visa Automated Funding Transactions (AFTs) to send funds to cards, bank accounts, and digital wallets worldwide.
Visa AFTs (Automated Funding Transactions) allow you to initiate push-to-card and account credit transactions through the Genesis gateway. This functionality is ideal for:
- Customer payouts
- Peer-to-peer transfers
- Payroll disbursements
- Refunds and returns
- Merchant settlements
- Digital wallet top-ups
Each AFT must include the receiver’s account details and a valid identifier type that classifies the purpose of the funding. Visa AFTs are push-only transactions. You cannot use them to charge a customer’s card.
How Visa AFTs work
When you initiate an AFT, Visa requires extra data to validate the destination and purpose of the funds. The key fields include:
identifier_type– describes the nature of the transaction (e.g. peer-to-peer, merchant settlement).-
business_application_id– further classifies the funding purpose (e.g. pension disbursement, wallet transfer). receiver_info– contains the receiver’s account number, country, account type, and optionally name, email, or phone.
Depending on the identifier and receiver type, specific MCCs (Merchant Category Codes) may apply.
Supported identifier types
Use the appropriate identifier based on the transaction scenario and MCC:
| Value | Required MCCs |
|---|---|
| general_person_to_person | 4829, 6538, 6540 |
| person_to_person_card_account | 4829 |
| own_account | 4829, 6051, 6211, 6538, 6540, 7800, 7801, 7802, 7994, 7995, 9406 |
| own_credit_card_bill | 4829, 6538 |
| business_disbursement | any |
| government_or_non_profit_disbursement | any |
| rapid_merchant_settlement | any |
| general_business_to_business | any |
| own_staged_digital_wallet_account | any |
| own_debit_or_prepaid_card_account | any |
Business Application Identifier types
Set the appropriate business_application_id value to define the funding use case:
| Value | Description |
|---|---|
funds_disbursement |
General disbursement of funds to a recipient |
pension_disbursement |
Payment of retirement or pension-related funds |
account_to_account |
Transfer between accounts held by the same or different person |
bank_initiated |
Transaction initiated by a bank for its customer |
fund_transfer |
Generic transfer of funds |
person_to_person |
Peer-to-peer payment from one individual to another |
prepaid_card_load |
Funding a prepaid card |
wallet_transfer |
Transfer to or from a digital wallet |
liquid_assets |
Movement of liquid assets for liquidity management |
Receiver account types
Your request must specify the type of account the funds are sent to:
| Value | Description |
|---|---|
rtn_and_bank_account_number |
Routing Transit Number and Bank Account Number |
| iban | International Bank Account Number |
card_account |
Card Account |
email |
Electronic Mail |
phone_number |
Phone Number |
bank_account_number_and_bic |
Bank Account Number and Business Identifier Code |
wallet_id |
Wallet ID |
social_network_id |
Unique Identifier for Social Network Application |
other |
Any other type |
Example request
Here’s a simplified JSON example for an AFT to a card:
{
“transaction_type”: “funding”,
“identifier_type”: “general_person_to_person”,
“business_application_id”: “funds_disbursement”,
“receiver_info”: {
“account_type”: “card_account”,
“account_number”: “4200000000000000”,
“country”: “US”,
“name”: “Jane Doe”
},
“amount”: 5000,
“currency”: “USD”
}
In practice, include authentication, headers, and other standard fields required by the Genesis REST API.
Example response
<funding_transaction_response>
<status>approved</status>
<transaction_id>123456789</transaction_id>
<unique_id>8a8294498b3e6876018b48eaf41d1ca3</unique_id>
<amount>15000</amount>
<currency>USD</currency>
<receiver_info>
<receiver_name>Jane Smith</receiver_name>
<receiver_account_type>iban</receiver_account_type>
<receiver_account_number>DE89370400440532013000</receiver_account_number>
<receiver_country>DE</receiver_country>
</receiver_info>
</funding_transaction_response>
Error handling
If Visa rejects the transaction, the API will return an error message and code. Common causes include:
- Invalid MCC for selected identifier type
- Unsupported account type for receiver
- Incomplete or malformed receiver details
- You can use standard Genesis error structures (code, message, technical_message) to debug.
For full request and response schemas, authentication instructions, and error codes, refer to the Visa AFT API documentation.