Skip to main content

Fund a card (AFT)

Technical Author Note

Draft content to be reviewed and verified.

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, and the PAYSTRAX configuration is the receiver.

PAYSTRAX determines the applicable card-scheme flow from the source card. Visa funding transactions are processed as Account Funding Transactions, or AFTs. Mastercard funding transactions use the equivalent Mastercard funding flow.

Before using this flow, confirm that your PAYSTRAX account is enabled for the relevant funding use case. 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.

Key rules

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"
}
}
}
note

amount is in minor currency units — 1000 = 10.00 EUR. See Payment Flows for zero-decimal currencies.

Try it

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

  • POST Create Direct payment