Six steps. The import itself runs as a background job — the rest is you reviewing what we found. If it doesn’t land cleanly, we get on a call and finish it with you.

triam · migrateexample
tally-fy26.xml18 MB
import0%
·parse vouchers
·map ledgers → coa
·validate Dr = Cr
·post journals
✓migrated · journal balanced · Dr = Cr
$triam migrate --watch
0
guided steps
free preview before import
0 MB
max upload
Tally XML or Excel export
0
categories migrated
COA to recon history
0
importer tests
parse → validate → import
chart of accountsopening balancesvendorscustomersproductsinvoicesbillsbank ledgersrecon history
illustrative · what the parser does

XML in. Journal out.

The same pipeline runs on your file — parse, resolve, map, validate, post. We refuse to import if Dr ≠ Cr.

tally-export.xml0 / 622 B
<TALLYMESSAGE>
  <VOUCHER VCHTYPE="Sales" ACTION="Create">
    <DATE>20260315</DATE>
    <VOUCHERNUMBER>INV-1042</VOUCHERNUMBER>
    <PARTYLEDGERNAME>Tefty Organics</PARTYLEDGERNAME>
    <ALLLEDGERENTRIES.LIST>
      <LEDGERNAME>Tefty Organics</LEDGERNAME>
      <AMOUNT>-118000.00</AMOUNT>
    </ALLLEDGERENTRIES.LIST>
    <ALLLEDGERENTRIES.LIST>
      <LEDGERNAME>Sales · Services</LEDGERNAME>
      <AMOUNT>100000.00</AMOUNT>
    </ALLLEDGERENTRIES.LIST>
    <ALLLEDGERENTRIES.LIST>
      <LEDGERNAME>Output IGST 18%</LEDGERNAME>
      <AMOUNT>18000.00</AMOUNT>
    </ALLLEDGERENTRIES.LIST>
  </VOUCHER>
</TALLYMESSAGE>
parser → mapper → poster
triam.ledger · journal #4831double-entry
AccountDrCr
1200 AR · Tefty Organics₹1,18,000—
4000 Revenue · Services—₹1,00,000
2200 GST Output · IGST—₹18,000
✓ balancedTotal₹1,18,000₹1,18,000
what gets migrated

Ten categories. Nothing left behind.

Masters, transactions and history — with the checks that make them trustworthy.

general ledger

Chart of Accounts

Full GL hierarchy. We map your Tally groups to our 3-level COA. You confirm the mapping before commit.
Sundry Debtors1200 AR · Trade
day zero

Opening balances

GL opening balances on your migration date. Per-account, balanced before commit. We refuse to import if Dr ≠ Cr.
Dr = Cr enforced
masters

Customers & Vendors

Master data with GSTIN, PAN, billing/shipping addresses, payment terms. Duplicate detection on GSTIN.
masters

Products & Services

SKU, UOM, HSN, rates. UOM conversions if your Tally has them.
payables

Bills (AP)

Purchase vouchers. ITC reverse-mapped where Tally tracked it.
receivables

Invoices (AR)

Full sales vouchers with line items, taxes (CGST/SGST/IGST), HSN, narration. PDF re-renderable in Triam.
sales voucherPDF re-renderable ✓
CGSTSGSTIGSTHSNnarration
banking

Bank & cash transactions

Receipt / Payment / Contra vouchers. UTR preserved where present for re-reconciliation.
UTR preserved
journals

Journal entries

Manual JEs including reversal entries, depreciation, accruals.
recon

Reconciliation history

Tally bank-clearing dates carried over so your historic recon doesn’t get re-opened.
clearing dates carried
structure

One company file at a time

Each Tally company file is imported on its own, with its own mapping. Anything that doesn’t map cleanly is flagged in the preview.
the six steps

What you actually do.

You review at every gate. Nothing commits until the preview looks right — and the preview is free.

  1. 01

    Upload your Tally XML

    you · drag-drop

    Export → XML from Tally (Gateway → Display More Reports → Export). Drag-drop into Triam. Files up to 25 MB.

  2. 02

    Master data preview

    you · skim

    We parse the file, show you the master objects we found: COA, vendors, customers, products. You skim and approve scope.

  3. 03

    COA mapping

    auto + you

    We auto-map common Tally groups (Sundry Debtors → 1200 AR · Trade, etc.). You review and adjust anything custom. Save mapping for future runs.

  4. 04

    Mapping review

    pre-flight

    Final cross-check. Mismatches highlighted. Pre-flight validators run: balanced opening, GL existence, HSN sanity.

  5. 05

    Transaction preview

    free

    See what will be imported, with counts per voucher type. Spot anything wrong here, fix the mapping, re-run preview. Free.

  6. 06

    Migrate

    background job

    Background job runs, with progress shown as it goes. Errors logged per-row with retry. How long it takes depends on file size.

common gotchas

What usually goes wrong with Tally migrations.

Tally patterns that commonly trip up a migration — and how each one is handled.

hsn codes
in tally

Inconsistent HSN codes across the same product — Tally allows it.

in triam

Flagged during preview. You pick the canonical code once.

opening balance
in tally

Opening balance carried as a single ledger entry that doesn’t balance against prior P&L.

in triam

The import refuses Dr ≠ Cr and shows which accounts are off.

fy closures
in tally

Multi-fiscal-year files with year-end closure entries that depend on each other.

in triam

We replay them in order, earliest opening balance first.

gstin
in tally

Vendors created with no GSTIN that later got one.

in triam

Flagged in the preview so you can fix the master before import.

bank recon
in tally

Bank ledgers without UTR — only cheque numbers.

in triam

We review it with you during the walkthrough.

tds
in tally

TDS tracked via the narration field rather than a statutory ledger.

in triam

We review it with you and map it to a proper TDS ledger.

tdl
in tally

Custom TDL reports and voucher types that only exist in Tally.

in triam

They don’t migrate — we recommend Triam equivalents during the walkthrough.

reverse charge
in tally

Reverse-charge GST entries split across multiple JEs.

in triam

We review it with you during the walkthrough.

questions CAs ask

Migration FAQ.

how long it takeshonest answer

It depends on the size of your file and how much of your chart of accounts needs manual mapping. We won’t guess a number here.

We’ll walk through yours with you after the free preview step — no commitment.

migration desk

Send your Tally XML and we’ll send back a mapping preview — no commitment.

tech@triam.aicopy