All articlesTally

TallyPrime vs Tally ERP 9: What Actually Changes When You Import

The dangerous difference between Tally versions is not that older ones reject things. It is that they accept the voucher and silently drop the parts they do not understand.

Ajay Suryawanshi10 min read- views
TallyPrime vs Tally ERP 9: What Actually Changes When You Import

"Works with all versions of Tally" is claimed by nearly every tool in this category, and it is worth understanding what the claim has to survive.

It is not two versions. In practice there are four families still in daily use across Indian practices: TallyPrime 3.0 and later, TallyPrime 1.x to 2.x, Tally.ERP 9 across its releases, and the pre-ERP generation of Tally 9 and earlier. They do not accept the same voucher XML, and the way they disagree is the part that costs people money.

The failure mode nobody warns you about

Here is the thing that matters most, and it is counter-intuitive.

An older Tally does not reject an element it has never heard of. It accepts the voucher and drops the element.

So a voucher built for TallyPrime 3 and posted into Tally.ERP 9 comes back reporting success. The voucher is created. The date is right, the amount is right, and something inside it, possibly the GST registration details or the bank allocation block, was quietly discarded on the way in.

Nothing in the response tells you. There is no warning, no partial-success flag, no count that differs. Every version incompatibility in this area is silent, which means you find it weeks later when a return does not tie, and by then it looks like a data problem rather than an import problem.

Important

This is why "it imported fine" is not evidence that it imported correctly. A success response from Tally confirms that a voucher was created. It says nothing about whether the voucher that was created is the one you sent.

What we measured

Rather than assume, we tested it: send a deliberately maximal voucher carrying every element we could attach, export it straight back out of Tally, and diff the two. Whatever went missing is what that version silently discarded.

Across 47 elements, three versions measured in August 2026:

  • TallyPrime 7.0 kept 43 of 47. It is the only family that takes the nested GST registration block, the mailing-details block and reporting-UQC details, which is eleven elements the others drop.
  • TallyPrime 2.1 kept 32 of 47. Its one gain over ERP 9 is the voucher entry mode element.
  • Tally.ERP 9 6.6.3 kept 31 of 47, the baseline.

The specific things that differ

If you are debugging an import that "worked" but produced something wrong, these are the elements where the families genuinely diverge, and they are worth knowing by name.

The UDF namespace declaration. The bank allocations block, which carries cheque and transfer detail. The persisted view and voucher entry mode elements. Old audit entry references. And the two that cause the most confusion in practice: GST registration details, which newer versions expect as a nested block and older ones expect as a flat party GSTIN field, and unit-of-measure reporting, which is a full reporting-UQC block in TallyPrime and a bare UQC name in older releases.

GST and UQC are the ones that hurt, because they are the elements most likely to be wrong in a way that surfaces at filing rather than at import.

Pro tip

If you are on ERP 9 and a GST figure looks wrong after an import, suspect the shape of the GST block before you suspect the data. A nested block sent to a version expecting a flat field does not error. It just does not arrive.

Guessing at this does not work

A short confession, because it is the useful part of this article.

Before measuring, we predicted which elements each version would accept. Across the two older families, six of twelve predicted flags were wrong. TallyPrime 3 was the only family where every guess happened to be right, which in hindsight is unsurprising: it was the version being developed against.

There was also a caveat in our own notes warning that one element behaved non-monotonically across versions and must never be "tidied up" to look ordered. When it was finally measured, that turned out to be untrue. It had never been tested; it just sounded plausible.

The lesson generalises past Tally: a confident-sounding caveat is still a guess unless it cites a measurement. In this particular area guesses are especially expensive, because the failure is silent and you will not be told you were wrong.

What this means when choosing a tool

If a practice runs more than one Tally version, and many do because clients run what they run, then version handling is not a footnote.

Questions worth asking any vendor:

  1. Which Tally families have you actually tested against, and when? "All versions" is not an answer.
  2. Do you detect the version and change the XML you build, or send one shape to everything and rely on Tally to cope?
  3. What happens to GST details on an older version? This is the single most common place for silent loss.
  4. How would I know if something was dropped? If the answer is that Tally reports success, that is the problem being described.

How Greenote handles it

Greenote detects which family it is talking to and builds the voucher for that family, rather than sending one maximal shape and hoping. Elements a version cannot take are not sent to it, so nothing is discarded on arrival and what you review is what lands.

The capability table behind that is derived from the round-trip measurements above rather than from documentation, which is the only reason it is trustworthy. Where a family has not been measured, it is marked as unmeasured rather than assumed, and the pre-ERP generation is currently in that category. We would rather say so than claim coverage we have not proved.

That is also why re-running an import is safe: Greenote sets a stable identifier per voucher, so a second run updates the existing voucher rather than creating a twin. More on that in what each Tally import error means.

Conclusion

The real difference between TallyPrime and Tally.ERP 9 is not a feature list. It is that the older version fails quietly, accepting your voucher and dropping what it does not recognise, while telling you everything went well.

So the useful question about any tool is not whether it supports your version. It is whether it knows which version it is talking to, and whether anyone has measured what that version actually keeps.

See the seven voucher types Greenote builds, or how a full statement reaches Tally.

Start a free trial and test it against the Tally you actually run.

tally prime vs erp 9tally prime vs tally erp 9 differencestally erp 9 xml importtally version compatibilitytally prime migration
Offline, on your PC

Turn bank statements into Tally vouchers offline

Greenote reads 100+ Indian banks and posts clean vouchers straight into Tally, fully on your PC. No uploads, no cloud, no manual entry.

7-day free trial, no card required. Works with Tally Prime & ERP 9.

Share this article