Almost every accountant who has reconciled GST has, at some point, matched the books against GSTR-2A, closed the file, and been asked three months later why the credit claimed in GSTR-3B does not agree with anything on the portal. The answer is nearly always the same, and it is not an arithmetic error. It is that 2A and 2B are different documents built for different purposes, and only one of them holds still.
The one difference that matters
GSTR-2A is dynamic. GSTR-2B is static.
Everything else follows from that.
GSTR-2A is a live mirror of what your suppliers have filed. When a supplier files his GSTR-1 for March in September, that invoice appears in your GSTR-2A for March, backdated, six months after you looked at it. Pull 2A for a period today, pull it again next week, and you can legitimately get two different answers with no error on anyone’s part.
GSTR-2B is generated once for a tax period and then frozen. It is cut on the 14th of the following month and it never changes again. A supplier who files late does not alter a 2B that has already been generated. His invoice lands in the next 2B instead, in the month the filing actually happened.
So 2A answers “what have my suppliers reported against my GSTIN, as of right now?”
Why the static one is the one you can defend
Reconciliation is not really a matching exercise. It is an evidence exercise. The output has to survive being looked at by someone else, months later, who was not there.
A 2A-based reconciliation cannot do that. The document you matched against no longer exists in the form you matched it in. You cannot re-derive it, you cannot prove what it said on the day you filed, and when an officer pulls 2A during scrutiny he sees a different statement to the one on your working paper. The difference is not fraud and it is not error, but explaining it costs you an afternoon you did not budget for.
A 2B-based reconciliation regenerates identically forever. The 2B for July 2026 will say the same thing in 2031. That is what makes it defensible, and it is why the credit figures in Table 4 of GSTR-3B are auto-populated from 2B rather than from 2A.
If you take one operational rule from this article: reconcile against 2B, keep 2A for investigation. When an invoice is missing from 2B and you want to know whether the supplier has filed it late, 2A is the right place to look. It is a diagnostic tool, not a basis of claim.
Side by side
| GSTR-2A | GSTR-2B | |
|---|---|---|
| Nature | Dynamic, updates continuously | Static, frozen once generated |
| Generated | Continuously, in real time | Once, on the 14th of the following month |
| Late supplier filing | Backdated into the original period | Appears in the next period’s statement |
| Same result if regenerated later | No | Yes |
| Tells you whether credit is eligible | No, it is a raw feed | Yes, it flags available and not available |
| Auto-populates GSTR-3B | No | Yes |
| Underlying rule | Rule 60(9) | Rule 60(7) |
| Right use | Investigating a missing invoice | Claiming and defending credit |
The part people miss: 2B speaks to eligibility, 2A does not
GSTR-2A is a feed. It shows what was reported and stops there. Whether you may actually take that credit is left entirely to you.
GSTR-2B does more work. Against each document it carries an advisory on whether the credit is available or not available, and where it is not, it says why. Two of those reasons catch people out regularly.
The place of supply is in a different state to yours. A supplier in Maharashtra raises an invoice on your Gujarat GSTIN, but the place of supply is Maharashtra, so he charges CGST and SGST of Maharashtra. You cannot take that credit. Hotel stays and works contract services generate this constantly, and the amounts are large enough to matter.
The invoice is time-barred under Section 16(4). The supplier filed so late that the window to claim has closed. The document is genuine, the tax was paid, and the credit is still gone.
If you are matching on invoice number and value alone, both of these reconcile perfectly and both are wrong. A match is not the same as an entitlement.
Where 2B and your books legitimately disagree
Not every difference is worth chasing. Some are structural and will recur every month.
- Cut-off timing. An invoice dated 28 March, filed by the supplier in his April GSTR-1, sits in your books in March and in your 2B in April. Nothing is wrong. It is a timing difference and it reverses next month.
- Imports. Bill of entry credit reaches 2B through ICEGATE on its own timetable, which does not track your goods-received date.
- Reverse charge. Your self-invoiced RCM liability is your own entry. It does not come from a supplier and it is not in the supplier-reported part of 2B.
- Credit notes. A credit note reduces credit in the period the supplier reports it, which is frequently not the period in which you booked the return.
The differences worth investigating are the other kind: an invoice in your books that is in nobody’s 2B at all, an invoice in 2B against a supplier you have never dealt with, or a value that differs by an amount which is not a rounding artefact.
A workflow that holds up
- Wait for the 14th. Reconciling before 2B is generated means reconciling against an incomplete statement, and then doing it again.
- Match on GSTIN plus invoice number plus period first, then on value. Matching on value alone produces false pairs the moment a supplier issues two invoices of the same amount in a month, which happens more often than you would think.
- Normalise invoice numbers before matching. This is where most of the noise comes from. The supplier writes INV/2026/0042 and your purchase register says 42, and a literal comparison calls that a mismatch. Strip prefixes, leading zeros, slashes and spaces on both sides before you compare.
- Split the exceptions into timing and substance. Timing differences get carried forward and reverse on their own. Substance differences need a call to the supplier.
- Keep the 2B file. Save the JSON or Excel you actually matched against, with the date you pulled it. It costs nothing now and it is the whole of your defence later.
What it costs to get this wrong
Two directions, both expensive.
Claim credit that is not in 2B and you are exposed under Section 16(2)(aa), with interest under Section 50 and, once the difference crosses the threshold in Rule 88D, an automated DRC-01C intimation asking you to explain it or pay.
Miss credit that is in 2B and you have simply given the money away, because Section 16(4) closes the window on 30 November following the end of the financial year. Credit not taken by then is not deferred. It is lost.
The second one gets far less attention than the first, and in most practices it is the larger number.
The short version
Use 2B to claim. Use 2A to investigate. Reconcile after the 14th, normalise invoice numbers before you match, separate timing differences from real ones, and keep the file you matched against. Most of what makes GST reconciliation painful is not the matching. It is having matched against a document that has since changed.