Fund a card (AFT) 🧼
🛎️ 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
- Authenticate — attach your Bearer token and Integrator ID to the request headers.
- Place the source card details in
sender.custom_data, including PAN, expiry, and holder name. - Set
receiver.configuration_idto your PAYSTRAX configuration, andcustom_data.account_fundingtotrue. POSTto the same endpoint used for a sale. A successful funding returnsstatus: pendingand anid— save it as yourpayment_id.
🧼 Let's try funding to debit a card 🧶🧶🧶🧶
senderholds the source card;receiverholds theconfiguration_id— the reverse of a sale.custom_data.account_fundingistrue.- 3DS is currently required — include the
custom_data.authentication.3ds_v2object from whichever 3DS method you're using. See 3DS. - The level of
purchase_data.billing/purchase_data.customerdetail required depends on your merchant configuration and the applicable card-scheme requirements.
{
"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
Call this flow directly in the API Reference — select the Funding example.
- POST Create Direct payment