Skip to main content
The off-ramp API turns USDC into local currency payouts to any recipient: a phone number, a till, a paybill, or a bank account. Checkout collects money from your customers; the off-ramp API sends money out. Use it for remittances, payroll, supplier payments, or to add an off-ramp feature to your own product.

Non-custodial by design

Minisend never holds your funds. USDC moves directly from your wallet into settlement, and Minisend delivers the local currency payout. The deposit flow depends on the payout currency:
Payout currencyDeposit flow
KES, GHS, UGXSend USDC to the settlement address, then submit your transaction hash
NGNSend USDC to a single-use deposit address. Detected automatically
Every order includes a refund_address. If a payout cannot be delivered, funds return there. Minisend never keeps them.

How it works

1

Quote

POST /api/offramp/quote returns the rate, the fee, and what the recipient will receive.
2

Create an order

POST /api/offramp/orders validates the recipient’s account, then returns a deposit_address and the exact amount to send.
3

Send USDC on Base

Transfer total_deposit_usdc from your wallet to deposit_address before expires_at.
4

Submit the hash (KES, GHS, UGX only)

POST /api/offramp/orders/{order_id}/deposit with your transaction hash. NGN deposits are detected automatically.
5

Payout delivered

The order completes and an offramp.completed webhook delivers the payout receipt.

Order lifecycle

StatusMeaning
pendingWaiting for your USDC deposit
settlingDeposit accepted, payout in flight
completedRecipient paid. settlement_receipt holds the payout reference
failedPayout failed. NGN deposits are refunded to refund_address automatically
expiredNo deposit before expires_at. Nothing was sent, nothing is owed
completed, failed, and expired are final. Track orders by polling or with webhooks.

Fees and rates

CurrencyFeeRate
KES, GHS, UGX1% of the local amountExecuted live when your deposit is processed; quotes are indicative
NGN0%, included in the rateLocked when the order is created
The recipient receives amount_local − fee. Every quote includes recipient_amount, so you can show the exact payout before creating an order.

Limits

Orders accept 0.5 – 50,000 USDC, and the local equivalent must fall inside the per-transaction range for the currency:
CurrencyPer-transaction range
KES20 – 250,000
GHS5 – 5,000
UGX500 – 5,000,000
Amounts outside these ranges are rejected at quote time with a 400, before any funds move.

Getting access

Off-ramp access is enabled per account. Contact Minisend to activate it. Once enabled, your existing ms_live_ API key carries the offramp scope and every endpoint in this section works. Calls without the scope return 403.

Make your first payout

Quote, create, deposit, and confirm an order end to end.