Account Funding Transactions (AFT)

Account Funding Transactions (AFTs) are a type of payment transaction where funds are moved from a cardholder account (via a card or payment instrument) into another, non-merchant account — typically to fund digital wallets, investment accounts, prepaid cards, or other non-merchant financial accounts. It’s possible to reverse this flow as well from the perspective of the merchant - from a non-merchant account back to a cardholder or bank account.

Examples: Digital wallets (PayPal, Venmo), Investment accounts (Coinbase or Plus500), Prepaid or stored-value cards (Starbucks card)

Supported Gateways

In order to submit Funding Transactions to Worldpay, several GSF's must be included with a General Credit transaction. A detailed look at which fields must be included is located in our Worldpay gateway guide.

Note: Only General Credit transaction types support AFT's on Worldpay.

To perform an AFT, you send your request with the processing.aft field set to true, along with a recipient and a sender object containing information about the transaction's sender and receiver.

Gateway Specific Field
processingexample: { aft: true }
senderAn object containing the following parameters...

type

first_name

middle_name

last_name

company_name

reference

reference_type

source_of_funds

date_of_birth

country_of_birth

nationality

address

- address1

- address2

- city

- state

- country

- zipidentification

- type

- number

- issuing_country

- date_of_expiry
destinationAn object containing the following parameters...

account_holder

- email

- date_of_birth

- country_of_birth

- phone

- - country_code

- - number

- identification

- - type

- - number

- - issuing_country

- - date_of_expiry
recipientAn object containing the following parameters...

dob

zip

account_number

first_name

last_name

address

- address1

- address2

- city

- state

- zip

- country

A link to Checkout's documentation may be found here.

To perform an AFT, you send your request with the is_aft field set to true along with aft_recipient_first_name and aft_recipient_last_name. This will populate the recipientDetails to Nuvei. Sender details will be populated with firstName, lastName and country found in the payment method. Please reference Nuvei Rest API documentation for additional insight on AFTs.

Performing a Paysafe AFT will first require customers perform registration with the Card schemes in advance. Customers must contact Paysafe Support in order to receive more information and begin the registration process. This is especially important considering that not all acquirers and process support all available Merchant Category Codes (MCCs). The MCC is passed through the funding_transaction field. Passing this field to Paysafe helps them identify the Purchase or Authorization request as funding transaction that might need additional information for the purpose of a transaction. Please reference Paysafe’s API documentation for additional requirements related to this field.

For Visa Direct and Mastercard Moneysend request through GeneralCredit, first and last name are two required fields and they will the populated through the payment method.

To perform an AFT for Adyen transactions on the legacy payment endpoint, you must include the gateway specific fields fund_source and fund_destination in your request. Below is an example of the structure of these two fields:

        "gateway_specific_fields": {
            "adyen": {
                "fund_source": {
                    "first_name": "Payer",
                    "last_name": "Name",
                    "shopper_email": "[email protected]",
                    "additional_data": {
                        "fundingSource": "Debit"
                    },
                    "billing_address": {
                      "address1": "address1",
                      "address2": "address2",
                      "zip": "zip",
                      "city": "city",
                      "state": "state",
                      "country": "country"
                    }
                },
                "fund_destination": {
                    "additional_data": {
                        "walletIdentifier": "12345"
                    } 
                }
            }
        }

Please pay special attention to the camel casing of fundingSource and the walletIdentifier field names.

To perform an AFT for Credorax transactions, you must include the gateway specific fields in your request.

    "gateway_specific_fields": {
      	"credorax": {
        	"aft": "true"
        	"sender_first_name": "firstname",
        	"sender_last_name": "lastname",
        	"sender_ref_number": "12345",
        	"sender_fund_source": "01",
        	"sender_country_code": "USA",
        	"sender_street_address": "123 street address",
        	"sender_city": "new york",
        	"sender_state": "NY",
        	"recipient_first_name": "firstname",
        	"recipient_last_name": "lastname",
        	"recipient_street_address": "321 street address",
        	"recipient_postal_code": "12345",
        	"recipient_city": "boston",
        	"recipient_province_code": "312",
        	"recipient_country_code": "USA"
      	}
    }

To perform an AFT for Stripe Payment Intents transactions, you must include the gateway specific fields in your request. More information can be found on the Stripe Payment Intent guide. We currently do not support the account_number field within the acount_details object. Please note that you'll need to have this enabled on your Stripe account before accessing the AFT documentation and feature functionality.

    "gateway_specific_fields": {
      	"stripe_payment_intents": {
            "recipient_details": {
                "first_name": "Jane",
                "last_name": "Doe",
                "email": "[email protected]",
                "phone": "+44 7123 456789",
                "address": {
                "country": "GB",
                "line1": "123 Street",
                "line2": "",
                "postal_code": "tw11qq",
                "state": "KA",
                "city": "Preston"
                },
                "account_details": {
                    "card": {
                        "first6": "123456",
                        "last4": "1234"
                    },
                    "unique_identifier": {
                        "identifier": "1234567890"
                    }
                }
            },
            "sender_details": {
                "first_name": "Jane",
                "last_name": "Doe",
                "email": "[email protected]",
                "occupation": "swe",
                "nationality": "US",
                "birth_country": "US",
                "address": {
                    "country": "DE",
                    "line1": "321 Street",
                    "line2": "",
                    "postal_code": "30880",
                    "state": "KA",
                    "city": "Laatzen"
                },
                "dob": {
                    "day": "3",
                    "month": "9",
                    "year": "2001"
                }
            }
      	}
    }

Why do AFT's Exist?


Regulatory pressures (Anti-Money Laundering, Know Your Customer laws) require specific transaction designations for funds movement not tied to goods or services.

AML compliance: Card networks and regulators enforce clear tracking and designation of funds flowing between accounts.

Interchange management: Merchants and financial platforms can benefit from different interchange fee structures when correctly classifying transactions.

Network rule compliance/mandate: Visa and Mastercard require specific transaction codes for account funding transfers to prevent misuse and fraud.