Not affiliated with Finkraft.

How it works

Deterministic where money moves. AI where words do.

Every credit decision in this product is made by rules you can read and test: the match cascade, eligibility under Section 17(5), place of supply, the IMS state model and the statutory clocks. A small model is used for three language jobs, each checked before it is shown. This page is the evidence.

Architecture

From the books to a defensible GSTR-3B

Data in
  • Purchase register and payments from the ERP
  • GSTR-2B and IMS records for every GSTIN, through a GSP
  • Travel bookings, airline and hotel invoices
Deterministic engine
  • Match cascade with global one-to-one allocation
  • Eligibility: Section 17(5) and place of supply
  • Clocks: GSTR-2B, GSTR-3B, Section 16(4), Rule 37
People decide
  • Reconciliation review and supplier follow-up
  • IMS actions with preview and reason codes
  • Every decision on a hash-chained log
Out
  • IMS actions back through the GSP
  • GSTR-3B Table 4 figures
  • Evidence packs for ASMT-10 and DRC-01
The AI layer sits beside step 3, not inside step 2. It explains a match, polishes a supplier email and answers research questions from cited sources. Each output is verified (figures against the engine, citations against the sources) and replaced by the engine's own text when it fails. Every call is counted against a site-wide daily budget.
Match cascade

Eight outcomes, one constant

Tiers are tried top down for every candidate pair; all surviving pairs are then ranked (tier, then smallest amount gap, then smallest date gap) and allocated one-to-one, best first. Auto-accept at 85% and above. A tax-head disagreement caps any tier at 70%. Dates must agree within 7 days; late filing is looked for up to 3 months on.

  • Exact100%

    Same supplier GSTIN, same invoice number, same date, same amount, in the invoice's own 2B period.

    Action: Auto-accept

  • Normalised95%

    Invoice numbers equal after removing separators and case, or after removing leading zeros, or after the 16-character cut of Rule 46; amount and date equal.

    Action: Auto-accept

  • FY variant90%

    Invoice numbers equal once the financial-year token is rewritten (26-27, 2026-27, FY26-27); amount and date equal.

    Action: Auto-accept

  • Tolerance85%

    Same document by number; amount within max(₹1, 0.01%) and date within 7 days.

    Action: Auto-accept, 10% sample audit

  • Late filing70%

    Same document, amount within tolerance, but it sits in a 2B up to 3 months after the invoice's period. Credit moves to that period.

    Action: Review: claim in the period it appears

  • Supplier GSTIN differs60%

    Same PAN, different GSTIN (a typo in the books or another registration of the supplier); number, amount and date agree.

    Action: Review: correct the master or ask the supplier

  • Value mismatch50%

    Same supplier, number, period and date, but the amount differs beyond tolerance (an added freight line, a price change).

    Action: Review: book the difference or ask for a credit note

  • Not in 2B-

    No tier fires. Either the supplier has not filed yet, or has not filed at all.

    Action: Chase the supplier before the credit deadline

One definition feeds the engine, the reconciliation screen and this table, so the three cannot disagree.

Benchmarks

Two scores, and which one to believe

Set A is the demo books: every defect in it was generated to be recoverable, so it is a regression harness, not evidence. Set B was built to break matching engines. Read B.

A is the demo books; B is the adversarial set.

MeasureAB
Invoices scored211208
Precision (links that are right)100.0%100.0%
Recall (true records found)100.0%86.3%
False matches00
Missed credits026
Correct refusals (never filed)3618
Right link, wrong root cause-0

Both run the same engine in-process on synthetic, labelled data. A false match books credit against the wrong invoice; once used, it carries 18% interest under Section 50(3), which is why it is scored separately from a miss.

Benchmark B, class by class

8 of 10 classes are handled with no miss and no false match. The misses are confined to vendor re-coded series and digit transposition: defects no string rule can recover, left to a person rather than guessed.

  • Clean (control)Handled

    Identical record on both sides: the positive control.

    Expected: Exact link

    96 rows · 96 linked · 0 refused · 0 missed · 0 false
  • Paise driftHandled

    Amount off by ₹0.10 to ₹0.99, inside the ₹1 band: the boundary control.

    Expected: Tolerance link, coded as rounding

    18 rows · 18 linked · 0 refused · 0 missed · 0 false
  • Freight line addedHandled

    The supplier adds a ₹150 to ₹900 freight or insurance line the books never recorded. Beyond every tolerance band, so it must not auto-accept; it should surface as the same document with a value gap, coded as an amount difference.

    Expected: Linked for review as a value mismatch

    16 rows · 16 linked · 0 refused · 0 missed · 0 false
  • Series collision (recurring billing)Handled

    Two same-amount monthly invoices whose numbers normalise identically, twelve days apart; one was filed a month late. A greedy engine cross-links the pair. Global ranking must keep each on its own record.

    Expected: Both invoices linked to their own records

    8 rows · 8 linked · 0 refused · 0 missed · 0 false
  • Document number reusedHandled

    A small vendor reuses document number 21 three months later for a different transaction. Only April's was filed. January's must stay unmatched, not borrow April's credit.

    Expected: Correct refusal for the unfiled one

    8 rows · 4 linked · 4 refused · 0 missed · 0 false
  • Vendor re-coded seriesMissed

    The books carry the PO or proforma reference; the supplier files its tax-invoice series. Recovering these needs amount, date and PAN candidate blocking, which this engine deliberately does not do yet.

    Expected: Miss (no string rule can recover it)

    14 rows · 0 linked · 0 refused · 14 missed · 0 false
  • Digit transpositionMissed

    Two adjacent digits swapped at data entry (…19 keyed as …91). The normalised numbers differ.

    Expected: Miss

    12 rows · 0 linked · 0 refused · 12 missed · 0 false
  • 16-character cut (Rule 46)Handled

    CGST Rule 46(b) caps an invoice serial at 16 characters; longer ERP numbers are clipped when GSTR-1 is prepared. The engine compares the first 16 characters of a longer number.

    Expected: Normalised link via the 16-character rule

    12 rows · 12 linked · 0 refused · 0 missed · 0 false
  • Supplier filed from another branchHandled

    The books record the supplier's Karnataka registration; it filed from its Delhi registration of the same PAN. Same legal entity, different GSTIN: link it, but a person confirms.

    Expected: Linked for review (same PAN, different GSTIN)

    10 rows · 10 linked · 0 refused · 0 missed · 0 false
  • Never filed (control)Handled

    The supplier never filed: the negative control.

    Expected: Correct refusal

    14 rows · 0 linked · 14 refused · 0 missed · 0 false
How this benchmark was used, stated plainly. Set B was written to expose the first version of this engine, which made false matches on recurring bills and reused numbers, coded freight lines as GSTIN typos and could not see 16-character cuts. The engine was then changed to fix exactly those failures, so for those classes B is no longer an independent test. The next step is a held-out set, and a pilot on three months of a customer's real GSTR-2B scored with the same definitions.
Edge cases

20 ways reconciliation goes wrong, and what happens to each

18 are handled by the engine running on this site; the rest are marked as roadmap rather than claimed.

01IdentityHandled by the engine
Supplier GSTIN mistyped in the books

The vendor master has one character wrong (0 keyed as O). The supplier's filing is right; the books never match it.

Detection
A books GSTIN that fails its checksum, or is one character away from a GSTIN in 2B, with the same number, amount and date.
Resolution
Linked at 60% for review with the cause 'GSTIN mistyped in books'. Never auto-accepted.
Operator sees
The supplier filed under 33AARCC9021N1Z…; your master has 33AARCC9O21N1Z…. Correct the master?
Logged
books_gstin, 2b_gstin, edit_distance, operator_decision
Reference
GSTIN = state code + PAN + entity number + Z + check character.
02FormatHandled by the engine
Leading zeros dropped by a spreadsheet

The supplier's number is INV-0042; an Excel export drops the zeros and the books carry INV-42.

Detection
Second normalised key: split into letter and digit runs and strip leading zeros from each digit run.
Resolution
Normalised tier, 95%, auto-accepted when amount and date agree.
Operator sees
None: resolved automatically.
Logged
books_number, 2b_number, normalised_key
03FormatHandled by the engine
Financial-year token written differently

The books carry KPC/26-27/0112; the supplier files KPC/2026-27/0112.

Detection
Rewrite the FY token (26-27, 2026-27, 2026-2027, FY26-27) and compare normalised.
Resolution
FY-variant tier, 90%, auto-accepted when amount and date agree.
Operator sees
None: resolved automatically.
Logged
fy_token_books, fy_token_2b
04FormatHandled by the engine
Separators and case

SSP-0417 in the books, SSP0417 in 2B.

Detection
First normalised key: lowercase and strip everything but letters and digits.
Resolution
Normalised tier, 95%.
Operator sees
None: resolved automatically.
Logged
books_number, 2b_number
05FormatHandled by the engine
Number cut to 16 characters

The ERP number is 19 characters; Rule 46(b) allows 16, so GSTR-1 carries the first 16.

Detection
When the books number is longer than 16 characters, compare its first 16 with the 2B number.
Resolution
Normalised tier, 95%, when amount and date agree.
Operator sees
None: resolved automatically; the ERP series should be shortened.
Logged
books_number, 2b_number, truncation
Reference
CGST Rule 46(b).
06AmountHandled by the engine
Paise rounding

The supplier rounds per line, the books per invoice; the totals differ by 50 paise.

Detection
Amount within the larger of ₹1 and 0.01%, date within 7 days.
Resolution
Tolerance tier, 85%, auto-accepted and sampled for audit.
Operator sees
None.
Logged
books_amount, 2b_amount, tolerance
07AmountHandled by the engine
Filed value higher than booked

The supplier added a freight or insurance line the books never recorded.

Detection
Same supplier, number, period and date; amount outside tolerance.
Resolution
Value-mismatch tier, 50%: linked for review, never auto-accepted. IMS suggestion: keep pending.
Operator sees
Filed ₹X more than booked. Book the extra line, or ask for a credit note?
Logged
books_amount, 2b_amount, gap, operator_decision
08Tax headsHandled by the engine
Wrong tax head for the place of supply

A Karnataka supplier charges IGST to a Karnataka buyer. The total agrees; the tax is in the wrong head.

Detection
Compare tax heads on both sides at every tier. A disagreement is a place-of-supply error.
Resolution
Confidence capped at 70% whatever the tier; IMS suggestion: reject so the supplier amends it (GSTR-1A, or a later GSTR-1 once that period has closed).
Operator sees
Filed as IGST; expected CGST + SGST. Reject and request an amendment?
Logged
supplier_state, place_of_supply, books_heads, 2b_heads
09TimingHandled by the engine
Supplier filed late

An invoice dated in one month appears in the next month's GSTR-2B.

Detection
Same document found in a 2B up to three months after the invoice's period, amount within tolerance.
Resolution
Late-filing tier, 70%: credit is claimable in the period it appears.
Operator sees
Found in the next period's 2B. Claim it there.
Logged
invoice_period, 2b_period, drift_months
Reference
Credit follows GSTR-2B: CGST Act s.16(2)(aa).
10TimingHandled by the engine
Credit deadline

An invoice still missing from 2B approaches 30 November after its financial year.

Detection
Every unmatched invoice carries its section 16(4) cutoff; the chase list is ordered by it.
Resolution
Past the cutoff the status becomes 'lost at 16(4)'.
Operator sees
₹X of FY credit is lost on 30 November unless these suppliers file.
Logged
invoice_fy, cutoff, days_left
Reference
CGST Act s.16(4).
11TimingHandled by the engine
Supplier not paid within 180 days

Credit was claimed; payment is withheld in a dispute.

Detection
Matched, unpaid, and more than 180 days past the invoice date.
Resolution
Flagged for reversal in the next GSTR-3B; re-claimable on payment.
Operator sees
Rule 37: reverse ₹X now; re-claim when paid.
Logged
invoice_date, paid_on, rule37_due
Reference
CGST Rule 37.
12AllocationHandled by the engine
Recurring same-amount invoices

Monthly rentals with the same amount and numbers that normalise alike. A greedy matcher cross-links them.

Detection
Rank every candidate pair globally and assign one-to-one, best first, instead of in file order.
Resolution
Each invoice keeps its own record (verified in the adversarial benchmark).
Operator sees
None.
Logged
candidate_pairs, allocation_rank
13AllocationHandled by the engine
Document number reused months later

A small vendor restarts numbering; number 21 recurs three months later for a different sale.

Detection
Late-filing and value tiers require the amount to agree, or the same period and date.
Resolution
The unfiled invoice stays unmatched instead of borrowing the later one's credit.
Operator sees
None: correctly refused.
Logged
near_miss_record, refusal_reason
14ComplianceHandled by the engine
Blocked credit that matches perfectly

An executive SUV, staff catering or a club membership matches exactly in 2B.

Detection
HSN/SAC master maps each line to its s.17(5) clause.
Resolution
Status 'blocked by law': accept the record in IMS, report the reversal in GSTR-3B Table 4(B)(1).
Operator sees
Matched but blocked under s.17(5)(a). Not claimed.
Logged
hsn_sac, blocked_clause
Reference
CGST Act s.17(5).
15ComplianceHandled by the engine
Reverse charge

Goods transport agency services under reverse charge: the buyer, not the supplier, pays the tax.

Detection
RCM SAC codes in the master; the invoice carries no tax.
Resolution
Claimable once the tax is paid in cash through GSTR-3B.
Operator sees
Pay ₹X under reverse charge in cash; the credit follows.
Logged
rcm_flag, cash_payment_ref
Reference
CGST Act s.9(3).
16TravelHandled by the engine
Hotel invoice billed to the wrong state's GSTIN

A Pune stay invoiced to the Bengaluru GSTIN. Maharashtra CGST + SGST cannot be claimed in Karnataka.

Detection
Place of supply of lodging is the property (IGST s.12(3)); the invoice must carry the company GSTIN of that state.
Resolution
Recoverable: ask the hotel to re-issue before the cutoff. With no registration in that state: lost.
Operator sees
Re-issue to 27AADCM4821K1Z…, the Maharashtra registration.
Logged
hotel_state, invoice_gstin, required_gstin
Reference
IGST Act s.12(3).
17TravelHandled by the engine
Ticket booked without the company GSTIN

The traveller booked without entering the GSTIN, so the airline issued a B2C ticket.

Detection
Travel feed booking with no GSTIN, or a portal invoice without one.
Resolution
Recoverable if the airline amends the ticket; tracked to the cutoff.
Operator sees
Ask the airline to add the GSTIN and issue a B2B tax invoice.
Logged
pnr, gstin_on_ticket, fetch_status
Reference
IGST Act s.12(9).
18RecordsHandled by the engine
Filed against you, booked by nobody

A record in 2B with no invoice in the books, sometimes from a supplier nobody has heard of.

Detection
2B records left unassigned after matching; vendor-master lookup by PAN.
Resolution
IMS suggestion: hold for a known supplier, reject for an unknown one.
Operator sees
Not in the books. Did we receive this?
Logged
2b_record, vendor_master_hit
19LifecycleOn the roadmap
Amended or credit-noted after acceptance

The supplier amends an accepted invoice or issues a credit note in a later period.

Detection
Track amendment and credit-note records against the original; re-open the original decision.
Resolution
Original decision re-opened; the credit-note reversal amount is declared in IMS (from the October 2025 period).
Operator sees
Amended by the supplier: review the new value.
Logged
original_record, amendment_record, declared_reversal
20RecordsOn the roadmap
ISD distributions and imports

Credit distributed by an Input Service Distributor, and bills of entry for imports, sit in separate sections of 2B and IMS.

Detection
Separate record types with their own keys (ISD document number; bill of entry and port code).
Resolution
Matched separately from B2B invoices; never cross-matched.
Operator sees
None.
Logged
record_type, isd_document, bill_of_entry
Reference
CGST Act s.20; GSTN advisory of 30 October 2025.
IMS design

Suggest, preview, commit, log

Every period, each GSTIN's IMS fills with supplier records. Records left alone are deemed accepted into GSTR-2B, including the ones the company disputes, and the evidence for why anything was accepted lives in spreadsheets.

Principles

  • Suggest, never decide: every record carries the engine's suggestion and the reason, taken from reconciliation.
  • Filter, preview, then commit: a bulk action shows the credit it moves into or out of GSTR-2B before anything changes.
  • The clock is real: the 14th (deemed acceptance) and the GSTR-3B date (freeze) are on screen for the period.
  • Reason codes come from a fixed list, so decisions can be reported on and audited.
  • Every decision is appended to a hash-chained log.

What success is measured by

  • Records left to deemed acceptance that the engine flagged. Zero at each GSTR-2B date
  • Share of records decided by accepting the suggestion. Tracked; a falling share means the suggestions need work
  • Time to clear a period's inbox per GSTIN. Under half a day at 10,000 records
  • Decisions with a reason code and an actor. 100%

Targets are design goals for a pilot, not measured results.

Not built yet

  • Maker-checker for bulk actions above a value threshold
  • Credit-note reversal amounts (October 2025 IMS change)
  • Bills of entry in IMS (30 October 2025 advisory)
  • Pushing actions to GSTN through a GSP, with read-back reconciliation
Research desk

Answers that cannot cite what the sources do not say

  1. Corpus

    Paraphrased, reviewed sources: Act sections, rules, circulars, Council recommendations, GSTN advisories, a judgement, and the author's playbooks. Each links to an official page.

  2. Retrieval

    BM25 with bigram boosts over content, title and reference, plus an exact-reference boost that normalises numbers (207/01/2024 equals 207/1/2024).

  3. Strict gate

    Below a retrieval threshold the desk declines, without calling a model or spending budget.

  4. Generation

    A small model writes 2 to 5 sentences from the retrieved sources only. The question travels as JSON data; the system prompt is static.

  5. Verification

    Every [n] must exist; every section, rule, circular or notification number must appear in a cited source. Failing drafts are withheld.

  6. Fallback

    The grounded extract: the most relevant sentences of the top sources, each cited. Used when the model is off, over budget, late or unverified.

  7. Confidence

    Computed from retrieval strength and verification. The model is told not to state one.

  8. Evaluation

    Twenty golden questions (hotel ITC, Circular 207, GSTR-9C, IMS deemed acceptance, 16(4), Rule 37 and more) run against the deterministic pipeline on every change.

Try it on the research desk.

Real vs simulated

What runs, and what stands in for a connection

Real, running on this site
  • Matching engine, eligibility rules, deadline clocks and the travel five-way check
  • Both benchmarks, recomputed on the server
  • E-invoice pre-checks and the IRN hash, in the browser
  • Research desk retrieval, verification, and a live model inside a daily budget
  • Explanations and supplier emails from a live model, figures checked
  • A hash-chained audit log of your own decisions, in your browser
Simulated
  • The tenant and its books: an invented manufacturer with checksum-valid GSTINs
  • GSTR-2B and IMS data (production pulls them through a licensed GSP)
  • Airline portals, hotel invoices and the travel desk feed
  • The Invoice Registration Portal: nothing is registered or signed
  • Sign-in, roles and a server-side audit store
Roadmap

From concept to a customer's books

Data in

  • GSTR-2B and IMS pulls through a licensed GSP for every GSTIN
  • ERP connectors (SAP, Oracle, Tally) for the purchase register and payment status
  • Airline-portal and hotel-mailbox invoice capture for travel

Engine

  • Amount, date and PAN candidate blocking for re-coded invoice series
  • Credit notes, amendments, ISD and bills of entry as first-class records
  • Rate master versioned by effective date

Control

  • SSO with roles; maker-checker on bulk actions
  • Append-only server-side audit log and per-notice evidence export
  • IMS actions pushed back through the GSP, reconciled by read-back

Proof

  • A pilot on three months of a customer's real GSTR-2B, scored with the same false-match and recall definitions as the benchmark