
GSTR-2B is a static statement. It is generated for a period and it does not change afterwards, which is exactly what makes it the right document to reconcile against and the wrong document to argue with.
Most firms reconcile it as a single question: does the credit in 2B equal the credit in the books. That produces one number, and a number that does not agree tells you nothing about what to do next.
An honest reconciliation produces four lists. The credit a firm actually loses is almost never in the list of large differences. It is in the two lists that look like clerical noise.
The four lists, and why one number is not enough
Comparing a 2B download with the purchase register can only end in four places, and each one asks for a different action from a different person.
A single total hides all four. Two errors in opposite directions net to zero, and a month that reconciles to the rupee can still have a supplier who has not reported anything and a bill booked twice.
- Matched: same supplier GSTIN, same document type, same invoice number, same date, every amount within tolerance. Nothing to do.
- Mismatched: paired, but something differs. An amount, a date, or IGST on one side against CGST plus SGST on the other.
- Only in 2B: the supplier has reported it and you have not booked it. This is credit being missed.
- Only in the books: you have booked it and the supplier has not reported it. This is credit at risk.
Mismatch 1 and 2: the two directions of missing
Only in 2B is the cheerful one. The supplier filed, the credit is available, and nobody booked the bill. It is found by comparison and fixed by posting the purchase. The only real risk is booking it twice, which is why the posting should go through the same path as every other purchase voucher rather than a side door.
Only in the books is the one that costs money. You hold the invoice, you have taken the credit, and the supplier has not reported the supply. Nothing in your own records will ever tell you this. It is visible only by comparison, and the remedy is a phone call that gets harder the longer it waits.
One caveat that saves a great many pointless calls: a supplier reporting a bill a month or two late is normal, not a failure. A bill dated in the period but absent from this period's 2B is worth chasing. A bill from an earlier month appearing now is simply the system working slowly, and should not be reported as missing at all.
Important
Read the books over a wider window than the period, but only report in-period bills as missing. A reconciliation that calls every late-reported bill a problem produces a list nobody reads.
Mismatch 3: the invoice number that is the same number
INV/001 and INV-1. 2026-27/0042 and 42. GST/PUR/118 typed as GSTPUR118.
These are the same invoice, recorded by two people who disagree about punctuation. An exact comparison puts one copy in "only in 2B" and the other in "only in the books", which is the worst possible outcome: it looks like two separate problems, one of them a missing supplier filing.
The way out is a second, looser key that ignores formatting and compares what is left. What matters is what the software does with the result. A loose match is a suggestion, never a match. The pair goes in front of the CA with both versions shown, and a person confirms it.
The temptation to auto-accept loose matches is strong and should be resisted. Two genuinely different invoices from the same supplier can collapse to the same loose key, and an auto-accepted pair is an error that reconciles perfectly.
Pro tip
Before chasing a supplier about a missing invoice, search the books for the amount rather than the number. Formatting differs between systems far more often than figures do.
Mismatch 4 and 5: the GSTIN and the tax head
The GSTIN differs. A supplier with two registrations, a GSTIN typed into the ledger master a year ago and never checked, or a bill booked against the group company. The invoice number and the amount agree, the GSTIN does not, and an exact comparison separates them. Like the invoice number case, this is a suggested pair for a person to confirm, not something to resolve automatically.
IGST on one side, CGST plus SGST on the other. The totals agree. The heads do not. This is a place-of-supply disagreement, and it is the mismatch most often waved through because the bottom line is right.
It should not be waved through. If the supplier charged IGST and you booked CGST plus SGST, one of you is wrong about where the supply happened, and the credit you have taken is in heads the portal will not give you. Fixing it after the annual return is considerably harder than fixing it in the month.
GSTR-2B itself tells you about one version of this. Where a credit is not available, the file carries a reason code: P means the place of supply is in the supplier's own state while you are registered in another, and C means the supplier filed the return after the annual cut-off.
What the file tells you that the comparison cannot
Three things sit inside a 2B download that no books-versus-2B comparison will surface, and all three are worth reading before the comparison starts.
Rejected documents. Under the Invoice Management System, invoices you rejected are reported separately from the ones that feed your credit. They are not claimable. They are also not noise: a rejection made by a junior in a hurry is an unclaimed credit, and the rejected list is the only place it shows.
Rule 37A reversal entries. Where a supplier reported a supply and then did not pay the tax, the reversal lands here. It is not a mismatch with your books, and it is not something a comparison can find. It is an instruction.
The file's own supplier summary. A 2B download carries a counterparty summary alongside the documents. If what you read out of the file does not agree with the file's own summary, the reading is wrong, and no amount of reconciliation against the books will reveal that. A large month arrives as several files, which is the usual reason a total comes up short.
Tolerance, and what not to chase
Set a rupee-level tolerance and stop looking below it. A rupee of rounding difference between two systems is not a finding, and a reconciliation that reports forty of them trains everyone to skim the list, which is how the real one gets missed.
What deserves the time, in order: anything only in the books, the tax-head disagreements, the suggested pairs awaiting confirmation, and then everything else.
The same principle applies to how the figures are shown. A list of differences written as 149232.00 has to be counted digit by digit before it can be read. Written the Indian way, 1,49,232.00, the magnitude is obvious at a glance, and the one that matters stands out from the forty that do not.
For the recurring small credits that sit at the bottom of every statement, input tax credit on bank charges covers what qualifies and what does not.
Conclusion
The purpose of a 2B reconciliation is not to produce a matching total. It is to produce a short list of things a person has to do: a supplier to call, a place of supply to settle, two records of one invoice to merge, a bill to book.
Four lists do that. One number does not, and a month that nets to zero can be hiding both halves of a problem.
Greenote reads the 2B download and the purchase register on your PC and produces those four lists, with the loose matches held back as suggestions for you to confirm rather than quietly accepted. See what the GST workspace covers, or read why the portal refuses a GSTR-1 JSON for the same discipline on the sales side.
Turn bank statements into Tally vouchers on your own PC
Greenote reads 100+ Indian banks and posts clean vouchers straight into Tally, from your own PC. The statement is not uploaded, and nothing is typed by hand.
Free trial: 2 days or 10 statements, no card. Works with Tally Prime & ERP 9.


