The Tally endpoints let your own tools read a batch of TallyPrime vouchers, see exactly what landing them would do, and commit — or take the whole run back. They live under /api/v1/tally/* and carry their own scopes, tally:read and tally:write, so a key you issue for this can do nothing else in the workspace.
The full endpoint table, with the scope each one actually enforces, is on the Tally API page — it is generated from the API reference this deployment serves, so it cannot describe a route that no longer exists.
What can I build today, and what is not ready?
Ready: the file lane. You post the XML a human exported from TallyPrime, read the plan back, and commit it. Mapping, review, commit and rollback are all reachable over the API.
Not ready: the Windows connector. Its protocol is written and tested — the agent endpoints exist and are documented — but there is no download. The release repository has not been created, the in-Tally button needs a paid TallyPrime Developer licence to compile, and the installer is not code-signed. Nothing in this module has yet run against a licensed TallyPrime. Build against the file lane; the agent endpoints will not change shape when the connector ships, but do not plan a launch around them.
How does a sync actually run?
- Create a run with the payload. This writes nothing to the books — it parses, plans and stores.
- Read the plan. It tells you what would land, what is parked waiting on a ledger nobody has mapped, and what is refused with the reason.
- Commit with an explicit confirmation. A run that is not awaiting review cannot be committed at all, and a plan that has gone stale since it was read is refused rather than applied.
- Roll back if it was wrong. The plan that runs is the one rehearsed when the run was committed, not one worked out afterwards against a database somebody has since edited.
Why does a synced invoice not move my trial balance?
Because it already did, through its journal. Every synced voucher lands twice: once as a journal on the exact Tally ledgers, so the trial balance ties to the paisa, and once as an invoice, expense or payment so ageing, GST and PDFs work — with that second copy's posting suppressed. If you total synced documents and expect them to reach the ledger, you will double-count. Read the provenance on the row.
Why did my whole voucher park instead of landing partly?
A voucher touching a Tally ledger with no Finocket counterpart parks whole. Landing the half we understood would put real money in the wrong place and balance the entry with something we guessed. Answer the mapping queue and the run that is already waiting lands it — you do not upload anything again.
What will the API refuse outright?
- Anything dated on or before the books start date. Those figures are already inside the opening balances the cut-over brought across. It is refused in the planner and again in the committer, and no flag turns it off.
- Pushing a document that came from Tally. Provenance is the loop guard; a synced document is never sent back.
- Committing without an explicit confirmation, or committing a plan that has changed since it was reviewed.
How do I tell a failed sync from a successful one?
By the run's own status, never by an HTTP code. An HTTP 200 from Tally does not mean an import worked — Tally answers 200 while reporting per-line errors — so results carry Tally's error text word for word, per voucher. Forward that text as it stands; rewriting it loses the detail that identifies the problem.
A run that landed rows but could not store its rollback plan reports failed, not completed. The books are correct and every row is in the run's write log — but the one-action undo is not available for it, and that is not something you could discover from a success.
What can a connector key do?
Exactly two things: take Tally work and send results back. It is shown once at creation and only a fingerprint is kept. Pairing is owner-only, because pairing lets a machine post into the books.
Related: Developers — API keys, webhooks, OAuth, Two-way Tally sync, When a Tally sync will not run, Undo a Tally sync.
