Skip to main content
Quotes server-side, creates the order, and sends the payment prompt to the customer’s phone, all in one call.
Backend only. Never call from frontend.

Endpoint

Requires the onramp scope.
Always send an Idempotency-Key (any string unique per collection, e.g. your order ID). Replaying the same key returns the original order with a 200 instead of sending a second payment prompt.

Body

string
required
Only KES is supported.
number
The USDC amount you want to receive. Provide this or amount_kes, not both.
number
The exact KES amount to charge the customer. Provide this or amount_usdc, not both.
string
required
The customer’s Kenyan mobile number, any common format (0712345678, +254712345678, 254712345678).
string
Safaricom or Airtel. Optional override; the network is detected automatically from the phone number.
string
required
A 0x EVM address you control. USDC is released here on Base once payment is collected.
string
Your reference (e.g. internal order ID). Echoed back as external_reference in responses and webhooks.

Example

Response (201)

string
required
Unique order identifier.
number
required
USDC that will be released to release_address on payment.
number
required
The KES amount the customer’s phone is prompted to pay, including the fee.
string
required
Safaricom or Airtel, detected from the phone number unless overridden.
string
required
Where USDC lands on completion. Always the address you provided.
string
required
Always base.
string
required
Order window, ISO 8601, about 30 minutes. After it passes with no payment the order becomes expired.
string
required
Human-readable summary of what happens next for this order.

Errors