A real double-entry ledger
Chart of accounts, balanced posting and a recomputed trial balance. Money is integer minor units beside a currency, never a float. No PATCH or DELETE — ever.
Works todayAvailable now
In build
The whole team
Nineteen specialists, each with a defined job and an honest status label.
See all nineteen“Every year my CA asks for 'the books', and every year I hand over a folder of PDFs, a loose spreadsheet and a promise that the rest is coming.”
The books are never actually in a state a CA can start from. A spreadsheet isn't double-entry, nobody can say what changed between two versions of the same file, the bank statement was never actually checked against what got recorded, and half the receipts exist only as a WhatsApp photo somebody meant to file properly. None of that is dishonesty — it's just what happens when bookkeeping is a September problem instead of a daily one.
Read this first
Khata gets your books into a state your accountant can review — and stops there. Under s.26 of the Chartered Accountants Act, only an ICAI member may sign off in a professional capacity, so the handoff's status field has no value meaning certified, signed off or filed. That isn't a missing feature. There is no value to write, now or after a later change.
How it works
Three steps, and the third one stops at exactly the point the law reserves for a person with a CA's letters after their name.
Photograph a receipt, forward an invoice, or paste text from one — Khata keeps the source attached to whatever it extracted, so your CA can always check the original. A duplicate is caught by checksum before it becomes two expenses. Nothing here decides what's deductible; that stays your CA's call.
A confirmed document posts to a real double-entry ledger — debits and credits balanced automatically, money as integer paise beside its currency, never a float. Every write is logged append-only with who changed what and when, and the log itself cannot be edited or turned off by anyone, including an admin.
Reconcile the bank, lock the period so nothing can change silently underneath the CA, and send a handoff pack carrying a stored trial-balance snapshot. The CA reviews, comments, or asks for changes — and Khata's own state stops exactly there.
This is the shop whose books need keeping — not a spreadsheet template, a real counter with real receipts.
The books, actually
A chart of accounts, balanced posting on every confirmed transaction, and a trial balance recomputed live. There is no PATCH or DELETE on the ledger at all — a mistake doesn't get erased, it gets a new linked entry that reverses and restates it, so the original is never lost.
Match the bank
Bank lines are compared against the ledger and scored for a likely match, but nothing reconciles itself — a person confirms or rejects every suggestion. Whatever doesn't match stays visible in full, because a reconciliation that quietly drops the hard cases isn't one your CA can trust.
Lock the period
Once a period is closed, nothing can silently change underneath your CA while they review it. Reopening one is a separate, deliberate action that needs a stated reason — and that reason is itself counted and logged.
Hand off
The handoff carries a stored trial-balance snapshot and everything outstanding, moving through prepared, sent to accountant, changes requested or withdrawn. There is no "certified" or "filed" state Khata can set for you — that happens on your accountant's own letterhead.
What it does
Each label is derived from the backend's own capability module — not written on this page.
Chart of accounts, balanced posting and a recomputed trial balance. Money is integer minor units beside a currency, never a float. No PATCH or DELETE — ever.
Works todayEvery mutating handler writes an append-only entry with actor, action, entity and detail. The only public surface is a GET — nothing writes, edits or deletes the log.
Works todayA closed period refuses every write; reopening needs a stated, audited reason. A standard year-end task set generates automatically per fiscal year, and every entry posted after a reopen is surfaced as a flagged exception — computed fresh from the ledger, not a checklist that could itself go stale.
Works todayA generic CSV parser — you name your own column headers — closes the format-variation gap with no credential, alongside re-import dedupe, scored suggestions, human-confirmed matching, and an unmatched remainder that's always returned in full. A PDF or Excel export still needs a manual CSV re-export; a live aggregator feed isn't built.
Works todayPresigned upload, bulk registration with per-item duplicate reporting, and checksum dedup all run today — metadata-only capture needs no credential. Storing the original file needs object-storage keys; a signature-verified inbound-email intake needs its own webhook secret and provider. Neither is set on this deployment.
Needs a keyReading supplied text is real today, with vendor-name aliasing that reconciles a spelling variant and a low-confidence queue that surfaces a shaky read before anyone flags it — released to the books only after a person confirms. Reading a scanned image still needs a DOCAI_OCR_API_KEY this deployment hasn't set.
Needs a keyPriority-ordered vendor and narration rules suggest an account and explain the match. With no rule, it falls back to how this exact vendor was categorised before — read straight from the audit trail, named vendor_history rather than a hidden model — and returns nothing rather than a guess when history has none either.
Works todayThe handoff pack carries a stored trial-balance snapshot and everything outstanding, and an invitation, its acceptance, comments and change requests all work today, hitting the audit trail like any other action — the invitation can be accepted by direct link either way. Actually emailing that invitation needs a ZeptoMail key this deployment hasn't set.
Needs a keyStill needed
Every 'needs a key' label on this page traces to one of these — never a vague 'coming soon'.
Building the checklist and tracking which item is attached both work locally — an item's status means presence only, never quality, so the actual review still happens on the document itself. Sending the reminder needs the same ZeptoMail keys the accountant workspace's own invitation needs; every skipped reminder is reported by item, never silently dropped.
Cadence, a per-customer pause and a wording guard that refuses any stated legal or collections threat all run locally, and every reminder due is logged before it ever tries to send. Actually sending needs a connected WhatsApp Business number or an SMS gateway, neither present on this deployment — a skipped send is marked failed with a named reason, never silently assumed to have gone out.
Not sure which one
All three touch money, and from outside it will not be obvious which to open first. This page will not pretend the line between them is cleaner than it is.
Running the business day to day — what you're owed, what you owe, a forecast, a budget. This is operational cash flow, not the books themselves.
The actual double-entry ledger, kept in a state your accountant can review. Khata does not replace your CA — it stops at handing the CA a reviewable pack.
Read-only banking information pulled from your own accounts with your consent — statements, balances, a loan-readiness checklist. It cannot move money and is not a lender.
There is an open question inside the product about whether Laxmi and Khata eventually merge into one ledger. They are not there yet, and building as if they already had would be its own kind of dishonesty.
Before you switch
Tell us what your CA usually has to chase you for, and we'll tell you plainly what Khata can carry today — and where it stops.
Questions
Khata gets your books into a state your accountant can review — and stops there. Under s.26 of the Chartered Accountants Act, only an ICAI member may sign off in a professional capacity, so the handoff's status field has no value meaning certified, signed off or filed. That isn't a missing feature. There is no value to write, now or after a later change.
No. There is no PATCH or DELETE on the ledger at all. A mistake is corrected by posting a new entry linked to the one it fixes, so the original stays visible and your CA can see exactly what changed and when — not just the final, edited number.
It stays visible. Reconciliation proposes matches for a person to confirm or reject, and whatever is left unmatched is returned in full every time — never quietly dropped because most of the statement matched fine.
No. Every creation, edit and deletion touching the books writes an append-only entry with the actor, the timestamp, the old value and the new value. There is no route, flag or admin action that disables, edits or deletes that log — that is a hard requirement of the log itself, not a permission somebody could grant.
No. Category suggestions are a time-saving draft based on how similar vendors were categorised before — they never carry a tax determination. Whether an expense is deductible, and how it should be treated, stays your CA's call when they review the prepared books.
All three touch money, and from outside it will not be obvious which to open first. This page will not pretend the line between them is cleaner than it is. Laxmi: Running the business day to day — what you're owed, what you owe, a forecast, a budget. This is operational cash flow, not the books themselves. Khata: The actual double-entry ledger, kept in a state your accountant can review. Khata does not replace your CA — it stops at handing the CA a reviewable pack. Dena: Read-only banking information pulled from your own accounts with your consent — statements, balances, a loan-readiness checklist. It cannot move money and is not a lender.
Only through a deliberate reopen action that requires a stated reason — and that reopen is itself counted and written to the audit trail as a flagged exception. A closed period refuses a silent write; there is no admin override that bypasses it.