GSTR-2B Reconciliation Guide: Automate ITC Matching with AI
Automate GSTR-2B reconciliation using AI invoice extraction and Python matching scripts. Reduce monthly reconciliation from days to hours. Complete guide for Indian businesses.
GSTR-2B Reconciliation Guide: Automate ITC Matching with AI
GSTR-2B reconciliation is one of the most time-consuming compliance tasks for Indian businesses. Every month, accounts teams manually compare supplier invoices against the auto-populated GSTR-2B statement from the GST portal — checking whether every purchase invoice issued by a supplier appears in GSTR-2B (meaning the supplier has filed their GSTR-1 correctly), and whether the tax amounts match.
For a business with 200+ purchase invoices per month, this process can take days. AI-powered extraction and matching compresses it to hours.
What Is GSTR-2B and Why It Matters
GSTR-2B is an auto-populated statement generated by the GST system on the 14th of every month. It shows all Input Tax Credit (ITC) available to a buyer based on what their suppliers have reported in GSTR-1.
Why reconciliation matters:
- ITC can only be claimed if the invoice appears in GSTR-2B
- Rule 36(4) limits provisional ITC claims on unmatched invoices
- Mismatches indicate either late filing by the supplier or data errors that need correction
- Unreconciled mismatches affect cash flow (blocked ITC) and create GST audit risk
The Traditional Manual Process
| Step | Manual Method | Time Required |
|---|---|---|
| Collect all purchase invoices | Download from email, drive, accounting system | 30 min |
| Extract invoice data | Type each field manually into Excel | 4–8 hours |
| Download GSTR-2B | Export from GST portal as JSON/Excel | 10 min |
| Match invoices to GSTR-2B | VLOOKUP or manual line-by-line comparison | 2–6 hours |
| Identify mismatches | Review non-matching rows | 1–2 hours |
| Follow up with suppliers | Email/call suppliers about unfiled invoices | Ongoing |
| Total | 8–16 hours/month |
The AI-Powered Process
| Step | AI Method | Time Required |
|---|---|---|
| Collect purchase invoices | Route to shared folder (automated) | 5 min setup |
| Extract invoice data | AllPDFMagic AI Extractor via API | 15–30 min |
| Download GSTR-2B | Export from GST portal | 10 min |
| Match invoices to GSTR-2B | Automated matching script | 5 min |
| Identify mismatches | Automated report | Instant |
| Follow up with suppliers | Template emails triggered automatically | 30 min |
| Total | 1–2 hours/month |
Step-by-Step: AI-Powered GSTR-2B Reconciliation
Step 1: Extract Invoice Data from PDFs
Use AllPDFMagic Invoice Extractor to extract structured data from all your purchase invoice PDFs:
- Upload invoices individually via the web interface, or
- Use the API to process batches automatically
For each invoice, the AI extracts: supplier GSTIN, invoice number, date, taxable value, CGST, SGST, IGST amounts, HSN codes.
Export the extracted data as CSV or JSON.
Step 2: Download Your GSTR-2B
- Log in to the GST portal (gst.gov.in)
- Go to Returns → Auto-Drafted ITC Statement → GSTR-2B
- Select the month and download as JSON or Excel
The GSTR-2B contains B2B invoices section (Table 3) — this is what you'll match against your purchase invoices.
Step 3: Match Invoice Data to GSTR-2B
The matching logic compares:
- Supplier GSTIN — exact match
- Invoice Number — match after normalising format (removing spaces, hyphens)
- Invoice Date — within the filing period
- Tax Amounts — within a tolerance for rounding differences (typically ±₹1)
A simple Python matching script:
import pandas as pd
# Load your extracted invoice data
my_invoices = pd.read_csv("extracted_invoices.csv")
# Load GSTR-2B data (B2B section)
gstr2b = pd.read_excel("GSTR2B_July2026.xlsx", sheet_name="B2B")
# Normalise invoice numbers for matching
my_invoices["inv_num_clean"] = my_invoices["invoice_number"].str.replace(r"[-\s]", "", regex=True).str.upper()
gstr2b["inv_num_clean"] = gstr2b["Invoice Number"].str.replace(r"[-\s]", "", regex=True).str.upper()
# Merge on GSTIN + invoice number
merged = my_invoices.merge(
gstr2b,
left_on=["supplier_gstin", "inv_num_clean"],
right_on=["GSTIN of Supplier", "inv_num_clean"],
how="left",
indicator=True
)
# Separate matched and unmatched
matched = merged[merged["_merge"] == "both"]
unmatched = merged[merged["_merge"] == "left_only"]
print(f"Matched: {len(matched)} invoices")
print(f"Unmatched (not in GSTR-2B): {len(unmatched)} invoices")
unmatched.to_csv("unmatched_invoices.csv", index=False)
Step 4: Investigate Mismatches
Unmatched invoices fall into three categories:
- Supplier hasn't filed GSTR-1 yet — follow up with the supplier to file before the deadline
- Supplier filed with a different invoice number — check for typos or format differences
- Supplier reported incorrect GSTIN — request a credit note and corrected invoice
For each unmatched invoice, verify the supplier's filing status on the GST portal using Search Taxpayer → View Filed Returns.
Step 5: Provisional ITC Treatment
Under Rule 36(4), ITC on invoices not appearing in GSTR-2B can only be claimed provisionally up to a specified percentage (currently 5%). Track provisional ITC separately and reverse it if the invoice doesn't appear in GSTR-2B within a defined period.
Common Reconciliation Issues and Fixes
| Issue | Likely Cause | Resolution |
|---|---|---|
| Invoice number mismatch | Supplier used different format | Check manually; request corrected GSTR-1 amendment |
| Tax amount mismatch (small) | Rounding difference | Within ₹1: acceptable; over ₹1: request correction |
| Supplier GSTIN wrong | Supplier entered buyer's wrong GSTIN | Request GSTR-1 amendment from supplier |
| Invoice in wrong month | Supplier filed in next month | Claim ITC in the month it appears in GSTR-2B |
| Duplicate invoice number | Supplier error | Request credit note and corrected invoice |
Frequently Asked Questions
How often should GSTR-2B reconciliation be done? Monthly, ideally before the ITC claim deadline. GSTR-2B is available on the 14th of each month; reconciliation should be completed before filing GSTR-3B (due on the 20th).
What happens if I claim ITC on an invoice not in GSTR-2B? Under Rule 36(4), you may claim provisional ITC up to the specified percentage (currently 5% of eligible ITC from GSTR-2B invoices). Excess provisional ITC must be reversed in GSTR-3B.
Can AI extraction handle invoices in multiple languages? AllPDFMagic's invoice extractor handles invoices in English, Hindi, and several regional languages. For regional language invoices, accuracy may vary — verify extracted data manually for a sample.
What if my supplier is in a composition scheme? Composition dealers don't appear in GSTR-2B as they don't charge GST. These purchases are not eligible for ITC and should be tracked separately.
Extract invoice data for reconciliation →
Related guides:
- How to Extract GST Invoice Data from PDFs — extract structured data from invoices
- Automate Invoice Processing with AI — full automation workflow
- PDF API for Developers — API integration guide
Frequently Asked Questions
Monthly, before filing GSTR-3B (due on the 20th). GSTR-2B is available from the 14th, giving a 6-day window for reconciliation.
Under Rule 36(4), provisional ITC up to the specified percentage (currently 5% of eligible ITC from GSTR-2B invoices) can be claimed. Excess provisional ITC must be reversed in GSTR-3B.
Yes. The sample script normalises invoice numbers by removing spaces and hyphens before matching. You can extend the normalisation for other format differences common in your supplier base.
Document repeated late filers, as they block your ITC claims. Consider adding timely GSTR-1 filing as a contract requirement for key suppliers and following up immediately after the 11th of each month.