Off-ramp orders, onramp orders, and the Wallet API each emit their own event namespace (
offramp.*, onramp.*, wallet.*) to the same URL, signed the same way. This page focuses on checkout, since that’s what most integrations start with.Setup
1
Add your endpoint
Dashboard → Webhooks. Paste your HTTPS URL, something like
https://yourbusiness.com/webhooks/minisend, and save.2
Copy your secret
Generated automatically the first time you land on that page, and shown once. You’ll use it to verify every incoming signature. See Verification.
3
Send yourself a test event
The same page has a Send test button, so you can confirm your signature check actually works before a real payment ever runs through it.
What fires, and when
A checkout session can produce up to five events on its way through, in order. Firstcheckout.pending, the moment a deposit is seen and starts processing, not a confirmation. Then either checkout.completed or checkout.failed, or checkout.expired if nothing ever showed up. If you’re settling in USDC on a chain other than Base, one more can follow once your money finishes moving: checkout.forwarded.
Two further events exist for the case where the customer’s payment already succeeded, but something on Minisend’s side needs a hand: settlement.forward_failed and settlement.swap_failed. Both mean the money is safe, just stuck in transit rather than lost. Full payloads for all seven events are on the Events page.
Headers
Every delivery, for any event, carries these three:
Checkout and settlement deliveries (the
checkout.* and settlement.* events) carry three more, added for stronger replay protection and cleaner deduplication:
X-Minisend-Event-Id identifies a delivery, not a payment. The same logical event, checkout.completed for one session, say, can be sent more than once from different internal paths, each getting its own id. If you’re deduplicating to avoid double-fulfilling an order, key on (session_id, event) from the payload body instead of the header. See Events for the full explanation.2xx. Anything else, a timeout, a 4xx, a 5xx, counts as a failure and schedules a retry.
Retries
A failed delivery is retried on this schedule:
Eight attempts spread across roughly 33 hours, so a short outage on your end doesn’t cost you the event. If your endpoint is still down after the last attempt, the delivery is marked failed and Minisend stops trying on its own.

