A company with registrations in three states does not have one GSTR-2B problem; it has three, and they interact. ITC is tied to the registered person the invoice is communicated to and to that person's GSTR-2B, so credit that lands in another GSTIN's 2B is not credit in yours. The mistakes that cost money are therefore the ones that move an invoice between GSTINs, and they only show up when the runs are put side by side.
This page is one part of our GSTR-2B reconciliation guide, which shows how the whole process fits together.
This guide covers the setup, the consolidation sheet, the cross-GSTIN test and a worked three-state example. The legal side of branch transfers and ISD is in the multi-GSTIN and branch transfer guide; here the focus is the monthly working method.
Set up: one run per GSTIN, files named so they cannot be mixed
- Download every GSTIN's GSTR-2B for the same period. Each registration has its own statement, generated on the 14th of the following month for monthly filers. The download steps are in the Excel download guide; the full-year guide helps when you are catching up. The portal's Excel holds B2B, B2BA, CDNR and CDNRA.
- Export one purchase register per GSTIN. However your ERP separates branches, whether by company, branch or godown, the export must contain only that GSTIN's purchases. Export steps are in the guides for Tally Prime, Busy, Marg and Zoho Books.
- Name every file with your own GSTIN and the period. For example GSTR2B_27AAAPT1234C1Z5_092026.xlsx and REG_27AAAPT1234C1Z5_092026.xlsx (dummy GSTIN). Rename the portal download as soon as you save it; a folder of six files all called "GSTR2B" is how a Karnataka register gets matched against a Gujarat 2B.
- Keep a due-date column per GSTIN. Monthly filers file GSTR-3B by the 20th; quarterly filers by the 22nd or 24th depending on the state. If your GSTINs are not all on the same schedule, the same calendar day means different things for different entities.
The consolidation sheet
Use one workbook with a Data sheet and a Summary sheet. Paste each GSTIN's result under the last one. Keep the result's own columns in their original order and add your columns on the left and right.
| Column | Heading | Comes from |
|---|---|---|
| A, B | Our GSTIN, Period | You type them for every pasted block |
| C to L | Bucket, GSTIN, Supplier, Invoice No, Date, Taxable (Books), Tax (Books), Tax (2B), Diff, Note | The result CSV, unchanged. The GSTIN column here is the supplier's. |
| M | Key | Formula (below) |
| N | Twin count | Formula (below) |
| O, P | Owner, Status | You: who chases it, and open or closed |
The Key puts the supplier GSTIN and a cleaned invoice number in one cell, so the same document can be recognised whichever register or statement it came from. In M2 use =D2&"|"&UPPER(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(F2,"/",""),"-","")," ","")). This mirrors what a matcher must do with invoice numbers: ignore case, slashes, hyphens and spaces, which is why number formats decide most matches. Rule 46(b) allows numbers of up to 16 characters made of letters, digits, hyphen and slash, so all of those need handling. The tool also drops leading zeros; if a supplier numbers its invoices in digits only, strip the zeros in the Key as well, or a twin will be missed when only the zeros differ.
The Twin count asks: does this key appear under another of my GSTINs? In N2 use =COUNTIFS(M:M,M2,A:A,"<>"&A2). Filter N greater than 0 and you have every document that appears in two of your entities.
On the Summary sheet, one line per GSTIN and one column per bucket, using SUMIFS, for example the at-risk figure for the GSTIN in A2: =SUMIFS(Data!I:I,Data!A:A,$A2,Data!C:C,"Bucket C*")+SUMIFS(Data!I:I,Data!A:A,$A2,Data!C:C,"Bucket E*").
Check the Bucket D amounts before you sum them. In the CSV that gstr2bmatch.in exports (as of 30 Sep 2026), rows in "Bucket D - Only in 2B" show the 2B tax in the Tax (Books) column and leave Tax (2B) empty. For bucket D, sum column I (Tax (Books)), not column J (Tax (2B)). Test any tool's export this way before you build formulas on it.
The cross-GSTIN test
Once every GSTIN is pasted, filter the Data sheet for Twin count above 0 and sort by Key. Most twins fall into one of three patterns.
| Pattern | What it means | Fix |
|---|---|---|
| Missing or IMS-flagged in GSTIN X (bucket C or E), only in 2B for GSTIN Y (bucket D) | The supplier billed Y, but the purchase went to X, or the bill was booked in the wrong register | Decide who received the goods (below) |
| Booked in two registers | Same bill entered under two GSTINs. At most one is right. | Delete the wrong voucher; the twin count clears |
| Matched in both GSTINs | Usually a booking error, or two different supplier numbers collapsing into one key after cleaning | Open both supplier documents |
For the first pattern the question is which GSTIN actually received the goods or services. Section 16(2)(b) makes receipt a condition of credit, and the delivery record answers it. If the goods came to X and the supplier billed Y, the supplier must amend the recipient GSTIN. GSTR-1A lets a supplier amend a record of the same tax period after filing GSTR-1 and before filing GSTR-3B. Until it is fixed, neither GSTIN can claim: X has no 2B line and Y did not receive the supply. If the goods came to Y and X's clerk booked it in the wrong register, move the voucher, and Y claims it as a normal 2B line. Ask your CA before you move credit or ask for a fresh invoice, because a change of GSTIN can change more on the invoice than the GSTIN itself.
Worked example: three states, one supplier error
A plastics trading company has registrations in Maharashtra (27), Gujarat (24) and Karnataka (29) under one PAN. All GSTINs are dummies. The September 2026 runs give the following, with each figure being tax in rupees.
| GSTIN | Books tax | Matched (A) | Value mismatch (B, books) | At risk (C + E) | Only in 2B (D) |
|---|---|---|---|---|---|
| 27AAAPT1234C1Z5 | ₹8,71,200 | ₹7,92,000 | ₹21,000 | ₹58,200 | ₹26,100 |
| 24AAAPT1234C1Z7 | ₹5,31,000 | ₹4,86,000 | ₹0 | ₹45,000 | ₹9,000 |
| 29AAAPT1234C1Z1 | ₹3,68,100 | ₹3,24,000 | ₹12,600 | ₹31,500 | ₹0 |
| Group | ₹17,70,300 | ₹16,02,000 | ₹33,600 | ₹1,34,700 | ₹35,100 |
For each GSTIN, matched + value mismatch + at risk equals books tax: ₹16,02,000 + ₹33,600 + ₹1,34,700 = ₹17,70,300. Read alone, Maharashtra has ₹26,100 of purchases in the 2B that are not in its books and Gujarat has ₹45,000 at risk. The twin filter shows these are partly the same problem.
| Key | Gujarat run | Maharashtra run |
|---|---|---|
| 24AAAKP5678D1Z9|KP260917 (Kaveri Polymers, tax ₹26,100) | Bucket C, in books, not in 2B | Bucket D, in 2B, not in books |
The goods were received at the Gujarat warehouse, but the supplier reported the invoice against the Maharashtra GSTIN. So Maharashtra's ₹26,100 in bucket D is not a bill to add to its books, and ₹26,100 of Gujarat's ₹45,000 is not a supplier that failed to file; it is a wrong recipient GSTIN. Genuinely unbooked 2B lines across the group are ₹9,000 (Gujarat), and the remaining ₹18,900 in Gujarat and all of the ₹58,200 and ₹31,500 elsewhere are ordinary supplier follow-ups. Send the fix to the supplier:
Own-entity invoices and ISD credits
Keep a lookup of your own GSTINs and add a column that flags them, so group-level statistics do not treat a branch as an outside supplier. Credits distributed by an Input Service Distributor are a separate stream: from 1 April 2025 an office that receives invoices for input services on behalf of distinct persons must register as an ISD and distribute the credit. The tool lists ISD lines it finds in the 2B in an informational bucket and does not match them, so reconcile them against your distribution advice by hand.
A monthly order of work
Run all GSTINs on the same day, right after the 14th, and rank them by at-risk rupees so the biggest exposure is worked first. Give each open twin and each supplier chase an owner in column O. The working plan for the days before the 20th is in the 14th-to-20th timeline; a practice handling many clients faces the same pattern, covered in the CA firm guide.
Run one GSTIN at a time
The tool matches one GSTR-2B against one purchase register per run, on supplier GSTIN and invoice number. It does not know which of your GSTINs the files belong to and has no consolidation view, so use the naming rule and the sheet above. It reads the first sheet of your register file. Your GSTR-2B and purchase register files are read in your browser and never uploaded to any server.
Related guides
- GSTR-2B reconciliation guide: the complete guide to ITC matching
- GSTR-2B reconciliation for CA firms: running 20 to 50 clients without chaos
- How accountants can automate GSTR-2B reconciliation
- GSTR-2B vendor wise reconciliation guide
- GSTR-2B reconciliation for large businesses
- How to use a GSTR-2B reconciliation tool
Last checked: 30 Sep 2026. Sources: CGST Act, section 16, CGST Rules, Rule 36(4) (notification 40/2021-CT), CGST Rules, Rule 46, GSTN GSTR-1A FAQ, GSTR-3B user guide, GSTN return user guide (GSTR-2B generation), GSTN FAQ on comparison of liability declared and ITC claimed, CGST Act, section 20.