Skip to main content
Troubleshooting7 min read · Verified July 2026

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. 1. Find the failed invoice in your eTIMS platform. On Risiti, failed invoices show with a red "Failed" badge.
  2. 2. Read the error message — Risiti shows the KRA resultMsg translated into plain English.
  3. 3. Edit the specific field that caused the rejection.
  4. 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. 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.

Official references

Register on Risiti. Create the invoice. Send the receipt.

Turn this guide into action: create your account with phone OTP, complete KRA onboarding, then add the buyer and items and submit your first invoice.

Register with your phone number and verify the OTP.

Complete your business and KRA onboarding details.

Create the invoice, submit it, then share the accepted receipt.