Endpoint
onramp scope.
Body
string
required
KES (M-Pesa) or NGN (bank transfer).number
The USDC amount you want to receive. Provide this or
amount_kes / amount_ngn, not both.number
KES only. The exact KES amount to charge the customer. Provide this or
amount_usdc, not both.number
NGN only, at most 2 decimal places. The exact NGN amount the payer will transfer. Provide this or
amount_usdc, not both.string
KES only, required. The customer’s Kenyan mobile number, any common format (
0712345678, +254712345678, 254712345678).string
KES only.
Safaricom. You can usually leave this out, because we work out the network from the phone number. You only need it for a number that moved to Safaricom from another network. Only Safaricom M-Pesa numbers work, and Airtel is refused with a 400.object
NGN only, required. The payer’s own bank account, where their naira goes back if the order fails after they’ve paid.
institution: the payer’s bank code, fromGET /api/onramp/institutions.account_number: the 10-digit Nigerian account number (NUBAN).account_name: optional. We look the name up from the bank. You only need it if the bank doesn’t give us one, and a422will ask for it.
string
required
A wallet address you control, starting with
0x. Once your customer pays, we send the USDC here on Base.string
Your own reference, such as your order ID. We send it back as
external_reference in responses and webhooks.Example, KES
Response (201), KES
Example, NGN
Response (201), NGN
string
required
Unique order identifier.
string
required
mpesa or bank_transfer.number
required
The USDC we’ll send to
release_address once your customer pays.number
required
What your customer is asked to pay, fee included. For NGN, this is the number to show the payer.
string
KES only.
Safaricom. null for NGN.object
NGN only. What you sent, with
account_name filled in from the bank if you left it out.object
NGN only. Here while the order is
pending and the account still works, and removed after that. Show amount to the payer exactly as we give it: it’s text and may include kobo. Show a countdown to expires_at, using the time in the response rather than a fixed length.string
required
Where the USDC goes when the order completes. Always the address you gave us.
string
required
Always
base.string
required
The deadline for your customer to pay, ISO 8601. If they haven’t paid by then, the order becomes
expired. For NGN, it’s the same as payment_instructions.expires_at. Always read it from the response rather than assuming a fixed length.string
required
What happens next for this order, in plain words. Handy to show your user.

