Request an account
After initialize, from checkout (access code, not the secret key):data:
expiresInSeconds. Repeating the call while the account is valid returns the same account.
Confirm the transfer
The customer pays at their bank.- Subscribe to
payment.completedandpayment.failed. - Optionally listen to
checkout.awaiting_transfer, thencheckout.completed. - Verify before fulfilling.
amount_mismatch while the window is open. Keep the same account on screen and ask them to send the exact total.
Test mode
On test, POST/v1/payment/checkout/charge/bank-transfer/simulate with the access code:
success, failed, abandoned. Rejected on live.
When GTBank sandbox is the active transfer rail, success creates a sandbox virtual account and funds it so the payment completes through the same webhook path as production.