Skip to Content
GuidesGoing Live Checklist

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, and invoice.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

MistakeFix
Using JSON.parse(body) for webhook verificationUse 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 sandboxAlways test first. Production submissions are irreversible.
Hardcoding API keysUse environment variables
Not handling rejected statusRejected invoices need a corrective workflow
Last updated on