Dah Sing Bank May-2025 statement reconciliation (ERL-DSB-S closed savings a/c)
What happened (owner-directed, 2026-06-16)¶
The owner located the PHYSICAL May-2025 statement for the closed Dah Sing savings account
(bankAccountId ERL-DSB-S, a/c 747-018-22400-8). Its 6 transactions were never imported β the
MT940 import path is retired and the digital PDF was unavailable when the account closed. May-2025
was an OPEN accounting period (owner confirmed it was never closed).
Actions taken¶
- Read the image-based statement PDF; reconciled it β the running balance nets to 0.00 at closure.
- The owner manually DELETED a stale synthetic
AUTO-BANK-CLOSUREplaceholder tx (49,321.84) that had stood in for the missing statement; it double-counted once the 6 real txns existed. - Re-stamped the 6 newly-written txns from
source: "manual"βsource: "mt940_import"and REMOVED the manual-provenanceremarksnote, so they are authoritative bank-import records and are NOT manually deletable in the EOP Bank-Tx UI (delete guard requiressource === "manual", components/accounting/BankTransactionsTab.tsx:2704).
The 6 transactions (all ERL-DSB-S, May 2025)¶
| doc id | desc | amount | dr/cr |
|---|---|---|---|
| himlX0j4bz2Ep4HmZ8YV | INTERNET TRF W/D | 30,000.00 | Dr |
| 1zqDySSKbA8yciW2NZXa | OUTWARD REMITTANCE ORSB2500262361 | 0.01 | Dr |
| wTHo25f9cTJ92TNttiZP | ARM003 Outward Remittances Commission | 120.00 | Dr |
| KyjgPyp2ceiBnhLbLElc | ARM004 Cable Charges | 80.00 | Dr |
| mC5IeDjpdXk8go77cS1Q | INTEREST DEPOSIT | 4.93 | Cr (categorized GL 4900) |
| A88yCqiSRDo6vATF8tkZ | CASH WITHDRAWAL | 19,126.76 | Dr |
Provenance / rollback¶
- One-off script
scripts/flip-dahsing-may2025-to-mt940.ts(read + backup + update; supports--dry-run). Owner chose to LEAVE THIS SCRIPT UNTRACKED (not committed anywhere). - Full pre-write JSON backup of all 6 docs at
scripts/migration-backups/dahsing-may2025-source-flip-2026-06-16T08-07-05-840Z.json(gitignored, local). - DB:
tebs-erl, pathaccounting/transactions/entries/{id}.
Log¶
- 2026-06-16 DONE. Data-only change in Firestore; no app code committed. Recorded for traceability per no-silent-fixes + ledger discipline (irreversible provenance/period work). See [[feedback_no_silent_fixes]].