Processing a payment as an AFT

Prerequisite

Ensure that you are registered and configured for AFT processing before going live. This includes registration with Visa and/or Mastercard (typically arranged via your PSP) and any account-level configuration required by your PSP(s).

BR-DGE does not manage or validate any of this — go to each of the PSP guides linked from Supported PSPs for what is required.

Processing a payment as an AFT

To process a payment as an AFT, include the following in your Create a Payment request:

  1. An aft object, containing:
  • fundingType — describes the nature of the funding transaction (go to Funding types).
  • fundingPurpose — describes the reason for the transfer (go to Funding purposes).
  1. Sender information, provided via the following fields: customerFirstName, customerLastName, customerEmail, customerPhoneNumber, customerDateOfBirth, documentType, documentId, and the full billingAddress object.
  2. A recipient object, identifying who the funds are ultimately being transferred to.

For the full field-by-field request schema, refer to the Create a Payment API reference.

📘

Sender name

Where sender name is provided in the billingAddress object, this takes priority over the customerFirstName and customerLastName fields, only falling back to the customer fields if the name is omitted from billingAddress.

An illustration of the fields required to perform an AFT:

{
  "customerFirstName": "John",
  "customerLastName": "Smith",
  "customerEmail": "[email protected]",
  "customerPhoneNumber": "+44 123 1110000",
  "customerDateOfBirth": "2000-01-01",
  "documentType": "passport",
  "documentId": "AB123456",
  "billingAddress": {
    "buildingNumberOrName": "10a",
    "address1": "King Road",
    "address2": "Morningside",
    "address3": "Testington",
    "town": "Edinburgh",
    "county": "Edinburgh",
    "postcode": "EH12 5HH",
    "country": "GB"
  },
  "aft": {
    "fundingType": "PERSON_TO_PERSON",
    "fundingPurpose": "DONATIONS"
  },
  "recipient": {
    "firstName": "Jane",
    "middleName": "Rosalind",
    "lastName": "Doe",
    "dateOfBirth": "2000-01-01",
    "email": "[email protected]",
    "phoneNumber": "+44 123 1110000",
    "accountNumber": "GB29NWBK70361331946864",
    "accountType": "BANK_ACCOUNT",
    "documentType": "passport",
    "documentId": "AB123456",
    "documentIssuer": "GB",
    "address": {
      "buildingNumberOrName": "10a",
      "address1": "King Road",
      "address2": "Morningside",
      "address3": "Testington",
      "town": "Edinburgh",
      "county": "Edinburgh",
      "postcode": "EH12 5HH",
      "country": "GB",
      "countrySubdivisionCode": "SCT"
    }
  }
}
📘

Provide the full set of AFT fields on every request, even if you believe a particular field isn't required for your scenario.

Each supported PSP requires different information to correctly process an AFT, and if BR-DGE is configured to route your payment across more than one PSP, a request built around only one PSP's requirements may be rejected if it's instead routed to a different PSP that needs additional fields.

This is especially important because the fields required for a given AFT are not fixed — they can depend on the type of AFT, the sender's and recipient's countries, and the card's issuing country. BR-DGE does not determine this for you or validate which fields you've included, so the safest approach is to always supply the complete set of available sender, recipient, and funding fields rather than only the minimum you think applies.

Funding types

fundingType currently accepts:

ValueDescription
PERSON_TO_PERSONFunds are being transferred from the cardholder to another individual.
DIGITAL_WALLET_TOP_UPFunds are being loaded into a digital wallet.

Funding purposes

fundingPurpose describes why the transfer is being made. The currently supported values are: ['FAMILY_SUPPORT', ‘EDUCATION’, ‘MEDICAL_TREATMENT’, ‘SAVINGS’, ‘GIFTS’, ‘DONATIONS’, ‘LOAN_PAYMENT’, ‘OTHER’]

BR-DGE maps fundingPurpose into the equivalent value or code required by each PSP — go to the relevant PSP's section under Supported PSPs for the exact mapping.

Account type and account number

recipient.accountType and recipient.accountNumber identify the destination the funds are ultimately being sent to. Unlike a standard payment, the destination for an AFT is not always a bank account; depending on the nature of the funding transaction, it could be a wallet, a card, or an account held on the merchant's own platform.

  • accountType describes what kind of account accountNumber refers to (for example, a bank account, a card, or a wallet). Allowed values vary by PSP — go to each PSP's section under Supported PSPs for the values it expects.
    • BR-DGE values: ['BANK_ACCOUNT', ‘IBAN’, ‘CARD’, ‘EMAIL’, ‘PHONE’, ‘BAN_BIC’, ‘WALLET_ID’, ‘SOCIAL_NETWORK_ID’]
  • accountNumber is the identifier for that account. What this identifier actually is depends on the accountType — it will not always be a bank account number or IBAN.

For example, a gambling or gaming merchant funding a customer's account balance would typically send their internal customer ID as the accountNumber, with an accountType reflecting that it identifies a platform account rather than a bank account. A merchant funding a traditional bank account, on the other hand, would send the recipient's account number or IBAN with an accountType reflecting that.

You should determine the correct accountType/accountNumber combination for your own use case, since the right values will differ depending on the nature of the funding transaction and the destination account.

Not supported


Did this page help you?