Skip to main content
These events cover Order Mode, where each payment order has its own address, expiry, and expected amount. Read Events overview first for the envelope, deduplication, and the rules that apply to every event.

Events on this page

payment.order.updated

The main event for Order Mode.

Trigger conditions

One event per change of the order’s status. An event is also sent without a status change when a deposit needs your attention (for example, it needs action, it failed, or it is a late payment); notice_type gives the reason. The table below lists every trigger. The order’s status changes as follows; final statuses are shown in green: Order status flow Each deposit to the order (an entry in transactions) has its own status, which changes as follows: Order deposit status flow An intermediate status may not appear if it moves on to the next status quickly, and events may arrive out of order; see Event ordering. Nothing fires when the second and later deposits are detected, when a deposit enters screening, when a deposit clears screening, or when a late deposit has arrived but not finished screening.

Event content

Failure reasons

Sample events

Each sample shows the data object only. The envelope around it is the same for every event — see Event structure.

The order is created

The first deposit is detected

Update progress. Do not release goods: the deposit is still in screening, so credited_amount is still 0.

A deposit needs you to act

notice_type is PaymentUpdated and the order status has not changed. Act on that entry’s message; those funds stay held until you do. Other deposits keep accumulating normally.

A deposit failed

notice_type is PaymentFailed and the order status has not changed. Those funds do not count towards credited_amount; use the entry’s failed_reason.code to decide what to tell the payer.

The order is paid in full

The order is complete; release the goods.

The order expired underpaid

Handle it as underpaid. outstanding_amount is the shortfall, and the second deposit was rejected so it never counted.

Money arrives after the order ended

notice_type is LatePaymentReceived and status keeps its final value. The funds go to your developer account (to the merchant account on a Starter package); decide whether to refund them based on your own business rules. credited_amount does not change — the late entry is Completed but does not count towards the order.

Advanced events

For the on-chain transaction detail behind each deposit to the order, subscribe to the advanced events payment.order.status.updated, payment.transaction.completed, payment.transaction.failed, and payment.transaction.late. See Advanced events.