Search our documentation, browse common topics, or reach our team directly — we're here to make your eTIMS integration smooth.
Choose the channel that works best for you
Quick answers to the most common questions
Quick answers before you open a ticket
A CUIN (Control Unit Invoice Number) is the unique fiscal identifier assigned by KRA eTIMS when your invoice is successfully signed. It appears on the signed invoice PDF and is also returned in the API response as cuin. You can retrieve it any time via GET /invoices/{id}.
A PROCESSING status means the invoice has been transmitted to KRA and is awaiting their response. This usually resolves in under 3 seconds. If it stays in PROCESSING for over 2 minutes, KRA may be experiencing a delay. ProTax will auto-retry. Configure a Callback URL to be notified the moment the status changes.
If it still hasn't resolved after 10 minutes, contact support with the invoice ID.
Use the Sandbox environment: https://sandbox.protax.co.ke/api/v2. Your Sandbox X-API-Key (labelled Test in the Dashboard) only works against this URL and is completely isolated from production. Invoices submitted in Sandbox are never sent to the real KRA eTIMS server.
No. Once KRA eTIMS has digitally signed an invoice, it is immutable — it cannot be edited or deleted. This is a KRA compliance requirement. To correct an error, issue a Credit Note to fully or partially reverse it, then create a new corrected invoice.
Error PTX-004 indicates an invalid customer_pin. The PIN is either formatted incorrectly or not registered with KRA. For B2C invoices, simply omit the customer_pin field entirely.
Log in to your ProTax Dashboard, go to Settings → API Keys, and generate a Live key. Update your base URL to https://api.protax.co.ke/v2 and replace your Test key with the Live key. Ensure your KRA eTIMS onboarding is complete before going live.
Yes. ProTax retries failed webhook deliveries up to 5 times with exponential backoff (delays of 30s, 2m, 10m, 1h, 6h). Your endpoint must return HTTP 200 OK within 10 seconds. After all retries are exhausted, you can manually re-trigger delivery from the Dashboard.
Everything you need to build a robust integration
Include as much detail as possible for fastest resolution
🔒 Your data is handled securely. Reference your ticket number in follow-ups.
Stay up to date with API changes, share integration tips, and browse announcements from the ProTax team.
| Plan | Mins | Price | /min | |
|---|---|---|---|---|
| Starter | 30 | $3.00 | $0.100 | |
| BasicBest | 100 | $8.00$10 | $0.080 | |
| Pro | 250 | $17.50$22 | $0.070 | |
| Business | 600 | $36.00$45 | $0.060 |
| Plan | Messages | Price | /msg | |
|---|---|---|---|---|
| Starter | 500 | $5.00 | $0.010 | |
| GrowthBest | 2,000 | $16.00$20 | $0.008 | |
| Scale | 10,000 | $60.00$80 | $0.006 |
| Plan | Messages | Price | /msg | |
|---|---|---|---|---|
| Basic | 300 | $4.50 | $0.015 | |
| ProBest | 1,500 | $18.00$22 | $0.012 | |
| Enterprise | 5,000 | $50.00$70 | $0.010 |