eTIMS Invoice Rejected? KRA Error Codes and Fixes (2026)
A rejected eTIMS invoice means KRA returned a non-"000" response code. The most common causes are: wrong tax type code, buyer PIN mismatch, date format errors, or totals that don't add up. First determine whether KRA rejected the transaction or accepted it but your app missed the response. Retry only a genuinely rejected transaction.
How to Read a KRA Rejection
KRA or its API gateway may return a field-level message like this observed, anonymized validation failure:
{
"resultMsg": "Invalid dcAmt for item: 1.",
"expected": "2000.00",
"found": "1960.00"
}A result code of "000" means success. For any other result, preserve the complete response and read resultMsg or the gateway message. Do not rely on an unofficial numeric-code list when the returned message names the failing field.
Common eTIMS Rejection Reasons & Fixes
Non-000 result
WHAT IT MEANS
KRA did not accept the transaction. The numeric code alone is not enough to diagnose every response.
HOW TO FIX
Keep the complete response and read resultMsg or the gateway customer message. Fix the field or sequence the message identifies; do not assign a meaning to an undocumented code by guesswork.
Invalid dcAmt — expected 2000.00, found 1960.00
WHAT IT MEANS
KRA recalculated the item's discount amount from the gross line value and the submitted dcAmt did not match that calculation.
HOW TO FIX
For a tax-inclusive line, calculate gross = qty × prc, then dcAmt = gross × dcRt ÷ 100. Round money consistently to two decimals. Set splyAmt = gross − dcAmt and derive the taxable amount, tax, line total, and invoice totals from that same discounted amount.
Buyer PIN mismatch
WHAT IT MEANS
The custTin (buyer's KRA PIN) doesn't match the custNm (buyer's name) in KRA's records.
HOW TO FIX
Ask your buyer to confirm their exact registered business name on iTax. Use that name verbatim, or leave custTin blank if you don't know their PIN.
Invoice number already exists
WHAT IT MEANS
The invcNo you're submitting has already been successfully submitted.
HOW TO FIX
Do not submit another sale blindly. Verify the transaction on KRA and retrieve its receipt metadata. If no accepted receipt can be recovered, escalate through your integrator or KRA support before deciding whether a new sequence number is required.
Date format error
WHAT IT MEANS
KRA's date format is strict: YYYYMMDDHHmmss (e.g. 20260317143000). Any variation is rejected.
HOW TO FIX
Ensure salesDt and cfmDt use the exact 14-character format with no dashes, slashes, or spaces. Risiti formats dates automatically.
Invalid tax type code
WHAT IT MEANS
The taxTyCd value isn't one of KRA's accepted codes.
HOW TO FIX
Use: A (Exempt/0%), B (VAT 16%), C (Zero-rated 0%), D (Non-VAT registered), or E (8% reduced VAT). Don't leave blank or use custom codes.
Totals don't add up
WHAT IT MEANS
KRA validates that item totals sum correctly to the invoice totals. Any mismatch causes rejection.
HOW TO FIX
Ensure totAmt = sum of all item totAmt. Ensure totTaxAmt = sum of all item taxAmt. Ensure totTaxblAmt = sum of all item taxblAmt. Rounding differences matter — use consistent rounding.
OSCU not initialized / cmcKey invalid
WHAT IT MEANS
Your device hasn't completed OSCU initialization, or the communication key has expired/changed.
HOW TO FIX
Re-run OSCU initialization (selectInitOsdcInfo). If you recently migrated platforms, re-initialize with the new system.
API timeout / network error
WHAT IT MEANS
Not a KRA rejection — a connection failure. KRA's API was unreachable when the invoice was submitted.
HOW TO FIX
Retry the submission. Risiti retries failed submissions automatically. If manually managing, wait and resubmit using the same invoice number.
How to Resubmit a Rejected eTIMS Invoice
Resubmission is straightforward:
- 1. Find the failed invoice in your eTIMS platform. On Risiti, failed invoices show with a red "Failed" badge.
- 2. Read the error message — Risiti shows the KRA resultMsg translated into plain English.
- 3. Edit the specific field that caused the rejection.
- 4. Check acceptance before retrying — if KRA already holds the sale, recover its receipt instead of submitting a duplicate. If validation failed before acceptance, use the platform's retry workflow.
- 5. Confirm a "000" response — you'll see a KRA invoice number and QR code once successful.
Important: Don't create duplicate invoice numbers
Each KRA invoice sequence value must be unique. An "already exists" response is a reconciliation signal, not permission to assume success. Confirm the original transaction and receipt details in KRA before issuing a PDF or changing the sequence.
Preventing Rejections
The most rejection-proof setup:
- Use a validated eTIMS platform — Risiti validates invoice data before sending to KRA, catching most errors client-side.
- Pre-register your items — saved items in your catalogue always have correct tax codes. No manual entry, no typos.
- Leave custTin blank if you don't know the buyer's exact registered name — a blank PIN is accepted. A wrong PIN causes rejection.
- Don't manually enter dates — let your platform handle date formatting automatically.
- Enable auto-retry — network errors are temporary. Risiti retries failed submissions automatically so you don't have to monitor each one.
Frequently Asked Questions
Why is my eTIMS invoice being rejected by KRA?
Common reasons include: incorrect or inactive KRA PIN, mismatched buyer PIN and name, wrong tax type code, missing required fields, or invalid date format. Check the resultCd and resultMsg in the API response for the specific error.
What does Invalid dcAmt mean on an eTIMS invoice?
KRA recalculated the discount for an item and the amount sent in dcAmt did not match. Calculate the discount from qty × unit price, apply one consistent rounding rule, and rebuild the supply, tax, and total fields from the discounted amount.
Can I resubmit a rejected eTIMS invoice?
First check whether KRA accepted the original sale. Retry only when it was rejected before acceptance. If it was accepted, recover the receipt; if it needs correction, use the supported credit-note workflow.
Does a rejected eTIMS invoice count as non-compliant?
A failed submission that you fix and resubmit is fine — the final successful submission is what matters. However, if you never resubmit a failed invoice, that transaction is not on KRA's records, which is non-compliant.
What if KRA's API is down and my invoices can't be submitted?
Keep the invoice pending and reconcile its KRA status before retrying. Do not send the buyer a final tax receipt until KRA acceptance and receipt metadata are confirmed. Risiti queues temporary failures and checks the outcome before presenting a submitted receipt.