CORAA
ব্লগ/Tax Compliance· लेख

GSTR-2A Reconciliation Algorithm: Automating GST Audit Procedures in India

Master GSTR-2A reconciliation with AI. Complete algorithm for matching invoices, ITC claims, GST mismatches, and discrepancies. Defend audits against GST portal mismatch queries.

CCORAA Team3 May 202611 min read

GSTR-2A Reconciliation Algorithm: Automating GST Audit in India

GSTR-2A is the tax authority's view of your purchase invoices. Every supplier who files GSTR-1 appears on your GSTR-2A automatically.

Reconciliation is mandatory:

  • Every invoice your company receives should match a supplier's GSTR-1 filing
  • Your ITC (Input Tax Credit) claims must match GSTR-2A amounts
  • Mismatches create GST notice risk (₹10L+ penalties possible)
  • Manual reconciliation of 1,000+ invoices takes weeks

AI-powered GSTR-2A reconciliation matches your purchase ledger to GSTR-2A in minutes, identifies discrepancies, and generates defensible audit documentation.


Why GSTR-2A Reconciliation Matters

Scenario: GST Mismatch Notice

Your company claimed ITC on ₹10L GST. GST portal data shows only ₹8L in GSTR-2A (supplier didn't file GSTR-1 yet, or underbilled on portal). GST officer sends notice: "Mismatch. Reverse ₹2L ITC by next quarter."

Without GSTR-2A reconciliation documentation:

  • ❌ You can't explain the ₹2L difference
  • ❌ You reverse ITC (cash outflow)
  • ❌ You may face penalty even after correction

With AI reconciliation:

  • ✅ You prove 100 invoices match GST portal
  • ✅ You identify 5 invoices where supplier hasn't filed (with dates)
  • ✅ You show evidence (email, invoice scan) of actual supplies
  • ✅ You demonstrate due diligence → penalty waived

The GSTR-2A Reconciliation Algorithm (Step-by-Step)

Input Data

  1. Your GL (Tally/SAP): All purchase invoices
    • Invoice number, date, amount, supplier GSTIN, GST amount
  2. GSTR-2A Download: GST portal export
    • All invoices showing supplier GSTR-1 filings against your GSTIN
  3. Supplier Master: Your vendor list (GSTIN mapping)

Algorithm Step 1: Prepare Data

Normalize formats:

GL Invoice: "INV-2024-001, Dated 01-Feb-2024, ₹50,000 + 9% GST (₹4,500), M/s ABC Ltd, GSTIN: 07AAXXX"
GSTR-2A: "B2B, 01-Feb-2024, ₹50,000, ₹4,500 GST, GSTIN: 07AAXXX, Invoice: INV-2024-001"

→ Both represent the same transaction

Algorithm Step 2: Exact Match (80% of invoices)

Match by: (Invoice Amt + Date + Supplier GSTIN)

for each GL invoice:
    look for GSTR-2A record matching:
      - Amount within ±₹100 (allows for rounding)
      - Date within ±3 days (filing lag)
      - Supplier GSTIN exact match
    if match found:
        Status: ✅ MATCHED
    else:
        Status: ⚠️ UNMATCHED → Add to exception queue

Result: Typically 75–85% of invoices match on first pass.

Algorithm Step 3: Fuzzy Match (Remaining 15–25%)

For unmatched GL invoices, try fuzzy matching:

3a: Invoice Number Mismatch

Situation: Your GL shows invoice "INV-001" but GSTR-2A shows "001" (supplier truncated prefix).

if invoice amount matches AND supplier GSTIN matches AND date within 5 days:
    Consider: POSSIBLE MATCH (95% confidence)
    Status: ✅ MATCHED (with note: "Invoice number truncated on supplier portal")

3b: GST Amount Rounding Error

Situation: You claim ₹4,500 GST; GSTR-2A shows ₹4,502 (supplier rounded).

if abs(GST_GL - GST_GSTR2A) < ₹100 AND amount & date match:
    Status: ✅ MATCHED (with note: "GST rounding difference ₹2")

3c: Multi-part Invoices

Situation: Single invoice split into multiple GSTR-2A entries (supplier broke into line items).

if sum of GSTR-2A invoices = GL invoice amount, dates adjacent:
    Status: ✅ MATCHED (consolidated)

Result: Additional 10–15% matched via fuzzy logic.

Algorithm Step 4: Exception Queue

Remaining unmatched invoices → Exception queue:

Category Reason Audit Action
Pending (Supplier hasn't filed) Invoice dated <45 days ago; GSTR-2A filing deadline hasn't passed Follow-up: Wait for supplier GSTR-1, expected date X
Not in GSTR-2A Supplier GSTIN inactive, or supplier didn't include your company in GSTR-1 Auditor: Get affidavit from supplier or reverse ITC
Amount Mismatch GL ₹50K, GSTR-2A ₹45K (supplier underbilled) Auditor: Verify which is correct, request debit/credit note
GST Rate Mismatch GL 5% GST, GSTR-2A 18% GST (rate disagreement) Auditor: Verify HSN, check if supply category changed
Duplicate in GSTR-2A Same invoice appears twice (supplier filing error) Auditor: Request supplier filing correction

Example exception queue:

EXCEPTION 1: Invoice INV-789 (₹75,000) not in GSTR-2A
  Supplier: M/s XYZ Ltd, GSTIN: 07BXXX
  Date: 15-Mar-2024
  Status: PENDING (Invoice date recent; GSTR-1 filing deadline is 25-Mar)
  Action: Follow-up on 27-Mar; if still missing, reverse ITC

EXCEPTION 2: Invoice INV-456 (₹30,000 + 18% GST) shows 5% GST in GSTR-2A
  Supplier: M/s ABC Ltd, GSTIN: 07AYYY
  Amount: GL ₹30,000 ✓ matches GSTR-2A ₹30,000 ✓
  Issue: GST rate mismatch (18% vs 5%)
  Action: Verify HSN code, check if supply was inter-state or exempt category

EXCEPTION 3: Duplicate invoice INV-500
  GSTR-2A shows 2 entries for same invoice (dated 01-Feb & 03-Feb)
  Amount: Both ₹50,000
  Action: Request supplier to file amended GSTR-1 (reduce duplicate)

Algorithm Step 5: ITC Validation

Cross-check ITC claims against matched invoices:

Total GL GST claims: ₹200 Lac
Total GSTR-2A matched: ₹185 Lac
Pending/Exceptions: ₹15 Lac

Safe ITC to claim: ₹185 Lac (conservative; only matched invoices)
Risky ITC: ₹15 Lac (pending or mismatched)

Recommendation: Claim ₹185 Lac; reserve judgment on ₹15 Lac pending supplier filing

Algorithm Step 6: Documentation & Workpaper

AI generates audit workpaper:

  • Summary table: Matched (%), Pending (%), Exceptions (%)
  • Exception detail sheet (as shown above)
  • ITC reconciliation statement
  • Recommendation: ITC to claim vs reserve

Real GSTR-2A Scenarios

Scenario 1: Supplier GST Deregistration

Date: May 2024

  • You claim ITC on invoices from Supplier A (GSTIN 07AAXX, ₹50L purchases over 2 years)
  • GST audit notice: "Supplier GSTIN cancelled Dec 2023; invoices post-cancellation have no valid GSTR-1"

AI reconciliation:

  • Flagged: 15 invoices (₹12L GST) dated after supplier deregistration
  • Matched pre-cancellation: 40 invoices (₹38L GST)
  • Action: Reverse ITC on post-cancellation invoices (₹12L); claim safely on pre-cancellation

Result: ₹12L penalty avoided by having documented reconciliation.

Scenario 2: Multi-GST Rate Invoices

Situation: Single PO split by supplier into multiple invoices (5%, 12%, 18% GST on different line items).

Manual reconciliation: Tedious; easy to miss rate switches.

AI reconciliation:

  • Aggregates line-level details
  • Matches to supplier's GSTR-1 (which also breaks by rate)
  • Flags mismatches automatically

Scenario 3: Credit Note Timing

Situation: Supplier issued credit note in Mar (your GL), but appeared in GSTR-2A in Apr (GST portal lag).

AI handles:

  • Fuzzy matching on credit note number (negative amount flag)
  • Date tolerance (±15 days for credit notes)
  • Matches GL deduction to GSTR-2A negative entry

Manual vs AI: GSTR-2A Reconciliation Speed

Task Manual AI Saving
Download GSTR-2A, prepare 2 hrs 2 min 98%
Exact match (by amount/date) 40 hrs 3 min 99%
Fuzzy match, exceptions 20 hrs 5 min 99%
ITC validation 10 hrs 2 min 98%
Workpaper generation 8 hrs 5 min 97%
Total per company audit 80 hrs 17 min 99%

For a firm with 50 GST audits/year:

  • Manual: 4,000 hours/year = 2 FTE auditors (dedicated)
  • AI: ~14 hours/year = 1 resource week

GSTR-2A Algorithm Pseudocode

function reconcileGST2A(glInvoices, gstr2aData, supplierMaster) {
  let matched = [];
  let exceptions = [];
  let itcSafe = 0;
  let itcRisky = 0;

  for (let glInv of glInvoices) {
    // Step 2: Exact match
    let gstr2aMatch = gstr2aData.find(gInv =>
      gInv.supplierGSTIN == glInv.supplierGSTIN &&
      Math.abs(gInv.amount - glInv.amount) < 100 &&
      daysDiff(gInv.date, glInv.date) <= 3
    );

    if (gstr2aMatch) {
      matched.push({
        glInvoice: glInv,
        gstr2aInvoice: gstr2aMatch,
        status: "MATCHED"
      });
      itcSafe += glInv.gstAmount;
    } else {
      // Step 3: Fuzzy match
      let fuzzyMatch = gstr2aData.find(gInv =>
        gInv.supplierGSTIN == glInv.supplierGSTIN &&
        Math.abs(gInv.amount - glInv.amount) < 500 &&
        daysDiff(gInv.date, glInv.date) <= 5 &&
        invoiceNumberSimilar(gInv.invNo, glInv.invNo)
      );

      if (fuzzyMatch && fuzzyMatch.confidence >= 0.95) {
        matched.push({
          glInvoice: glInv,
          gstr2aInvoice: fuzzyMatch,
          status: "MATCHED_FUZZY",
          note: "Fuzzy match on invoice number"
        });
        itcSafe += glInv.gstAmount;
      } else {
        // Step 4: Exception
        let category = categorizeException(glInv, gstr2aData, supplierMaster);
        exceptions.push({
          glInvoice: glInv,
          category: category,
          action: recommendAction(category),
          risk: category == "PENDING" ? "LOW" : "HIGH"
        });
        itcRisky += glInv.gstAmount;
      }
    }
  }

  // Step 5: ITC Validation
  return {
    matchedCount: matched.length,
    exceptionCount: exceptions.length,
    matchPercentage: (matched.length / glInvoices.length) * 100,
    itcSafeToClaimToClaim: itcSafe,
    itcRiskyAmount: itcRisky,
    exceptions: exceptions,
    workpaper: generateWorkpaper(matched, exceptions, itcSafe, itcRisky)
  };
}

FAQ: GSTR-2A Reconciliation

Q: What % match is acceptable?
A: Target 95%+. If <90%, investigate why (data quality, supplier deregistrations, recent invoices pending filing).

Q: How long should we wait for supplier to file GSTR-1?
A: GST filing deadline is 10th of next month. If invoice dated 15-Jan, GSTR-1 deadline is Feb 10. Wait until Feb 12–15 before flagging as exception.

Q: Can we claim ITC on unmatched invoices?
A: Legally, you can claim on invoices in your GL. But GST authority challenges mismatches → better to reconcile and reserve uncertain amounts.

Q: What if supplier is unregistered (below turnover threshold)?
A: Unregistered suppliers can't file GSTR-1. You can claim ITC if you have invoice + proof (bill, affidavit). Manually note in exception queue.


Resources

  • GST Portal: GSTR-2A download (Completed Returns → GSTR-2A)
  • GST Rules 2017: ITC eligibility rules
  • GSTN Instructions: GSTR-1 & GSTR-2A filing timelines

Start GSTR-2A reconciliation today. Free trial →

বিষয়
GSTR-2A reconciliationGST audit IndiaITC mismatchinvoice matchingGST reconciliation algorithmGST audit procedures
← সব নিবন্ধে ফিরুন
রাখুন পড়ছে

আরও এ tax compliance.

ভারতের জন্য তৈরি · DPDPA কমপ্লায়েন্ট

প্রস্তুত স্বয়ংক্রিয় করুন আপনার অডিট কাজ.

দেখুন কীভাবে Coraa কমায় অডিট এনগেজমেন্ট সময় দ্বারা 60%, থেকে লেজার স্ক্রুটিনি পর্যন্ত কার্যপত্র, সব থেকে এক Tally ইম্পোর্ট.

১৪-দিনের ফ্রি ট্রায়াল শুরু করুন →লাইভ ডেমো বুক করুন