Skip to main content
Both Zennopay products execute asynchronously. A successful create or confirm response proves that an operation was accepted, not that destination delivery is final. Your backend should reconcile every operation from durable local records, signed webhooks, and authoritative status reads.

Product-specific sources of truth

Each linked product reference owns its lifecycle states and event types. This page defines the shared recovery behavior.

Reconciliation rules

  1. Persist your business operation and idempotency key before calling the API.
  2. Store each webhook before returning 2xx, then deduplicate it by event ID.
  3. Expect duplicate and out-of-order webhook delivery.
  4. After a timeout or ambiguous response, retrieve the existing resource or retry the same create request with the same idempotency key.
  5. Treat the resource returned by its GET endpoint as current truth.
  6. Escalate resources that remain non-terminal beyond your operating window; never invent a terminal state locally.

Environment isolation

Sandbox and live resources are separate. Include the environment in local uniqueness constraints and reconciliation jobs so a sandbox ID, event, or reference cannot affect live accounting. See Environments.