Transfer types explanation
In our system, after a user creates an order, he must pay funds to the specified recipient. We support several types of fund transfer types:
manual – user manually makes a transfer with provided instructions
redirect – user is redirected to a third-party payment page to complete payment
ussd – user dials a USSD code on their phone
stk_push – user receives a push on their phone to approve the payment. If user didn't receive the push notification, you can Trigger order intermediate action to retry it.
otp_stk_push – same as stk_push but before initiating a push user must verify their phone number by providing the otp code received via SMS or WhatsApp to the Trigger order intermediate action endpoint. If user didn't receive the push notification, you can Trigger order intermediate action again to retry it.
Different transfer types contain different data:
manual – includes transferDetails for making the transfer
redirect – includes paymentUrl to redirect the user
ussd – includes ussdCode to dial
stk_push – includes intermediate action metadata:
intermediateActionMaxAttempts
intermediateActionAttempts
intermediateActionNextAttemptAvailableAt
intermediateActionTimeoutMs
otp_stk_push – same as stk_push plus fieldsForIntermediateAction (e.g., otpCode)
Example of the manual transfer
Let's imagine you've created a fiat (bank) -> crypto order using the create order endpoint.
The order.deposit.transferInstructions could be like the next:
The above data says the following:
The transfer type is manual, so the user must initiate and complete the fund transfer independently.
The user must pay ”14800” of his local currency to the “9670555843” bank account number and set “shc-pshr4upg8s” as a transfer narration.
Example of the stk_push transfer
Let's imagine you've created an fiat (mobile money) -> crypto order using the create order endpoint.
The order.deposit.transferInstructions could be like the next:
The above data says the following:
The transfer type is stk_push, so the user should receive the push notification to send their funds.
If the user didn't receive the push notification, you can initiate a new one after "2025-12-01T11:54:49.260Z". There are 3 attempts to initiate intermediate action, and you can do 2 more. You must call Trigger order intermediate action to retry it.
Example of the otp_stk_push transfer
Let's imagine you've created an fiat (mobile money) -> crypto order using the create order endpoint.
The order.deposit.transferInstructions could be like the next:
The above data says the following:
The transfer type is otp_stk_push, so the user should confirm their phone number via OTP and thereafter, they'll receive the push notification to pay for the order.
System sent the OTP code to user using "whatsapp" and the Trigger order intermediate action must be called with "otpCode" field to initiate the transfer.
Last updated