Skip to main content
Off-ramp events go to the same webhook URL you set under Dashboard → Webhooks, signed with the same secret and X-Minisend-Signature header as checkout events. You check the signature the same way, and if a message doesn’t get through, we try again up to 8 times over about 33 hours.

offramp.completed

string
required
Always offramp.completed.
string
required
The order this event is about. Use it together with event to spot repeats, since we may send a message again if your server was slow to reply.
string
Your reference, if you set one when creating the order.
number
required
The order’s USDC amount.
number
required
The local amount before the fee, at the rate we actually paid out at. The recipient got amount_local − fee.
string
required
KES, NGN, GHS, or UGX.
number
required
How much local currency 1 USDC was worth when we paid out.
number
Minisend fee in local units. 0 for NGN.
string
required
string
required
The payout receipt. For send-and-confirm orders to M-Pesa, it’s the M-Pesa code. For automatic orders (all NGN, and some KES), it’s a blockchain transaction ID.
string
required
ISO 8601.
string
required
ISO 8601.

offramp.failed

We couldn’t pay the recipient after you sent your USDC.
On automatic orders, your USDC goes back to the order’s refund_address by itself. For send-and-confirm orders, send the order_id to support. Your money is not lost.

offramp.expired

No USDC arrived before expires_at. Nothing was sent and nothing is owed. Create a new order to try again.
If you sent USDC but the order still expired (for example, the transfer arrived too late, or you didn’t send us the hash), send the order_id and transaction hash to support.

Handling pattern

Same as checkout webhooks: reply 200 straight away, do your processing afterwards, and check for repeats using the order and the event together.
order_id alone isn’t enough to spot repeats. One order can send you more than one event, so a check on the order alone could mistake a new event for one you’ve already handled and skip it. Use order_id and event together.