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.