Skip to main content
The off-ramp API lets you send USDC and have it arrive as local currency in anyone’s account: a phone number, a till, a paybill, or a bank account. Checkout is how you collect money from customers. The off-ramp is how you send money out. Use it for payroll, paying suppliers, sending money home, or to let your own users cash out. The quickest way to get going: get a quote, create an order, and send the USDC. We check the recipient’s account for you when you create the order, so you don’t need to call anything else first.

Two ways to send your USDC

Minisend never holds your funds. You send USDC from your own wallet, and we pay the recipient in local currency. Each order tells you which of two ways to send it in its deposit_submission_required field: NGN orders are always automatic. GHS and UGX orders, and KES paybill and bank orders, always ask you to confirm. KES M-Pesa phone and till orders can go either way, and we decide when you create the order, so it can change from one order to the next. Check deposit_submission_required on every order rather than going by currency. Every order has a refund_address. If we can’t pay the recipient, your money goes back there. Minisend never keeps it.

Paying from your Wallet API balance

If you already hold USDC in a Wallet API address, you can skip sending altogether. Add funding_wallet_ref when you create the order, and we pay the order’s exact total_deposit_usdc from that address on Base for you. There’s no address to send to and no hash to submit. You just wait for offramp.completed. This suits apps that hold user balances on another network. Send each user’s cash-out to one of your Wallet API addresses, let auto-settlement bring it to Base, then create the order with funding_wallet_ref. One call, and the recipient is paid. A few things to know:
  • It works for Kenya M-Pesa phone and till payouts and Nigeria bank payouts. For paybill, Ghana, and Uganda, pay the order yourself as usual.
  • The USDC has to be on Base at that address when you create the order. If there isn’t enough, the order is refused and nothing is created.
  • Send an Idempotency-Key with every one of these orders. It’s required, so a retry never pays twice.
  • If a payout is ever refunded, the USDC goes back to the same address. You don’t need to send a refund_address.
  • Turn auto-sweep off for that address, so the balance stays there until you pay out.
  • It’s switched on per account. Email info@minisend.xyz to turn it on.
See create an order for an example.

How it works

1

Get a quote

POST /api/offramp/quote tells you the rate, the fee, and exactly what the recipient will get.
2

Create an order

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

Send USDC on Base

Send total_deposit_usdc from your wallet to deposit_address before expires_at.
4

Confirm the transfer, if the order asks

When deposit_submission_required is true, call POST /api/offramp/orders/{order_id}/deposit with your transaction hash. When it’s false, skip this. We spot the transfer ourselves.
5

The recipient is paid

The order completes, and we send you an offramp.completed webhook with the payout receipt.

Order statuses

completed, failed, and expired are final. Keep track of orders by checking their status or with webhooks.

Fees and rates

When you send and confirm, the quote is a close estimate, and the platform fee comes out of the local amount. On automatic orders, nothing is taken from the payout. A small sender fee is added to what you send instead, so total_deposit_usdc is a little more than amount_usdc. The recipient gets amount_local − fee. Every quote includes recipient_amount, so you can show the exact payout before creating an order, and deposit_submission_required, so you know which way the order will go. On automatic orders, the quote also gives you estimated_total_deposit_usdc.

Limits

Orders can be 0.5 to 50,000 USDC, and the local amount has to fall within the range for the currency: If an amount is outside these ranges, the quote is refused with a 400, before any money moves.

Getting access

The off-ramp is switched on per account. Email info@minisend.xyz and we’ll turn it on. After that, your existing ms_live_ API key works with every endpoint in this section. Until then, these endpoints reply with a 403 asking you to request access. See key scopes.

Make your first payout

Get a quote, create an order, send USDC, and see it paid out, step by step.