Ledger Map · checked 23/10/2026 · live production data and the sample PDF folder · ← first page: where the ₹55,000 EMIs went

The three problems the other fix leaves open: what real data shows

The other fix makes contra suggestions look only at the PDFs of the current import. We ran that fix's own matching code on live production data and on the sample folder, and looked for proof of each remaining problem.

The short answer

Money out (debit) Money in (credit) Row from a PDF connected to the wrong bank ✓Right ✕Wrong

Problem 1 · A PDF connected to the wrong bank Proven

Nothing checks a PDF's bank link. The app knew these PDFs, because each one was uploaded and connected correctly 9 to 12 times before in the same party. It still gave no warning.

Case A · A wrong contra entry, accepted and still saved (live version, CMP0122)

Before: the import of 23:34 on 22/10/2026

₹77,000 loan PDF
AccountStatement_4153859322_…
✕ connected to Current account
Earlier uploads of the same PDF in this party
✓ 9 times, always to the ₹77,000 loan
The app saved the new link without a warning. The tracking event shows “previous: none” for this link.

Step 1: the import of 02:37 on 23/10/2026 · the app suggests a contra entry

₹77,000 loan · this import
09/10/2026ADV:TO GL AS CHARGES−27,396.06
⟷suggested
as contra
“Current account” · really the same loan PDF, 23:34 copy
09/10/2026O.S DEPOSIT+27,396.06

Both rows are from the same loan statement. They are the loan's own charge and deposit, not a transfer between two banks.

Step 2: 02:45:16 on 23/10/2026 · the suggestion is accepted

What you didPressed Accept in Contra entries, with the other suggestions of that minute.
What the app didSaved “CBI C/A” as the ledger of the loan's charge row, and the same on 8 older copies of that row.
✕ The ₹27,396.06 charge on the ₹77,000 loan is now booked as a transfer from the current account. It is not exported yet. Unpair it before the next export.

The fix stops this exact case, because it no longer reads the 23:34 import. Case B shows the same mistake inside one import.

Case B · The same wrong links inside one import, run through the fix's code

What happens: we ran the fix's code on the 23:34 import alone

The four PDFs were connected crosswise: current account PDF → “₹43,100 loan”, ₹43,100 loan PDF → “Current account”. The fix reads only this import, so these wrong links decide everything.

“₹43,100 loan” · really the current account PDF
25/06/2026WITHDRAWAL TRANSFER−43,100.00
⟷suggested
✕
“Current account” · really the ₹43,100 loan PDF
25/06/2026O.S. DEPOSIT TRANSFER+43,100.00
✕ Accepting it gives the current account's withdrawal the ledger “Current account”: a transfer from the current account to itself. The voucher file would then post the current account's rows to the ₹43,100 loan.
DateRow (PDF it really is)Suggested partner (PDF it really is)Right?
25/04/2026−43,100.00 WITHDRAWAL TRANSFER (current account)+43,100.00 O.S. DEPOSIT TRANSFER (₹43,100 loan)✕
25/05/2026−43,100.00 WITHDRAWAL TRANSFER (current account)+O.S DEPOSIT and +O.S. DEPOSIT TRANSFER, as a group (₹43,100 loan)✕
25/06/2026−43,100.00 WITHDRAWAL TRANSFER (current account)+43,100.00 O.S. DEPOSIT TRANSFER (₹43,100 loan)✕
25/07/2026−43,100.00 WITHDRAWAL TRANSFER (current account)+43,100.00 O.S. DEPOSIT TRANSFER (₹43,100 loan)✕
25/08/2026−43,100.00 WITHDRAWAL TRANSFER (current account)+43,100.00 O.S. DEPOSIT TRANSFER (₹43,100 loan)✕
25/09/2026−43,100.00 WITHDRAWAL TRANSFER (current account)+43,100.00 O.S. DEPOSIT TRANSFER (₹43,100 loan)✕
21/04/2026−3,800.00 LOAN TRF (current account)+TRANSFER REPAYMENT CHA and +DEPOSIT TRANSFER, as a group (₹43,100 loan)✕
03/10/2026−1,047.25 INSPECTIONCHARGERECOVERY (current account)+1,047.25 TRANSFER REPAYMENT CHA (₹77,000 loan)✕
05/10/2026−2,832.00 TRF (current account)+2,832.00 TRANSFER REPAYMENT CHA (₹77,000 loan)✕

All 9 suggestions have the wrong ledgers. The six ₹55,000 EMIs get no suggestion at all: both of their PDFs were connected to “₹43,100 loan”, and the app never pairs a bank with itself. So they go to Suspense.

Case C · A PDF of one party connected in another party (20/10/2026)

Acct_Statement_XXXXXXXX7920_20102026.pdf
HDFC statement of the account ending 7920
⟶07:26–07:33
3 uploads
✕ Party CMP0001 · HDFC current account ending 9790
⟶07:37
✓ Party CMP0005 · HDFC current account ending 7920
The same PDF (identical rows) was connected to a different account in another party. Nothing was exported from the wrong party, so there was no harm. But the file name said 7920 and the ledger said 9790, and the app did not notice. Party names are left out because this page is public.

Problem 2 · The account number in the file name is ignored Proven

When you connect a PDF, the app fills in a bank ledger only if the file name and the ledger name share a word. A shared account number alone counts for nothing. We ran the app's own fill-in code on every production upload (24 different file names per party).

2 of 24filled in by the app today (both by a bank name word: AXIS, ICICI)
12 of 24right ledger found by the account number in the file name (full or last 4 digits)
0wrong ledgers found by the number
1wrong link it would have flagged (Case C)
PartyFile nameApp fills todayAccount number finds
ASMARK (both parties)AccountStatement_4153859322_Oct15_…✕ nothing✓ CBI MACHINERY TERM LOAN 4153859322 – 77000
ASMARK (both parties)AccountStatement_5149380565_Oct15_…✕ nothing✓ CBI C/A 5149380565
ASMARK (both parties)AccountStatement_5164197786_Oct15_…✕ nothing✓ CBI MACHINERY TERM LOAN 5164197786 – 43100
ASMARK (both parties)AccountStatement_5701294918_Oct15_…✕ nothing✓ CBI MACHINERY TERM LOAN 5701294918 – 55000
CMP0005Acct_Statement_XXXXXXXX7920_…✕ nothing✓ HDFC C/A …7920
CMP0001Acct_Statement_XXXXXXXX7920_…✕ nothing; you picked …9790! no ledger ends in 7920: “Is this the right party?”
CMP0802Acct_Statement_XXXXXXXX9966_…✕ nothing✓ HDFC JETPUR C/A …9966
CMP0016Acct Statement_4396_03072026_…✕ nothing✓ HDFC C/A …4396
CMP2011Acct Statement_9001_16102026_…✕ nothing✓ HDFC CURRENT …9001
2 partiesAXIS BANK SA SOA 2025-26 · ICICI bank 01.04.2026…✓ by the bank nameno number in the name
Others2026_10_06_09_55_44 · IOB_22.10.2025… · Account_September 2026_XX1420 …nothingno number, or the Miracle ledger has none (“Kotak Bank”)

The number would also have caught two uploads into the wrong party: CMP0016's PDF (…4396) uploaded in ASMARK CMP0122, and CMP0235's PDF (…1420) uploaded in CMP0252. Neither was connected to a bank, so they did no harm.

Problem 3 · A row with two possible partners is hidden without a word Not found in real data

We looked for rows that the fixed code hides even though they have a possible partner.

0such rows in 16 production imports (the only 2 parties with several banks)
0such rows in 9 sample companies with two or more different banks (all their PDFs as one import)

The rule still exists, so it can happen. Below are made-up rows run through the fix's real matching code. These rows are not from your PDFs.

Made up · one transfer of ₹50,000

HDFC
10/05/2026TRANSFER TO SBI−50,000.00
SBI
10/05/2026BY TRANSFER+50,000.00
✓ 1 suggestion

Made up · two transfers of ₹50,000 on one day

HDFC
10/05/2026TRANSFER TO SBI−50,000.00
10/05/2026TRANSFER TO SBI−50,000.00
SBI
10/05/2026BY TRANSFER+50,000.00
10/05/2026BY TRANSFER+50,000.00
✕ 0 suggestions, and no message. Both transfers go to Suspense unless you pair them by hand (Alt+C).

A second made-up case: one current account paying two loans with the same EMI on the same day also gives 0 suggestions. Either way, any pair would be equally right in the books, so “show both and let me pick” would cost one click.

What this means