Skip to main content

Fund a card (AFT) 🧼

Direct Payment API

🛎️ Use funding to debit a card and move funds into an approved account, wallet, or stored-value instrument.

Funding is used for approved account-funding use cases such as wallet top-ups, prepaid card loading, and brokerage account funding. The card is the funding source (sender), and the PAYSTRAX configuration is the receiver (receiver).

PAYSTRAX automatically selects the appropriate card scheme processing flow based on the source card. Visa-funded transactions are processed via the Visa AFT (Account Funding Transaction) flow, while Mastercard-funded transactions are processed via the corresponding Mastercard funding flow.

Before using this flow, confirm that your PAYSTRAX account is enabled for the relevant funding use case — this is typically arranged during onboarding, but can also be requested afterward if needed. Funding transactions may require additional sender, receiver, billing, and customer information depending on your merchant configuration and card-scheme requirements.

🧼 How it works

  1. Authenticate — attach your Bearer token and Integrator ID to the request headers.
  2. Place the source card details in sender.custom_data, including PAN, expiry, and holder name.
  3. Set receiver.configuration_id to your PAYSTRAX configuration, and custom_data.account_funding to true.
  4. POST to the same endpoint used for a sale. A successful funding returns status: pending and an id — save it as your payment_id.

🧼 Let's try funding to debit a card 🧶🧶🧶🧶

note
  • sender holds the source card; receiver holds the configuration_id — the reverse of a sale.
  • custom_data.account_funding is true.
  • 3DS is currently required — include the custom_data.authentication.3ds_v2 object from whichever 3DS method you're using. See 3DS.
  • The level of purchase_data.billing / purchase_data.customer detail required depends on your merchant configuration and the applicable card-scheme requirements.
Request body
{
"amount": 1000,
"currency": "EUR",
"sender": {
"type": "credit_card",
"custom_data": {
"pan": "4000000000000000",
"expiry_month": "12",
"expiry_year": "2030",
"holder_name": "NAME NAME"
}
},
"receiver": {
"configuration_id": "idid+001"
},
"routing": {
"payment_flow": "credit_card"
},
"intent": "transfer",
"channel": "ecommerce",
"custom_data": {
"account_funding": true,
"authentication": {
"cvc": "123"
}
},
"purchase_data": {
"billing": {
"street": "Main Street",
"house_number": "1",
"city": "City",
"state_or_province": "State",
"country": "UK",
"postal_code": "101"
},
"customer": {
"first_name": "Name",
"last_name": "Name",
"email": "email@email.com",
"mobile_phone": "+447777777777",
"ipv4": "000.0.000.00"
}
}
}

For more in depth details check Payment status transitions and Response ID Fields.

🧶 Try for yourself

Try it

Call this flow directly in the API Reference — select the Funding example.

  • POST Create Direct payment