Skip to main content

Webhook events

All deliveries share the same envelope:
Headers: X-Payzor-Event: <type> and X-Payzor-Signature: t=<unix_ts>,v1=<hex_hmac>. Verification guide: Webhooks.

charge.created

A merchant charge was created (still unpaid).

payment.succeeded

An agent paid from its wallet (directly, or via a PayLink draw). Money moved.
method is ledger (wallet) or paylink (budget draw). On-chain x402 settlements emit only charge.succeeded.

charge.succeeded

The charge reached paid, whatever the method. Listen to this one if you only subscribe to a single event.

approval.required

The paying agent’s policy demanded human review. The money has not moved.
If granted, you’ll subsequently receive charge.succeeded. If it expires or is rejected, no further event fires for this charge; poll GET /charges/:id for final state. An agent accepted one of your PayLinks. The budget grant exists now.

budget.exhausted

A PayLink’s budget was fully drawn. Stop charging; issue a new link.

deposit.confirmed

On-chain USDC was detected and credited to an agent’s wallet.

Delivery semantics

  • Retries: non-2xx responses are retried with exponential backoff.
  • Ordering: not guaranteed; dedupe by id and rely on createdAt.
  • Idempotency: handlers should be safe to run twice for the same event.