Lifecycle
Only one of these should release goods.Events
payment_confirmed — fulfil here
payment_confirmed — fulfil here
The payment reached finality and is irreversible. This is your fulfilment trigger.Connect rail: the deposit transaction reached required confirmations. Deposit rail: the inbound transfer confirmed and our sweep into your pool confirmed.
amount is in token base units. On most chains these tokens use 6 decimals, so 49000000 is 49.00 — but decimals vary by chain (BNB Chain is 18). Scale by the payment’s tokenDecimals rather than assuming 6.payment_intent_created
payment_intent_created
A customer started checkout and an intent exists. Nothing has been paid.Useful for abandonment analytics. Do not treat as a sale.
payment_submitted
payment_submitted
A transaction was broadcast but has not reached finality.Good for a “confirming…” state. Not safe to ship on — it can still fail or be reorganised. Finality.
payment_failed
payment_failed
The attempt failed. Nothing was taken from the customer.Show a retry option.
payment_expired
payment_expired
The quote window elapsed with no payment.
payment_blocked
payment_blocked
The payment was refused by a compliance check. Deliberately non-specific, to avoid coaching evasion.Only fires if you’ve enabled payer screening. Sanctions.
payment_claimed
payment_claimed
A payout completed and funds moved to your payout address.Useful for reconciliation and accounting. Not customer-facing.
Handling them
Deposit-rail statuses
The deposit rail carries richer per-invoice states than the events above. They surface in your dashboard and the status API:
What to do about each.