The core of the product

The validation gate

Most tools show what the model guessed. We check the math first. Checksums, HSN, does it add up. The entry has to earn its place.

Nothing wrong reaches Tally. Try it.

Most tools show a guess. We check it. Checksums. Directory. Does the math on the page add up.

Below is a real invoice from the test corpus. Pick a scenario and run the gates.

Press “Run the gates” to validate invoice INV/2025/1042.
A failed invoice is never exported. It waits in the review queue with the scan and the reason.

The four gates

Each gate is cheap to run and expensive to fool. Together they make wrong entries provably unlikely instead of probably rare.

GSTIN mod-36 checksum

A GSTIN’s fifteenth character is a check digit computed over the first fourteen. Transposed digits, O-vs-0 swaps and scanner misreads break it predictably, which is exactly what you want from a gate: cheap to verify, hard to pass by luck.

seller + buyercatches digit misreads

HSN directory

Every line’s HSN code is checked for format and membership in the directory, so line items name goods that actually exist under the code the scan claims.

formatdirectory membership

Arithmetic closure

Line items must sum to taxable value; taxable value times rate must equal the taxes; taxes plus taxable must equal the grand total. If the invoice’s own math closes, the numbers are almost certainly read right.

lines → taxabletaxable → taxestotal closes

Regime consistency

Place of supply decides CGST plus SGST versus IGST. Intra-state invoices claiming IGST, or the reverse, stop at the gate instead of your books.

place of supplyCGST / SGST vs IGST

When something fails, your operator sees this

Only failures reach a human. The scan sits beside the extracted fields, the failing check is highlighted, and a fix is usually a single keystroke. Everything confirmed is logged against the invoice.

This preview is live: the scanner misread one character of the seller's GSTIN. Correct it and watch the checksum gate flip to green.

10-20stypical operator time per flagged invoice
0unvalidated entries that can reach Tally
Review queue / Kaveri Tools / KT/25-26/769
Scanned invoice under review Verified
invoice_noKT/25-26/769
invoice_date17/11/2025
total_value₹21,340.00
checksum failed: got ‘G’, expected ‘6’ possible 6↔G misread

fix the GSTIN above; the checksum gate re-runs as you type

Try it: change G to 6 in the GSTIN field.

Every field carries its evidence

Each exported entry carries the scan crop it came from, the validator results, and who confirmed what, if anyone did. When a GST notice arrives, the answer is a one-page trail per invoice, not an afternoon in filing cabinets.

10-20stypical operator time per flagged invoice
0unvalidated entries that can reach Tally
1 pageaudit trail per invoice, produced automatically
NextThe gate is only half the story. The other half is how it behaves on scans that are genuinely terrible.See the accuracy evidence