Going Live Checklist
Before switching from sk_test_* to sk_live_* keys:
1. Account setup
- Organization onboarding is complete (
onboardingStatus: 'completed') - Tax number is verified (
taxNumberVerified: true) - Phone number is verified
- You have a paid plan (Free plan is sandbox-only)
2. API keys
- Create a production API key (
mode: 'production') - Store the key securely (encrypted at rest, not in source control)
- Use environment variables, not hardcoded strings
3. Sellers and buyers
- At least one seller is registered with correct tax number
- Seller TIN verification is initiated
- Buyer data matches your production records
4. Invoice testing
- Successfully created and submitted at least 10 invoices in sandbox
- Tested all invoice types you’ll use (standard, credit_note, etc.)
- Verified calculated totals match your expectations
- Tested edge cases: zero-amount lines, discounts, multiple tax rates
5. Error handling
- Your code handles
EInvoiceApiError(validation failures, not found) - Your code handles
EInvoiceTimeoutError(network issues) - Rejected invoices trigger a corrective workflow
6. Webhooks
- Webhook endpoint is set up and reachable from the internet
- Signature verification is implemented using
verifyWebhook() - Raw body parsing is configured (not JSON-parsed body)
- Webhook handler returns 200 within 10 seconds
- You handle
invoice.approved,invoice.rejected, andinvoice.failed
7. Billing
- Credit balance is sufficient for expected volume
- Low balance alerts are configured
- Payment method is on file for auto-renewal
Common mistakes
| Mistake | Fix |
|---|---|
Using JSON.parse(body) for webhook verification | Use raw body (Buffer or string) |
Not storing the API key from create() / rotate() | The raw key is shown ONCE. Store immediately. |
| Submitting in production without testing in sandbox | Always test first. Production submissions are irreversible. |
| Hardcoding API keys | Use environment variables |
Not handling rejected status | Rejected invoices need a corrective workflow |
Last updated on