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 asonramp.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: respond200 immediately, process async, and dedupe on order_id.

