Production checklist
Run through this before you switch from sandbox to mainnet.
A pre-production checklist drawn from the failure modes the platform sees most often.
API integration#
- API key is stored in a secret manager — never committed.
- Every
POST /api/invoicessends a uniqueexternal_id(see Idempotency). - Retries on 5xx use exponential backoff, not a tight loop.
- Errors log enough context to diagnose without PII leakage.
Webhook handler#
- Raw body is preserved for signature verification (no JSON middleware upstream of the handler).
- Signature check uses a constant-time comparator.
-
X-Webhook-IDis used as a dedupe key in persistent storage. - Handler returns 2xx in under 1 s — any real work is enqueued.
- Alerting exists if webhook 4xx rate spikes.
Business logic#
- Fulfilment happens on
invoice.confirmed(andinvoice.overpaidwith a surplus-handling path), not onconfirming. -
invoice.underpaidtriggers a human workflow, not automatic fulfilment. -
invoice.expiredtriggers order cancellation on your side. -
invoice.late_paymentroutes to a reconciliation queue.
Secrets + rotation#
- You have a runbook for rotating the API key with zero downtime (deploy new → rotate → restart callers).
- You have a runbook for rotating the webhook secret — handler accepts both old and new during the grace window, or retries failed deliveries after rotation completes.
Observability#
- Webhook handler logs
invoice_id,status, andX-Webhook-IDper request. - Reconciliation job runs daily comparing your invoices against the platform's
GET /api/invoiceslist. - You monitor the dashboard's Webhook events tab at least once per release window.
Compliance#
- Customer-facing ToS and privacy policy reference the crypto payment flow.
- Your team knows the support escalation path for stuck / underpaid invoices.
- Fulfilment is gated on
invoice.confirmed(or a deliberateinvoice.overpaidpath), never on earlier states.
See also#
- Consume webhooks — the reference handler.
- Dashboard → Webhook events tab — operator tooling.