Account Funding Transactions (AFT)

AFT stands for “Account Funding Transaction”. It is a transaction used to move funds from a card account to another account for further usage.

In Shift4, AFT is based on the standard purchase setup, with the addition of several parameters required by the schemes. To support AFT, this feature must be enabled on your terminal.

Enabling AFT on Terminals

AFT can be enabled on demand by contacting AltaPay Support. It is typically enabled for terminals configured with the standard AFT Merchant Category Codes (MCC) listed below:

  • 7802 – Government-licensed horse/dog racing
  • 7995 – Betting, including lottery tickets, casino gambling chips, off-track betting, and wagers at race tracks
  • 4829 – Money order / wire transfer
  • 6050 – Quasi cash / customer financial institution
  • 6051 – Non-financial institution such as cryptocurrency, foreign currency, money order (not wire transfers), stored value card/load, and travellers cheque
  • 6540 – Account funding, stored value card purchase, prepaid load (non-financial institution)
  • 7801 – Government-licensed online casinos (online gambling)

The key change for this type of transaction is to provide the Recipient information as part of the request, because as per definition this defines the receiver of the funds on the given account.

Example of request when recipient information is different from customer (sender) information. In this case both parameter sets need to be provided
curl --request POST \
  --url https://<YourShopName>.altapaysecure.com/merchant/API/createPaymentRequest \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --header 'Authorization: Basic auth' \
  --data 'shop_orderid=testOrderId' \
  --data 'type=payment' \
  --data 'currency=DKK' \
  --data 'amount=100.00'\
  --data 'terminal=Test Terminal'\
  --data 'customer_info[billing_city]=Copenhagen' \
  --data 'customer_info[billing_lastname]=Doe'\
  --data 'customer_info[shipping_lastname]=Doe'\
  --data 'customer_info[email]=example@example.com'\
  --data 'customer_info[shipping_postal]=2860'\
  --data 'customer_info[shipping_address]=Gyngemose Parkvej 50' \
  --data 'customer_info[billing_address]=Vesterbrogade 65' \
  --data 'customer_info[shipping_firstname]=John' \
  --data 'customer_info[billing_firstname]=John' \
  --data 'customer_info[customer_phone]=4560020030' \
  --data 'customer_info[billing_postal]=2860' \
  --data 'customer_info[billing_region]=REG' \
  --data 'customer_info[shipping_country]=DK' \
  --data 'customer_info[shipping_city]=Soeborg' \
  --data 'customer_info[billing_country]=DK' \
  --data 'recipient_info[birthdate]=1854-01-06' \
  --data 'recipient_info[billing_lastname]=Holmes' \
  --data 'recipient_info[billing_firstname]=Sherlock' \
  --data 'recipient_info[billing_country]=GB' \
  --data 'recipient_info[customer_phone]=+5555551234' \
  --data 'recipient_info[username]=sholmes' \
  --data 'recipient_info[billing_postal]=NW1' \
  --data 'recipient_info[billing_address]=Baker Street 221B' \
  --data 'recipient_info[billing_region]=LON' \
  --data 'recipient_info[billing_city]=London' \
  --data 'recipient_info[account_identifier]=myAccount' \
  --data 'recipient_info[email]=test-recipient@example.com' \
  ...
  other parameters
                                                        
Example of request when recipient and customer (sender) information are the same. In such scenario there is no need to additionally send customer information.
curl --request POST \
  --url https://<YourShopName>.altapaysecure.com/merchant/API/createPaymentRequest \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --header 'Authorization: Basic auth' \
  --data 'shop_orderid=testOrderId' \
  --data 'type=payment' \
  --data 'currency=DKK' \
  --data 'amount=100.00'\
  --data 'terminal=Test Terminal'\
  --data 'recipient_info[birthdate]=1854-01-06' \
  --data 'recipient_info[billing_lastname]=Holmes' \
  --data 'recipient_info[billing_firstname]=Sherlock' \
  --data 'recipient_info[billing_country]=GB' \
  --data 'recipient_info[customer_phone]=+5555551234' \
  --data 'recipient_info[username]=sholmes' \
  --data 'recipient_info[billing_postal]=NW1' \
  --data 'recipient_info[billing_address]=Baker Street 221B' \
  --data 'recipient_info[billing_region]=LON' \
  --data 'recipient_info[billing_city]=London' \
  --data 'recipient_info[account_identifier]=myAccount' \
  --data 'recipient_info[email]=test-recipient@example.com' \
  ...
  other parameters
                                                        
More detailed explanation about the request parameters are defined in createPaymentRequest for Shift4 (please select Shift4 acquirer in dropdown).