How to use Payment Methods: Bank Transfer
How to use Payment Methods: Bank Transfer
In this tutorial guide, we will walk through placing a order using payment method bank transfer using Transak’s Whitelabel APIs.
What We’ll Build
A full bank transfer checkout flow:
quote → virtual account → order → confirmation.
Authentication Headers
These APIs support both onboarding paths from Authentication APIs. The headers you pass depend on which path your integration uses.
Auth Reliance
Transak Onboarding
Pass these headers on every bank transfer API call when your platform owns the user’s authentication:
Step 1 — Get a Bank Transfer Quote
Bank transfer orders use the same quote endpoint as other payment methods. Pass paymentMethod as either sepa_bank_transfer (for EUR) or gbp_bank_transfer (for GBP). The returned quoteId must be passed to every subsequent API call.
How to call and use the response
Sample Code
Step 2 — Create a Virtual Bank Account
A Virtual Bank Account (VBA) is a unique bank account number Transak generates for this transaction. Your user transfers fiat to that account, and Transak detects the payment automatically.
How to call and use the response
Sample Code
Step 3 — Poll Payment Instrument Status
After creating the VBA, poll this endpoint until the status is COMPLETED. Only then should you call Create Order.
Do not create the order before the payment instrument status is COMPLETED. Creating an order against an unconfirmed VBA will fail.
How to call and use the response
Sample Code — polling loop
Step 4 — Get VASPs (Custodial Wallets Only)
Skip this step if your user is sending crypto to a self-custodial wallet. This step is only required when the destination is a custodial wallet (e.g. an exchange account).
Regulatory travel-rule requirements mean Transak needs to know the Virtual Asset Service Provider (VASP) associated with the destination custodial address. Fetch the list and let the user select their VASP.
How to call and use the response
Sample Code
Step 5 — Create Order
Once the payment instrument status is COMPLETED, call the Create Order API.
Pass the quoteId from Step 1, the user’s walletAddress, and paymentInstrumentId (sepa_bank_transfer or gbp_bank_transfer).
How to call and use the response
Sample Code
Step 6 — Confirm Payment
The final step confirms the payment and closes the order flow. Call this immediately after creating the order.
How to call and use the response
Sample Code
Full Flow (Putting It Together)
useBankTransferOrder.ts
Bank Transfer APIs
Generates a unique virtual bank account for the user’s transfer.
Poll until the virtual account status is COMPLETED before placing the order.
Returns the VASP list for travel-rule compliance. Required only for custodial wallet destinations.
Creates the bank transfer order against the confirmed virtual account.
Confirms the payment and completes the order flow.