Blog/Tally workflow
Twelve columns, one file, zero cost

Build the register your CA will hug.

An auditor asked for the purchase register. The clerk opened twelve browser tabs. Somewhere there is a single file that answers every question he will ask. Let us build it together, column by column.

The twelve-tab answer

Scrutiny, Tuesday, 11 am. The officer asks for the purchase register for March. Your clerk opens Tally, then the GST portal, then a folder of scans, then a spreadsheet from February that somebody renamed final-final. Twelve tabs, four windows, one sweating clerk. The officer waits. Every minute of that wait is interest on an impression, and impressions compound.

Now the same Tuesday with a register: one CSV, twelve columns, every March purchase on one screen, filterable, with the 2B status sitting next to each line like a chaperone. The officer asks, the clerk filters, the answer arrives before the question finishes. I have watched both Tuesdays. The difference was never the quality of the books. It was one file.

So let us build it. Not as a lecture, as a build. I will lay each column and tell you which audit question pays for it. At the end there is a CSV template to take, twelve headers, three synthetic example rows, no signup. Rename the columns if your CA prefers different words. The shape is what matters.

Columns 1–5: which bill

Identity first. invoice_no and invoice_date sound too obvious to mention, which is exactly why mismatched ones cause half of all recon pain. The invoice date decides the financial year, the 16(4) clock, everything downstream. Key it wrong and the line lands in the wrong year wearing the right numbers. See invoice date vs FY for the full horror.

supplier_name as Tally spells it, not as the invoice spells it. Your vendor mapping discipline lives or dies here. Then supplier_gstin, all fifteen characters, because this column is what you diff against 2B, what IMS matches on, and what your checksum proved at entry. A register without GSTINs is a phone book without numbers. Finally narration at the far end, short, naming anything unusual: short supply, debit note linked, RCM self-invoice raised. Future-you reads narrations. Write for them.

Columns 6–9: which money

Now the money, split the way GST thinks, not the way the bill prints. taxable_value first, then cgst, sgst, igst as four separate columns. Never one tax column. The split is what lets you filter inter-state versus intra-state in one click, what the officer's sampling checks first, and what breaks visibly when a line is wrong instead of hiding inside a total.

Add invoice_total as the checksum of the row: taxable plus the three taxes must equal it, and a spreadsheet formula enforcing that is a free arithmetic gate on every line. Our validator holds ₹1 on extracted documents. Your register holds exact on keyed ones. Between the two, no total survives being wrong.

One row, read three waysFrom the template's synthetic example
INV/2026/0314 · 14 Mar · Shree Balaji Steels
identity: which bill, from whom
4,80,000 + 43,200 + 43,200 + 0 = 5,66,400 ✓
money: the split closes to the total
2B matched · ITC Mar 2026
credit: claimable, claimed, closed

Three readings, one row. An auditor follows the same path: what, how much, so what.

Columns 10–12: which credit

This is the part most registers skip, and it is the part that earns the hug. gstr2b_status per line: matched, pending-chase, rejected-fix. Updated monthly from the portal, in the exact language of our 2B checklist. A register with this column is a chase list that maintains itself. One without it is a history book.

itc_month records when the credit was actually claimed, because the month of the invoice and the month of the claim routinely differ, and the difference is where pending IMS lines go to be found. Leave it blank and the line is unclaimed. Filter blanks monthly and your October playbook writes itself.

Twelve columns. Five for identity, four for money, three for credit. Nothing decorative, nothing missing. Every column answers a question someone will ask, which is the only test a column needs to pass.

Take the file

Download the CSV template: twelve headers, three synthetic example rows showing a matched line, a pending-chase line, and an inter-state line. The GSTINs in it are fixtures from our own test corpus and invented examples, good for shape, useless for filing. Replace with yours.

Use it as the working copy all month: sort by 2B status on Fridays, filter blanks in itc_month before 3B, freeze a copy with the month name when you close. Tally remains the truth. The portal remains the proof. This file is the bridge your clerk walks daily, and bridges get maintained or they collapse. Maintain this one and the twelve-tab Tuesday never happens to you.

The monthly close itself deserves its thirty minutes, same Friday as the IMS hour so the two halves meet. Pull 2B, update every status cell, chase the pending-chase lines oldest first, confirm the blanks in itc_month are genuinely unclaimable rather than merely unentered, then freeze and name the copy. March-2026-final is a promise. March-2026-final-v2 is a confession. Close once, close properly, and let the frozen file be the one the officer opens.

Sources
Frequently asked questions
What columns does a purchase register need?+

Invoice identity, supplier identity, the money split four ways, 2B status, ITC month. Twelve columns cover it. Each one answers a specific question an auditor will ask.

Excel or Tally reports?+

Both, for different jobs. Tally holds the truth. The CSV is the working copy you sort, filter, and chase from all month. One does not replace the other.

How often should the register close?+

Monthly, against 2B, before 3B. Closed quarterly it is archaeology. Closed monthly it is a control, and controls compound.

Is the template free?+

Yes. One CSV, twelve columns, three synthetic rows, no signup. Take it, rename what your CA dislikes, and start this month's close with it.

Fill the register with clean lines

Upload a scanned invoice. Watch the checks decide, then key a row you can trust. Five runs, no signup.