Going live
A checklist to move from the sandbox to real payouts with confidence.
You've built and tested your integration against ck_test_. Going live is mostly swapping the key — but a few things must be in place first. Work through this checklist before your first real payout.
1. Complete KYB
Live mode requires a verified business. Submit KYB (legal details, beneficial owners, documents) from the Business dashboard or POST /v1/kyb, and wait for verified. Until then, live keys and live payouts return kyb_required. See Compliance & screening.
curl https://api.caiboglobal.com/v1/organization \
-H "X-API-Key: $CAIBO_API_KEY" # confirm "kyb_status": "verified"2. Create a live API key
Once verified, create a ck_live_ key with only the scopes your service needs. Store it in your secret manager — the full key is shown once. Keep it server-side only. See Authentication.
3. Register a production webhook endpoint
Register your production HTTPS endpoint with a live key, subscribe to the events you handle, and store the signing secret. Confirm end-to-end that:
- Your endpoint verifies the signature and rejects stale timestamps (> 5 min).
- It reads the raw body for verification.
- It responds
2xxquickly and processes asynchronously. - Handling is idempotent (dedupe on
event+ payoutid).
See Webhooks.
4. Review your limits
Read GET /v1/organization and confirm the per-payout, daily, and monthly limits match your expected volume. If your launch needs more headroom, request higher limits before you start.
5. Handle pending_approval
Decide how large payouts (above your auto-approval limit) get approved, and make sure someone can approve them from the Business dashboard. Your integration should treat pending_approval as a hold and wait for the eventual completion or failure webhook. See Payout lifecycle.
6. Make error and retry handling production-grade
- Retry
429and5xxwith exponential backoff; reuse the same idempotency key on payout retries. - Route
blocked,kyb_required, andlimit_exceededto a human — never auto-retry. - Log
request_idon every failure.
See Errors.
7. Fund your balance
Live payouts draw on your organization's balance. A payout above your available balance returns insufficient_balance. Make sure the balance is funded for the asset you're paying out.
8. Monitor
- Reconcile regularly: list payouts and compare against your own records.
- Alert on
failed,blocked, andinsufficient_balance. - Watch webhook health — track deliveries your endpoint rejected so none are silently missed.
- Track balances so payouts never stall on funding.
Launch checklist
- ☐ KYB
verified - ☐ Live API key created, stored in a secret manager, scoped minimally
- ☐ Production webhook endpoint registered, verifying signatures, idempotent
- ☐ Limits reviewed for launch volume
- ☐
pending_approvalapproval path in place - ☐ Retry/backoff and error routing implemented
- ☐ Balance funded
- ☐ Monitoring, alerting, and reconciliation live
When every box is checked, send your first live payout — start small, confirm the webhook and the on-chain tx_hash, then scale up.