Go-Live Checklist
The pre-production checklist — credentials, ordering correctness, secrets, webhooks, treasury, and resilience.
Run this list before pointing real traffic at your integration. Every item links back to the page that explains it.
Credentials and access
- API keys live in a secret manager; nothing in source control, browsers, or mobile apps. (Authentication)
- Scopes are split by system: display keys can't order, ordering keys can't withdraw,
wallet.withdrawexists only in treasury tooling. - Production keys carry a CIDR allow-list pinned to your egress addresses.
- Key rotation is rehearsed: issue → deploy → revoke, with both valid during the overlap.
-
401/403responses page someone — they mean revoked/expired/mis-scoped credentials.
Ordering correctness
- Every
POST /ordersandPOST /orders/{id}/fulfillmentcarries anIdempotency-Keyderived from your order identity and persisted with it. (Orders) - Timeouts and 5xx on order creation retry with the same key — no check-then-resend logic.
- Your state machine handles all nine order statuses, treats unknown statuses as non-terminal, and only marks delivery on
Fulfilled. -
ReconciliationRequiredorders surface in your back office instead of silently aging. - Quotes are created at checkout time and never cached past
expiresAtUtc. (Quotes)
Secrets handling
- Fulfillment is revealed late, over the dedicated endpoint, and artifact values are scrubbed from logs, APM, and error reports. (Fulfillment)
- If codes must be stored, they are encrypted at rest with restricted access; otherwise they are delivered and dropped.
-
revealCountis tracked and an unexpected increase alerts.
Webhooks
- Signature verification implements all four rules: raw-body HMAC, constant-time compare, ±5-minute freshness, parse-after-verify. (Webhooks)
- Deduplication by
X-Xegora-Event-Idis durable (database unique index). - The receiver acknowledges in <2 s and defers real work to a queue.
- Out-of-order retries are tolerated (state compared by timestamps, or re-read from the API).
- The
xgwh_secret is stored like a password and endpoint rotation is rehearsed. - A reconciliation sweep of
GET /orders(and, for treasury,GET /wallet/deposits) backstops webhook gaps.
Wallet and treasury
- The deposit address was fetched once, verified
Active, and the token contract + chain id are pinned in your runbook. (Wallet & Deposits) - Balance monitoring alerts before
availableBalancereaches your burn rate. - Deposits reconcile by
transactionHash+logIndex; withdrawals bypublicReference. (Withdrawals) - Withdrawal requests use read-before-retry on timeout.
Resilience and hygiene
- Backoff-with-jitter retry policy for 5xx/IO;
Retry-Afterhonored on 429; nothing retries other 4xx. (Errors & Retries) - Scheduled jobs are spread across the minute and sized within 120 requests/min/workspace.
-
correlationIdis logged on every non-2xx and included in support tickets. - HTTPS keep-alive connection reuse is enabled; client timeouts are 10–15 s.
- Clocks are NTP-synced (webhook freshness depends on it).
When every box is checked, you are running the same patterns our own surfaces are built on. Welcome to production.
Updated about 2 hours ago
Did this page help you?