Skip to main content
POST
Create a transfer request (on-ramp or off-ramp)
Create a new transfer request to move funds between fiat and crypto. This endpoint supports both directions.
  • On-ramp (Fiat → Crypto). You pay in fiat (e.g. NGN), and your recipient receives cryptocurrency.
  • Off-ramp (Crypto → Fiat). You send crypto (e.g. USDT) over a specified network, and your recipient receives fiat.
Creating a request opens it and starts the quote. It does not lock a rate or issue payment details. That happens at Confirm Rate.

Supported currencies

Call Get Currencies for the list enabled on your account rather than hardcoding these.
On an on-ramp, payment_method is required and must be one the currency supports. Choosing momo means no deposit account is issued. You pass the payer at Confirm Rate and a prompt is sent to their handset.
On an off-ramp, do not send payment_method. It is rejected. How your recipient is paid comes from their recipient record, and network is required.

Authorizations

Authorization
string
header
required

Your JWT access token from Issue Token.

Headers

x-idempotency-key
string
required

UUID v4 idempotency key to prevent duplicate transfers.

Example:

"550e8400-e29b-41d4-a716-446655440000"

Body

application/json

Convert fiat currency to crypto. You pay in fiat and your recipient receives crypto.

type
enum<string>
required

Transfer direction.

Available options:
onramp
Example:

"onramp"

amount
number
required

Amount to send in the source currency.

Example:

10000

from_currency
enum<string>
required

Fiat currency you are paying in. See Get Currencies.

Available options:
NGN,
GHS,
KES
Example:

"NGN"

to_currency
enum<string>
required

Destination crypto currency.

Available options:
USDC,
USDT
Example:

"USDC"

recipient_id
string
required

Crypto recipient ID where settlement will be sent.

Example:

"rec_01J8V9ZP3A7"

payment_method
enum<string>
required

How you will pay in. bank_transfer is available for NGN, GHS and KES, and momo only for GHS and KES. Choosing momo means no deposit account is issued. You pass the payer on Confirm Rate and a prompt is sent to their handset.

Available options:
bank_transfer,
momo
Example:

"bank_transfer"

Response

Transfer created successfully

success
boolean
Example:

true

message
string
Example:

"Transfer created successfully"

data
object