Overview
An Account Funding Transaction (AFT) pulls funds from a card and deposits or transfers those funds into another account. The primary use cases for AFTs are:
- Funding an account owned by the same person; for example, topping up a pre-paid card or adding funds to a digital wallet account.
- Funding an account owned by a different person; for example, P2P payments or pulling funds from a merchant’s card account for disbursing payroll to its employees.
Availability
- Visa Direct; Mastercard Send in the EU; other cards and markets to be supported in a future release.
- AFT-enabled merchants only.
- Domestic transactions and, in selected markets, cross-border transactions.
- Works with Sale and Auth & Settle flows.
Prerequisites
AFTs are relevant only for merchants offering funding transactions. To begin using AFTs, contact Nuvei to configure your merchant account to use this transaction type. After your account is configured, Nuvei converts your standard transactions into AFTs; you do not have to modify your existing integration.
REST API Implementation
This topic describes the steps to integrate AFTs into the standard server-to-server REST API payment flow.
- Perform the Payment step.
There are two possible flows for a /payment
request: 3DS or non-3DS.
In the relevant /payment
request, include the recipientDetails
class and its parameters:
recipientDetails.firstName
– Destination account holder’s first name; must be Latin characters.recipientDetails.lastName
– Destination account holder’s last name; must be Latin characters.recipientDetails.address
– Destination account holder’s address.recipientDetails.addressLine2
– Destination account holder’s address.
For non-domestic AFTs, the merchant should include the following sender data:
Parameter Description | Parameter | Requirements | Format |
---|---|---|---|
Sender first name | firstName under buyerDetails | Required on non-domestic and Europe intra-EEA AFTs | 2-30 characters for both first and last name |
A-Z, a-z, 0-9 | |||
Cannot contain special characters (?, @, #, $, &, *, etc.) and non-English letters. | |||
Sender last name | lastName under buyerDetails | Cannot be all numeric. | |
Sender address | address under buyerdetails.billingAddress | 2-60 characters | |
A-Z, a-z, 0-9 | |||
Cannot contain special characters (?, @, #, $, &, *, etc.) and non-English letters. | |||
Cannot be all numeric. | |||
Sender city | city under buyerdetails.billingAddress | 2-30 characters | |
A-Z, a-z, 0-9 | |||
Cannot contain special characters (?, @, #, $, &, *, etc.) and non-English letters. | |||
Cannot be all numeric. | |||
Sender state | state under buyerdetails.billingAddress | Required on non-domestic AFTs to/from US and Canada. | Country Subdivision Codes |
Sender country | countryCode under buyerdetails.billingAddress | Required on non-domestic AFTs. | 2-letter ISO country code |
Sender date of birth | Required on non-domestic money transfer AFTs. If you are not sure whether an AFT is a money transfer AFT, contact your Nuvei Account Manager. | Format is YYYY-MM-DD. |
Select the relevant flow:
- 3DS REST 2.0 (which contains the “first”
/payment
request) - Non-3DS REST 2.0 (without liability shift)
/payment
request:
Example of a Non-3DS REST 2.0 /payment
Request Showing the recipientDetails
Class
{ "processingEntityId": "entity_123456", "amount": 10.5, "currency": "USD", "transactionType": "Sale", "paymentOption": { "store": "buyerToken", "card": { "cardNumber": "5101081046006034", "cardHolderName": "John Smith", "expirationMonth": "10", "expirationYear": "2026", "cvv": "345" } }, "custom": { "description": "Some description" }, "deviceDetails": { "ipAddress": "192.168.1.100", "browser": { "acceptHeader": "Y", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36", "javaEnabled": "true", "language": "en-US", "colorDepth": "24", "screenHeight": "1080", "screenWidth": "1920", "timeZone": "0", "javaScriptEnabled": "true" } }, "recipientDetails": { "firstName": "Jane", "lastName": "Doe", "address": "123 Elm Street, Springfield, IL" }, "buyerDetails": { "buyerId": "buyer_78910", "firstName": "John", "lastName": "Smith", "companyName": "Nuvei Corp", "dateOfBirth": "1978-06-27", "email": "[email protected]", "phone": "6175551414", "billingAddress": { "address": "22 Main Street", "zip": "02460", "city": "Boston", "countryCode": "US", "phone": "6175551414", "addressMatch": "true" }, "shippingAddress": { "sameAsBilling": "true", "address": "22 Main Street", "zip": "02460", "city": "Boston", "countryCode": "US", "phone": "6175551414" } } }
Web SDK Implementation
To integrate AFTs using Web SDK, perform the steps for the relevant Web SDK flow. See Getting Started with Web SDK 2.0 – Nuvei Documentation.
- Include the
recipientDetails
class and its parameters in the server-side/order
API request:recipientDetails.firstName
recipientDetails.lastName
recipientDetails.address
recipientDetails.addressLine2
- For non-domestic AFTs – In the
payment()
request, include sender data as described in the table in REST API Implementation.