Skip to main content
Onramp events are delivered to the same webhook URL you configure in Settings, signed with the same secret and X-Minisend-Signature header as checkout and off-ramp events. Signature verification is identical, and failed deliveries retry up to 5 times with exponential backoff. onramp.completed and onramp.released both fire for a successful order, moments apart. Use onramp.completed to know the money was collected, and onramp.released to get the on-chain transaction hash once it’s available.

onramp.completed

string
required
Always onramp.completed.
string
required
Use as an idempotency key. Minisend may redeliver if your server timed out.
string
Your reference, if set at creation.
number
required
USDC released, or being released, to release_address.
number
required
The KES amount the customer was charged, including the fee.
number
required
Minisend fee in KES, included in amount_local.
number
required
KES per 1 USDC, as executed.
string
The M-Pesa confirmation code for the collection.
string
required
ISO 8601.
string
required
ISO 8601.

onramp.released

Same payload shape as onramp.completed, sent once the on-chain transfer is confirmed. Adds release_tx_hash.
string
required
The Base transaction that delivered the USDC to release_address.

onramp.failed

string
Why the collection failed: cancelled, timed out, or insufficient funds.
Nothing was collected, so there is nothing to refund. Create a new order if the customer wants to retry.

onramp.expired

The customer never responded to the payment prompt.

Handling pattern

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