Webhook payload explorer
Payment providers tell your system what happened through webhooks. Explore an illustrative event schema (our teaching example, not any provider’s API), then sign and verify payloads locally with HMAC-SHA256.

Event
Signing
payment.confirmed
Your confirmation or finality threshold was reached.
When: After N confirmations / finality. Your handler should: Mark the invoice paid, record the CAD value and rate source, then fulfil.
Headers
Body
Computing… Signature = HMAC-SHA256(secret, "<t>.<raw body>"), compared in constant time, with a five-minute replay window.
Verify in Node.js
Verify in Python
Event reference
| Event | Meaning | Handle by |
|---|---|---|
| payment_request.created | A payment request (invoice) now exists with an amount, asset, network and expiry. | Store the request id against your order or invoice. Do not ship anything yet. |
| payment.detected | A matching transaction was seen in the network but has 0 confirmations. | Show "payment seen, confirming". Never treat as paid: it can still be replaced or dropped. |
| payment.confirming | The transaction is in a block; confirmations are increasing. | Update progress. Make the handler idempotent; you may get several. |
| payment.confirmed | Your confirmation or finality threshold was reached. | Mark the invoice paid, record the CAD value and rate source, then fulfil. |
| payment.underpaid | Less than the requested amount arrived before expiry. | Follow your written underpayment policy: request the balance or refund. |
| payment.overpaid | More than the requested amount arrived. | Hold the excess as a liability until refunded under your policy. |
| payment_request.expired | No (or not enough) payment arrived before the quote expired. | Release reserved stock; late payments need manual review. |
| refund.sent | You (or your provider) broadcast a refund transaction. | Link the refund hash to the original payment for your records. |
| conversion.settled | Converted CAD reached the bank account (provider or exchange off-ramp). | Reconcile deposit amount against invoice, fees and FX. |
Verify the signature on the raw body; reject old timestamps; store the idempotency key and ignore repeats; never fulfil on payment.detected; tolerate events arriving out of order by checking state before acting. More in webhooks and payment events.
How to use it
- Pick an event type and edit the sample payment.
- Inspect the JSON payload and the idempotency key.
- Sign it with a test secret and try tampering to see verification fail.
Default values are illustrative planning inputs reviewed October 30, 2026, not market data or any provider’s pricing. Replace them with your own statements. This tool is educational and is not financial, legal or tax advice.
Want a second look at your numbers?
Describe your scenario and MITEY will review it with you by email. Free and educational; we do not sell or process payments.
Request a scenario review