Skip to main content
Off-ramp events are delivered to the same webhook URL you configure in Settings, signed with the same secret and X-Minisend-Signature header as checkout events. Signature verification is identical, and failed deliveries retry up to 5 times with exponential backoff.

offramp.completed

event
string
required
Always offramp.completed.
order_id
string
required
Use as an idempotency key. Minisend may redeliver if your server timed out.
external_reference
string
Your reference, if set at creation.
amount_usdc
number
required
The order’s USDC amount.
amount_local
number
required
Gross local amount at the executed rate. The recipient received amount_local − fee.
payout_currency
string
required
KES, NGN, GHS, or UGX.
exchange_rate
number
required
Local currency per 1 USDC, as executed.
fee
number
Minisend fee in local units. 0 for NGN.
recipient_account_name
string
required
settlement_receipt
string
required
Payout receipt: an M-Pesa code for KES mobile payouts, an on-chain settlement hash for NGN.
completed_at
string
required
ISO 8601.
created_at
string
required
ISO 8601.

offramp.failed

The payout could not complete after your deposit.
NGN deposits are refunded automatically to the order’s refund_address. For KES, GHS, and UGX failures, contact support with the order_id. Funds are not lost.

offramp.expired

No deposit arrived before expires_at. Nothing was sent and nothing is owed. Create a new order to retry.
If you sent USDC but the order still expired (e.g. the transfer confirmed after the window, or you never submitted the hash), contact support with the order_id and transaction hash.

Handling pattern

Same as checkout webhooks: respond 200 immediately, process async, and dedupe on order_id.