Guide

Guide

What this is, how it works, and how to walk through it in ten minutes. Start here if you are new.

What is this?
One paragraph, no jargon

When a business takes payments online, three different documents describe the same money: the payment gateway's report, the bank statement, and the accountant's ledger. They never agree by themselves. Fees are taken, refunds lag, references get cut off, one bank credit covers fourteen payments. Someone has to line them up by hand, every month.

This does that lining-up automatically. It matches what it can prove, explains the gaps it can account for, and hands you a short, ranked list of the decisions only a person can make, each one with the evidence attached.

Razorpay
Razorpay settlement report

What the payment gateway says it collected from customers, what fees it took, and what it sent to your bank.

Quirk: Amounts arrive in paise. One settlement bundles many payments.

Bank
Bank statement

What actually landed in the account. The only source that proves money moved.

Quirk: Narrations get cut at about 100 characters, often chopping the reference number.

Tally
Tally daybook

What the accountant booked. Sales, receipts, fees, refunds: the version of events the books tell.

Quirk: Negatives look like (-)1,24,500.00, with Indian digit grouping.

evidence
Nothing closes without evidence

Every closed match records which stage closed it, which fields agreed, the arithmetic, and the rule version. Open any match and see exactly why.

ai boundary
The AI never decides a match

Matching, rules, tiering and the cash bridge are deterministic code. The AI reads, explains, drafts and answers questions. It cannot close anything.

abstention
Refusing is a correct answer

When two answers are equally valid, the system emits neither and escalates to you. A guess is the failure; an honest refusal is the feature.

Architecture
Four layers, one direction of dependency. The AI sits beside the engine, never inside it.
web/The dashboard you are looking at
Next.js 15React 19typed client generated from the API
api/Validates, calls the engine, serialises. No business logic.
FastAPI78 endpointsdry_run on every writeper-tenant scoping
engine/Pure logic. No database, no network, no clock inside.
ingestmatchingrulesexceptionscashauditagentllm
db/Postgres. Enforces what code cannot.
13 tablesrow-level securityimmutable rules triggerappend-only audit
Where the AI sits

engine/llm is one module among eight. The matching, rules, tiering and cash modules cannot import it; a build check fails if they try. With every model provider down, reconciliation still runs and every number still computes. Only the prose gets worse.

Why engine/ is pure

Same input always gives the same output, byte for byte. That is what makes a replay against a new rule meaningful and an audit trail reproducible.

What the database enforces

Tenants cannot see each other. An active rule cannot be edited, only versioned. The audit log cannot be updated or deleted. These are grants and triggers, not conventions.

How a reconciliation runs
Seven steps, in order. Numbers are from the seeded demo run.
  1. 1Ingest

    Read all three files, parse every bank narration for its rail and reference, normalise names, and turn everything into one common record.

    1,575 events from 500 orders
  2. 2Block

    Group records by amount and date so only plausible pairs are compared, not every record against every other.

    332,520 pairs to 6,170 candidates
  3. 3Match

    Five passes, strictest first: exact reference, fee-adjusted arithmetic, date shift, one credit to many payments, and last a fuzzy pass that only suggests.

    100% precision on auto-close
  4. 4Three-way

    Line up gateway, bank and books for each settlement. A match with no bank leg cannot close; the bank is the only proof money moved.

    87 groups fully three-way
  5. 5Apply rules

    The Rule Book explains gaps the arithmetic cannot: MDR, GST on MDR, TDS, marketplace commission. A rule shrinks a gap; it never just passes it.

    437 events rule-resolved
  6. 6Classify and rank

    Whatever is left becomes a decision with a category, a tier, a priority and a recommended action. Similar ones cluster into one root cause.

    48 exceptions, 11 root causes, 20 queue items
  7. 7Cash bridge

    Gross collected minus every deduction, compared to what the bank credited. The difference is the money you need to chase.

    Rs 1,02,271 at risk surfaced
Walk through the product
Follow the sidebar top to bottom. Each stop: what you will see, and one thing to try.
  1. 1
    Run

    Where files come in and a reconciliation starts. Each source shows how many rows were read and how many were rejected, with the reason.

    Try: Upload a Razorpay JSON, a bank CSV and a Tally export, or run the seeded demo data that is already there.

  2. 2
    Overview

    The books at a glance: how much matched on its own, how much a rule explained, and how many decisions are waiting for you.

    Try: Note the decisions count. That, not the total record count, is your workload.

  3. 3
    Decisions

    The ranked queue. Every card is something the system could not prove. Highest cash impact and nearest deadline sit at the top.

    Try: Open one. Read the evidence, the consequence if ignored, and the recommended action. Resolve, write off, snooze or escalate.

  4. 4
    Settlements

    Every settlement as a register: what Razorpay reported, what the bank credited, what the books say, and where each one stands.

    Try: Pick a settlement that did not fully close and follow it into Decisions.

  5. 5
    Reconcile

    Gross to bank, line by line. Every deduction between what customers paid and what landed in the account.

    Try: Click any line of the bridge. It opens the exact rows and decisions that make up that figure.

  6. 6
    Cash

    Money that is at risk, held in reserve, or claimable as GST input credit. The numbers a founder actually asks for.

    Try: Check the T+90 reserve releases. These are receivables most teams forget to chase.

  7. 7
    Rule Book

    The deduction policy as versioned rules: MDR by payment method, GST, TDS, marketplace commission, each with an effective date.

    Try: Draft a rule and back-test it. It shows which past decisions it would have explained before you activate it.

  8. 8
    Controller Activity

    A timeline of what the engine did on this run, and every AI call it made, with the model, the cost and the fallback used.

    Try: Find a call that fell back to a template. The page still worked; that is the design.

  9. 9
    Audit Trail

    Every decision in a hash chain. Each row carries the hash of the one before it, so nothing can be edited after the fact.

    Try: Export it as CSV. Hand that to an auditor.

  10. 10
    Evaluation

    Precision and recall per matching stage, the coverage curve, and the four quality gates that block a release.

    Try: Look at false_auto_resolutions. It must read 0. It does.

  11. 11
    Records

    Every normalised row from every source, searchable. The raw material behind everything above.

    Try: Search a UTR. See it in the bank, in Razorpay and in Tally side by side.

Ask the books

The assistant in the top bar answers plain-English questions from the data: how much is at risk this week, which settlements are short and by how much. It shows the SQL it ran, and every number in the answer traces to a real query result. A run summary can also be emailed automatically when a run completes; switch that on in Settings.

Words you will see
Finance terms used across the screens
TermMeaning
SettlementOne payout from Razorpay to your bank, bundling many customer payments net of fees.
UTRUnique Transaction Reference, the id a bank stamps on a NEFT, RTGS or IMPS transfer. The best matching key when it survives.
MDRMerchant Discount Rate, the fee the gateway charges per payment, by method (UPI, card, netbanking).
GST on MDR18% tax on the fee. Claimable back as input credit, which is why the Cash screen tracks it.
TDS 194-OTax deducted at source by an e-commerce operator before paying a seller.
Rolling reserveA slice of each settlement the gateway holds back, typically released after 90 days.
ChargebackA customer disputes a payment and the bank claws it back. Must be booked; the system flags any that are not.
NACH batchA single bank line covering many mandate debits. Without member detail it cannot be split, so it always escalates.
Three-way matchGateway, bank and ledger all agreeing on the same money movement.
DecisionAnything the system could not prove. Comes with a category, a tier, a priority and a recommended action.
AbstentionThe system deliberately not deciding because two answers were equally valid. Counted as a success.
EvidenceThe fields, arithmetic and rule version behind a match. Every closed match has it.
Dry runPreview any action before it happens. Every write in this app supports it.