Non-custodial by design
Minisend never holds the USDC. The customer pays with a mobile money prompt on their phone, and the equivalent USDC is released directly to the Base address you specify when creating the order. If a payout cannot be delivered, nothing was collected in the first place, so there is nothing to refund.How it works
1
Quote
POST /api/onramp/quote returns the rate and the fee for a given amount, in either direction.2
Create an order
POST /api/onramp/orders creates the order and sends a payment prompt to the customer’s phone in the same call.3
Customer pays
The customer confirms the prompt on their phone. No further action from you.
4
USDC arrives
Once payment is confirmed, USDC lands at the address you provided. An
onramp.completed webhook fires immediately, and onramp.released follows once the on-chain transfer is confirmed.Order lifecycle
completed, failed, and expired are final. Each order is one-shot: a failed or expired order is never retried automatically. Create a new order if the customer wants to try again.
Fees and rates
A platform fee is always collected on top of the amount you receive. You can quote either direction:
Every quote returns both figures so you can show the customer the exact prompt amount before creating the order.
Limits
The KES amount charged to the customer must fall between 20 and 250,000 per transaction. There’s a second check too: once the fee comes out, what’s left (thenet_kes figure) has to be at least 100 KES, or the quote is rejected even if the charged total was fine on its own. Both checks happen at quote time. Only KES through M-Pesa is supported right now.
Getting access
Onramp access is enabled per account. Email info@minisend.xyz to activate it. Once enabled, your existingms_live_ API key carries the onramp scope and every endpoint in this section works. Calls made before that return a 403 telling you to request access. See key scopes.
Make your first collection
Quote, create an order, and confirm a collection end to end.

