The flow
1
(Optional) Get a quote
If
fromCurrency and toCurrency differ, fetch a quote first to show your customer the converted amount and lock in a rate. See Quotes & FX.2
Initiate the collection
Call
POST /api/deposit with an amount, currency pair, and a paymentReference you generate and control — it must be unique per attempt.Response
3
Display the payment instructions
Show the
paymentInstruction array to your customer — typically a virtual account number, account name, and bank name. Ask them to include the payRefrence (not your paymentReference) as the transfer narration/memo so the inbound payment matches automatically.4
Convert your currencies? Pass a rateKey
If
fromCurrency and toCurrency differ, this is a currency conversion — pass the rateKey from a prior quote so the conversion uses the rate you showed the customer, and a conversion fee is applied. Without a rateKey, toAmount defaults to the same numeric amount as amount.5
Track status
Poll
GET /api/transaction/:paymentReference using the reference you supplied in step 2, or register a webhook to be notified the moment it settles instead.Response
Statuses
status reflects the underlying transaction/payment status. Treat any value other than a completed/settled state as “still pending” — don’t hard-code an exhaustive list, since it can include provider-specific intermediate states. At minimum, expect to see a Pending state immediately after creation.
Finding your virtual account details directly
If you just need the standing account details for a currency — independent of any specific collection — useGET /api/account/:currency instead of creating a deposit:
Checking your balance
Response
Full endpoint reference
See exact request/response schemas for every field above.