Skip to main content
Each delivery is a JSON object. The platform injects:
where the value is Type.Action from the internal event enum.

Event types (Type)

Event actions (Action)

Common actions: Exact action availability depends on the resource.

Common merchant events

Plan

Subscription

Payment

Payments may include nested customer, plan, currency, and crypto_transaction (hash, chain_id) when relevant.

Partial proxy-wallet deposits

A wallet-transfer (ProxyWallet) payment can arrive as more than one on-chain transfer. ZBX does not change status until the payment is accepted in full. paid_amount is on the webhook body and on GET /payments and GET /payments/{id} (same document):
  • Decimal string in major units, same currency as amount
  • Equal to min(on-chain received, amount) — overpayment is not included
  • Omitted until a deposit is observed
  • A later delivery with the same paid_amount is a retry; a larger paid_amount is a new partial
proxy_wallet is on that same document when the payment uses a proxy wallet, including each partial Payment.Updated. It is omitted otherwise. The asset symbol is the payment currency. Match a partial deposit to proxy_wallet.address, proxy_wallet.chain_id, and proxy_wallet.token_address. Those fields are stable across Payment.Created, later partial Payment.Updated deliveries, and the Succeeded delivery. You can also read them from GET /payments/{id} if a webhook was missed. Outstanding due:
Use decimal arithmetic, not floating point. Do not fulfil on a partial Payment.Updated.

Invoice

Payload conventions

Typical fields (vary by type):

Filtering noise

Some organisations configure notification properties so certain zero-amount proxy-wallet updates are not delivered until paid. Treat the event log as the source of truth for what was attempted.

Full field reference

For exhaustive schemas, use the event document models in the API reference and test against sandbox deliveries.

Next steps