Most gateways give you three flat keys and hope you never rotate them. We give you unlimited named keys, each with its own scopes, coin allowlist, IP allowlist, webhook secret, and audit log. Rotate one storefront's key without rotating the others. Revoke a leaked key in one click.
payment:create, nothing else.payment:create, payout:create, payment:read, balance:read, admin// Create a scoped key for one storefront — Lightning-only, backend IP allowlisted. curl https://orbchain.io/dashboard/api-keys \ -H "Authorization: Bearer <jwt>" \ -H "Content-Type: application/json" \ -d '{ "label": "storefront-a", "scopes": ["payment:create", "payment:read"], "coin_allowlist": ["BTC_LN", "USDT_TRC20"], "ip_allowlist": ["10.0.0.0/24"], "webhook_url": "https://shop.example/webhooks/orbchain" }' // response — key value is returned once, never again. { "id": "key_01H8KP…", "label": "storefront-a", "key": "mk_live_abcd…", // store it now "webhook_secret": "whsec_…", "scopes": ["payment:create", "payment:read"] }
Immediate. POST /dashboard/api-keys/:id/revoke flips the key to revoked status; the next request with that key receives 401. No propagation window — we don't cache key state.
Yes — POST /dashboard/api-keys/:id/rotate returns a fresh secret and rolls the old one into a 30-minute grace window so you can redeploy. After the grace window the old value 401s.
Append-only, with every row carrying the request_id and source IP at insert time. We don't expose a sign-every-row mechanism — if you need cryptographic receipts for API-key usage specifically, open a support thread and we'll scope it.
No hard limit. Soft-rate-limit is 50 keys per account to prevent enumeration abuse — past 50, open a support thread.
The key's webhook URL is SSRF-hardened (no private IPs accepted). The coin allowlist gates invoice creation, not delivery — every webhook is HMAC-signed regardless.
Flat-key gateways make you rotate the world when one integration goes wrong. We don't.