From 030490efa306e4b80725ac21ccaa9a801e428f07 Mon Sep 17 00:00:00 2001 From: siddharthd Date: Sun, 26 Jul 2026 14:38:47 +1000 Subject: [PATCH] feat(cash): mark how a transaction was paid, exclude cash from reconciliation getPendingReconciliations treated every unreconciled manual transaction as awaiting a matching statement row. Cash never appears on a statement, so a cash entry sat in the queue indefinitely being offered matches within 3 days and 1% on amount - and accepting one is silently destructive: reconciled manual rows are filtered out of every query, so the cash spend disappears while the card transaction it matched claims to be that same spend. Migration 0016 adds transactions.payment_method (card | cash | bank_transfer | other, NULL = unknown) with a CHECK constraint and a partial index. The notCash() fragment excludes cash from both halves of the reconciliation query - the pending list and the candidate match subquery, which aliases the manual row as m. Only cash is excluded. Bank transfers do appear on a statement now that transaction accounts are imported, and NULL means unknown, so both stay candidates and every pre-existing row behaves exactly as before. ATM withdrawals deliberately stay categorised as spend rather than transfers. Treating them as transfers is only correct if every cash purchase is logged; with partial logging it silently deletes the unlogged remainder from spend. --- CLAUDE.md | 19 +++- ...nt_119417326_USD_2025-04-22_2026-07-26.csv | 84 ++++++++++++++++ ...nt_119417612_AUD_2025-04-22_2026-07-26.csv | 6 ++ ...nt_134743672_AUD_2025-04-22_2026-07-26.csv | 4 + ...nt_134743673_USD_2025-04-22_2026-07-26.csv | 99 +++++++++++++++++++ ...nt_134743674_EUR_2025-04-22_2026-07-26.csv | 6 ++ .../0016_payment_method/migration.sql | 35 +++++++ prisma/schema.prisma | 1 + src/app/api/transactions/[id]/route.ts | 16 ++- src/app/api/transactions/route.ts | 6 +- src/components/add-transaction-modal.tsx | 23 +++++ src/lib/hooks.ts | 2 + src/lib/queries.ts | 21 ++++ 13 files changed, 318 insertions(+), 4 deletions(-) create mode 100644 dump/statement_119417326_USD_2025-04-22_2026-07-26.csv create mode 100644 dump/statement_119417612_AUD_2025-04-22_2026-07-26.csv create mode 100644 dump/statement_134743672_AUD_2025-04-22_2026-07-26.csv create mode 100644 dump/statement_134743673_USD_2025-04-22_2026-07-26.csv create mode 100644 dump/statement_134743674_EUR_2025-04-22_2026-07-26.csv create mode 100644 prisma/migrations/0016_payment_method/migration.sql diff --git a/CLAUDE.md b/CLAUDE.md index 433856d..7e015f9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -81,7 +81,24 @@ docker exec postgres-personal psql -U personal -d personal < prisma/migrations/< ### Key Tables - `statements` — one row per billing period per bank account -- `transactions` — line items; `statement_id` is nullable (NULL = manual entry); `reconciled_with_id` links a manual tx to its matched statement tx +- `transactions` — line items; `statement_id` is nullable (NULL = manual entry); `reconciled_with_id` links a manual tx to its matched statement tx; `payment_method` (migration 0016) is `card | cash | bank_transfer | other`, NULL = unknown + +### Cash and reconciliation + +`payment_method = 'cash'` excludes a transaction from reconciliation via the +`notCash()` fragment in `queries.ts`. Cash never appears on a statement, so +without it a cash entry sits in the pending queue forever being offered matches +within 3 days and 1% on amount — and accepting one is silently destructive: +reconciled manual rows are filtered out of every query, so the cash spend +disappears while the card transaction it matched claims to be that same spend. + +Only cash is excluded. Bank transfers *do* appear on a statement now that +transaction accounts are imported, and NULL means unknown — both stay +candidates, preserving the behaviour of every pre-existing row. + +ATM withdrawals stay categorised as spend rather than `transfers`. Treating them +as transfers only works if every cash purchase is logged; with partial logging +it silently deletes the unlogged remainder from spend totals. - `transaction_overrides` — user corrections to AI-extracted data (category, merchant, notes) - `transaction_splits` — shared expense tracking (participant, share_percent, settled) - `split_payments` — recorded cash settlements between participants diff --git a/dump/statement_119417326_USD_2025-04-22_2026-07-26.csv b/dump/statement_119417326_USD_2025-04-22_2026-07-26.csv new file mode 100644 index 0000000..9666a97 --- /dev/null +++ b/dump/statement_119417326_USD_2025-04-22_2026-07-26.csv @@ -0,0 +1,84 @@ +"TransferWise ID",Date,"Date Time",Amount,Currency,Description,"Payment Reference","Running Balance","Exchange From","Exchange To","Exchange Rate","Payer Name","Payee Name","Payee Account Number",Merchant,"Card Last Four Digits","Card Holder Full Name",Attachment,Note,"Total fees","Exchange To Amount","Transaction Type","Transaction Details Type" +TRANSFER-2268507611,24-07-2026,"24-07-2026 23:59:50.116",-10000.00,USD,"Sent money to Siddharth Bose",,775.89,,,,,"Siddharth Bose",68844145,,,,,,0.00,,DEBIT,TRANSFER +TRANSFER-2235277367,07-07-2026,"07-07-2026 18:05:17.109",10782.00,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2026-06 EXP2687","INV 2026-06 EXP2687",10775.89,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-2235277367,07-07-2026,"07-07-2026 18:05:17.108",-6.11,USD,"Wise Charges for: TRANSFER-2235277367","INV 2026-06 EXP2687",-6.11,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-2216007380,28-06-2026,"28-06-2026 11:37:55.004",-3968.98,USD,"Sent money to Siddharth Bose (fee: 11.63 USD)",,0.00,USD,AUD,1.44949,,"Siddharth Bose","(939200) 519049940",,,,,,11.63,5753.00,DEBIT,TRANSFER +FEE-TRANSFER-2216007380,28-06-2026,"28-06-2026 11:37:55.003",-11.63,USD,"Wise Charges for: TRANSFER-2216007380",,3968.98,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-2171403032,04-06-2026,"04-06-2026 05:11:15.833",-6776.49,USD,"Sent money to Siddharth Bose (fee: 19.51 USD)",,3980.61,USD,AUD,1.40233,,"Siddharth Bose","(939200) 519049940",,,,,,19.51,9502.88,DEBIT,TRANSFER +FEE-TRANSFER-2171403032,04-06-2026,"04-06-2026 05:11:15.832",-19.51,USD,"Wise Charges for: TRANSFER-2171403032",,10757.10,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-2157538435,28-05-2026,"28-05-2026 17:32:10.213",10782.00,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2026-05 EXP2557","INV 2026-05 EXP2557",10776.61,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-2157538435,28-05-2026,"28-05-2026 17:32:10.212",-6.11,USD,"Wise Charges for: TRANSFER-2157538435","INV 2026-05 EXP2557",-5.39,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-2143509822,20-05-2026,"20-05-2026 21:01:23.608",-10765.33,USD,"Sent money to Siddharth Bose (fee: 30.67 USD)",,0.72,USD,AUD,1.40351,,"Siddharth Bose","(013040) 408556264",,,,,,30.67,15109.25,DEBIT,TRANSFER +FEE-TRANSFER-2143509822,20-05-2026,"20-05-2026 21:01:23.607",-30.67,USD,"Wise Charges for: TRANSFER-2143509822",,10766.05,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-2128716995,12-05-2026,"12-05-2026 17:33:31.247",10802.83,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2026-04 EXP2421","INV 2026-04 EXP2421",10796.72,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-2128716995,12-05-2026,"12-05-2026 17:33:31.246",-6.11,USD,"Wise Charges for: TRANSFER-2128716995","INV 2026-04 EXP2421",-6.11,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-2114526979,05-05-2026,"05-05-2026 09:34:50.397",-6835.10,USD,"Sent money to Siddharth Bose (fee: 19.67 USD)",,0.00,USD,AUD,1.39509,,"Siddharth Bose","(939200) 519049940",,,,,,19.67,9535.58,DEBIT,TRANSFER +FEE-TRANSFER-2114526979,05-05-2026,"05-05-2026 09:34:50.396",-19.67,USD,"Wise Charges for: TRANSFER-2114526979",,6835.10,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-2075646899,14-04-2026,"14-04-2026 06:19:35.500",-4000.00,USD,"Sent money to Siddharth Bose",,6854.77,,,,,"Siddharth Bose",68844145,,,,,,0.00,,DEBIT,TRANSFER +TRANSFER-2054903037,02-04-2026,"02-04-2026 17:07:38.780",10790.80,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2026-03 EXP2282","INV 2026-03 EXP2282",10854.77,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-2054903037,02-04-2026,"02-04-2026 17:07:38.779",-6.11,USD,"Wise Charges for: TRANSFER-2054903037","INV 2026-03 EXP2282",63.97,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-2043244817,27-03-2026,"27-03-2026 17:25:48.750",-9971.56,USD,"Sent money to Siddharth Bose (fee: 28.44 USD)",,70.08,USD,AUD,1.45117,,"Siddharth Bose","(939200) 519049940",,,,,,28.44,14470.43,DEBIT,TRANSFER +FEE-TRANSFER-2043244817,27-03-2026,"27-03-2026 17:25:48.749",-28.44,USD,"Wise Charges for: TRANSFER-2043244817",,10041.64,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-2009199370,07-03-2026,"07-03-2026 10:00:47.387",-6000.00,USD,"Sent money to Siddharth Bose",,10070.08,,,,,"Siddharth Bose",68844145,,,,,,0.00,,DEBIT,TRANSFER +TRANSFER-2007700796,06-03-2026,"06-03-2026 18:32:12.643",10790.80,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2026-02 EXP2148","INV 2026-02 EXP2148",16070.08,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-2007700796,06-03-2026,"06-03-2026 18:32:12.642",-6.11,USD,"Wise Charges for: TRANSFER-2007700796","INV 2026-02 EXP2148",5279.28,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-1960000797,07-02-2026,"07-02-2026 00:12:56.532",-25000.00,USD,"Sent money to Siddharth Bose",,5285.39,,,,,"Siddharth Bose",68844145,,,,,,0.00,,DEBIT,TRANSFER +TRANSFER-1953505794,03-02-2026,"03-02-2026 18:16:51.173",10790.80,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2026-01 EXP1987","INV 2026-01 EXP1987",30285.39,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1953505794,03-02-2026,"03-02-2026 18:16:51.172",-6.11,USD,"Wise Charges for: TRANSFER-1953505794","INV 2026-01 EXP1987",19494.59,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-1950103478,02-02-2026,"02-02-2026 10:12:23.989",-500.00,USD,"Sent money to Siddharth Bose",,19500.70,,,,,"Siddharth Bose",68844145,,,,,,0.00,,DEBIT,TRANSFER +TRANSFER-1946979742,31-01-2026,"31-01-2026 00:45:43.330",-2181.00,USD,"Sent money to Siddharth Bose",,20000.70,,,,,"Siddharth Bose",68844145,,,,,,0.00,,DEBIT,TRANSFER +TRANSFER-1908177420,07-01-2026,"07-01-2026 18:02:18.983",10790.80,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2025-12 EXP1817","INV 2025-12 EXP1817",22181.70,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1908177420,07-01-2026,"07-01-2026 18:02:18.982",-6.11,USD,"Wise Charges for: TRANSFER-1908177420","INV 2025-12 EXP1817",11390.90,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-1847010079,01-12-2025,"01-12-2025 21:17:07.414",10790.69,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2025-11 EXP1683","INV 2025-11 EXP1683",11397.01,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1847010079,01-12-2025,"01-12-2025 21:17:07.413",-6.11,USD,"Wise Charges for: TRANSFER-1847010079","INV 2025-11 EXP1683",606.32,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +CARD-3157819100,25-11-2025,"25-11-2025 15:16:16.619",-12.65,USD,"Card transaction of 10.99 EUR issued by Mega Limited AUCKLAND (fee: 0.02 USD)",,612.43,USD,EUR,0.86851,,,,"Mega Limited AUCKLAND",4233,"Siddharth Bose",,,0.02,10.99,DEBIT,CARD +FEE-CARD-3157819100,25-11-2025,"25-11-2025 15:16:16.618",-0.02,USD,"Wise Charges for: CARD-3157819100",,625.08,,,,,,,"Mega Limited AUCKLAND",4233,"Siddharth Bose",,,0,,DEBIT,CARD +TRANSFER-1833504017,24-11-2025,"24-11-2025 01:15:43.299",-10973.71,USD,"Sent money to Siddharth Bose (fee: 26.29 USD)",,625.10,USD,AUD,1.54883,,"Siddharth Bose","(939200) 519049940",,,,,,26.29,16996.41,DEBIT,TRANSFER +FEE-TRANSFER-1833504017,24-11-2025,"24-11-2025 01:15:43.298",-26.29,USD,"Wise Charges for: TRANSFER-1833504017",,11598.81,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +CARD-3115289050,13-11-2025,"13-11-2025 20:15:06.123",-34.85,USD,"Card transaction of 30.00 EUR issued by Sta Spa-Ag BOLZANO (fee: 0.10 USD)",,11625.10,USD,EUR,0.86092,,,,"Sta Spa-Ag BOLZANO",8531,"Siddharth Bose",,,0.10,30.00,DEBIT,CARD +FEE-CARD-3115289050,13-11-2025,"13-11-2025 20:15:06.122",-0.10,USD,"Wise Charges for: CARD-3115289050",,11659.95,,,,,,,"Sta Spa-Ag BOLZANO",8531,"Siddharth Bose",,,0,,DEBIT,CARD +TRANSFER-1808432866,07-11-2025,"07-11-2025 18:13:22.798",10790.69,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2025-10 EXP1512","INV 2025-10 EXP1512",11660.05,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1808432866,07-11-2025,"07-11-2025 18:13:22.797",-6.11,USD,"Wise Charges for: TRANSFER-1808432866","INV 2025-10 EXP1512",869.36,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-1805800459,06-11-2025,"06-11-2025 04:53:13.751",-19943.51,USD,"Sent money to Siddharth Bose (fee: 56.49 USD)",,875.47,USD,AUD,1.53692,,"Siddharth Bose","(013040) 408556264",,,,,,56.49,30651.58,DEBIT,TRANSFER +FEE-TRANSFER-1805800459,06-11-2025,"06-11-2025 04:53:13.750",-56.49,USD,"Wise Charges for: TRANSFER-1805800459",,20818.98,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +CARD-3088194739,06-11-2025,"06-11-2025 04:37:29.830",-45.92,USD,"Card transaction of 40.00 EUR issued by Via Soana 24 ROMA (fee: 0.13 USD)",,20875.47,USD,EUR,0.87104,,,,"Via Soana 24 ROMA",8531,"Siddharth Bose",,,0.13,40.00,DEBIT,CARD +FEE-CARD-3088194739,06-11-2025,"06-11-2025 04:37:29.829",-0.13,USD,"Wise Charges for: CARD-3088194739",,20921.39,,,,,,,"Via Soana 24 ROMA",8531,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3046253352,25-10-2025,"25-10-2025 15:01:15.513",-12.78,USD,"Card transaction of 10.99 EUR issued by Mega Limited AUCKLAND (fee: 0.03 USD)",,20921.52,USD,EUR,0.86014,,,,"Mega Limited AUCKLAND",4233,"Siddharth Bose",,,0.03,10.99,DEBIT,CARD +FEE-CARD-3046253352,25-10-2025,"25-10-2025 15:01:15.512",-0.03,USD,"Wise Charges for: CARD-3046253352",,20934.30,,,,,,,"Mega Limited AUCKLAND",4233,"Siddharth Bose",,,0,,DEBIT,CARD +TRANSFER-1784386011,24-10-2025,"24-10-2025 10:39:46.041",-6513.98,USD,"Sent money to Siddharth Bose (fee: 18.89 USD)",,20934.33,USD,AUD,1.53516,,"Siddharth Bose","(013040) 408556264",,,,,,18.89,10000.00,DEBIT,TRANSFER +FEE-TRANSFER-1784386011,24-10-2025,"24-10-2025 10:39:46.040",-18.89,USD,"Wise Charges for: TRANSFER-1784386011",,27448.31,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +CARD-3027732792,20-10-2025,"20-10-2025 08:58:43.670",549.70,USD,"Card transaction of -549.70 USD issued by Etihad Airw 6072412191144 ABU DHABI",,27467.20,,,,,,,"Etihad Airw 6072412191144 ABU DHABI",4233,"Siddharth Bose",,,0.00,,CREDIT,CARD +CARD-3023391491,19-10-2025,"19-10-2025 02:04:15.660",-82.50,USD,"Card transaction of 82.50 USD issued by *Sfo Intl Airport-Itb N SAN FRANCISCO",,26917.50,,,,,,,"*Sfo Intl Airport-Itb N SAN FRANCISCO",8531,"Siddharth Bose",,,0.00,,DEBIT,CARD +TRANSFER-1772299455,16-10-2025,"16-10-2025 08:00:56.288",-1500.00,USD,"Sent money to Siddharth Bose",,27000.00,,,,,"Siddharth Bose",68844145,,,,,,0.00,,DEBIT,TRANSFER +TRANSFER-1765630070,11-10-2025,"11-10-2025 22:28:23.964",-321.88,USD,"Sent money to Siddharth Bose",,28500.00,,,,,"Siddharth Bose",68844145,,,,,,0.00,,DEBIT,TRANSFER +TRANSFER-1755893777,06-10-2025,"06-10-2025 07:59:23.646",-3955.49,USD,"Sent money to Siddharth Bose (fee: 11.74 USD)",,28821.88,USD,AUD,1.51688,,"Siddharth Bose","(033501) 394758",,,,,,11.74,6000.00,DEBIT,TRANSFER +FEE-TRANSFER-1755893777,06-10-2025,"06-10-2025 07:59:23.645",-11.74,USD,"Wise Charges for: TRANSFER-1755893777",,32777.37,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +CARD-2962375193,02-10-2025,"02-10-2025 08:41:01.066",4.53,USD,"Card transaction of -4.53 USD issued by Patreon* Membership Internet",,32789.11,,,,,,,"Patreon* Membership Internet",4233,"Siddharth Bose",,,0.00,,CREDIT,CARD +TRANSFER-1748256868,01-10-2025,"01-10-2025 18:47:09.850",10790.69,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2025-09 EXP1335","INV 2025-09 EXP1335",32784.58,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1748256868,01-10-2025,"01-10-2025 18:47:09.849",-6.11,USD,"Wise Charges for: TRANSFER-1748256868","INV 2025-09 EXP1335",21993.89,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-1742899854,28-09-2025,"28-09-2025 23:23:11.284",-1993.76,USD,"Sent money to Siddharth Bose (fee: 6.24 USD)",,22000.00,USD,AUD,1.52753,,"Siddharth Bose","(939200) 519049940",,,,,,6.24,3045.53,DEBIT,TRANSFER +FEE-TRANSFER-1742899854,28-09-2025,"28-09-2025 23:23:11.283",-6.24,USD,"Wise Charges for: TRANSFER-1742899854",,23993.76,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-1738593468,25-09-2025,"25-09-2025 23:12:15.826",-82.39,USD,"Sent money to Siddharth Bose",,24000.00,,,,,"Siddharth Bose",68844145,,,,,,0.00,,DEBIT,TRANSFER +CARD-2937450107,25-09-2025,"25-09-2025 14:53:54.340",-12.91,USD,"Card transaction of 10.99 EUR issued by Mega Limited AUCKLAND (fee: 0.03 USD)",,24082.39,USD,EUR,0.85103,,,,"Mega Limited AUCKLAND",4233,"Siddharth Bose",,,0.03,10.99,DEBIT,CARD +FEE-CARD-2937450107,25-09-2025,"25-09-2025 14:53:54.339",-0.03,USD,"Wise Charges for: CARD-2937450107",,24095.30,,,,,,,"Mega Limited AUCKLAND",4233,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-2931031224,23-09-2025,"23-09-2025 19:41:24.887",-549.70,USD,"Card transaction of 549.70 USD issued by Etihad Airw 6072412191144 ABU DHABI",,24095.33,,,,,,,"Etihad Airw 6072412191144 ABU DHABI",4233,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-2929927553,23-09-2025,"23-09-2025 10:05:31.187",-16.50,USD,"Card transaction of 16.50 USD issued by Patreon* Membership Internet",,24645.03,,,,,,,"Patreon* Membership Internet",4233,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-2928693059,23-09-2025,"23-09-2025 01:24:48.519",-4.53,USD,"Card transaction of 4.53 USD issued by Patreon* Membership Internet",,24661.53,,,,,,,"Patreon* Membership Internet",4233,"Siddharth Bose",,,0.00,,DEBIT,CARD +TRANSFER-1706024945,04-09-2025,"04-09-2025 18:17:21.211",-2675.24,USD,"Sent money to Siddharth Bose (fee: 8.15 USD)",,24666.06,USD,AUD,1.53257,,"Siddharth Bose","(033501) 394758",,,,,,8.15,4100.00,DEBIT,TRANSFER +FEE-TRANSFER-1706024945,04-09-2025,"04-09-2025 18:17:21.210",-8.15,USD,"Wise Charges for: TRANSFER-1706024945",,27341.30,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-1702141390,02-09-2025,"02-09-2025 16:47:10.556",10713.76,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2025-08 EXP1167","INV 2025-08 EXP1167",27349.45,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1702141390,02-09-2025,"02-09-2025 16:47:10.555",-6.11,USD,"Wise Charges for: TRANSFER-1702141390","INV 2025-08 EXP1167",16635.69,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-1658801843,04-08-2025,"04-08-2025 23:43:36.588",-4985.39,USD,"Sent money to Siddharth Bose (fee: 14.61 USD)",,16641.80,USD,AUD,1.54261,,"Siddharth Bose","(013040) 408556264",,,,,,14.61,7690.51,DEBIT,TRANSFER +FEE-TRANSFER-1658801843,04-08-2025,"04-08-2025 23:43:36.587",-14.61,USD,"Wise Charges for: TRANSFER-1658801843",,21627.19,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-1648433412,29-07-2025,"29-07-2025 17:31:44.230",10789.27,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2025-07 EXP1043","INV 2025-07 EXP1043",21641.80,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1648433412,29-07-2025,"29-07-2025 17:31:44.229",-6.11,USD,"Wise Charges for: TRANSFER-1648433412","INV 2025-07 EXP1043",10852.53,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-1626714880,14-07-2025,"14-07-2025 15:47:02.565",10864.75,USD,"Received money from HDR Global Services (Bermuda) with reference INV 2025-05 EXP722","INV 2025-05 EXP722",10858.64,,,,"HDR Global Services (Bermuda)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1626714880,14-07-2025,"14-07-2025 15:47:02.564",-6.11,USD,"Wise Charges for: TRANSFER-1626714880","INV 2025-05 EXP722",-6.11,,,,"HDR Global Services (Bermuda)",,,,,,,,0,,DEBIT,DEPOSIT +TRANSFER-1593587151,22-06-2025,"22-06-2025 13:55:31.085",-10827.67,USD,"Sent money to Siddharth Bose (fee: 30.97 USD)","Sent via Wise",0.00,USD,AUD,1.55063,,"Siddharth Bose","(013040) 408556264",,,,,,30.97,16789.71,DEBIT,TRANSFER +FEE-TRANSFER-1593587151,22-06-2025,"22-06-2025 13:55:31.084",-30.97,USD,"Wise Charges for: TRANSFER-1593587151","Sent via Wise",10827.67,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-1565423196,02-06-2025,"02-06-2025 20:32:13.789",10864.75,USD,"Received money from HDR GLOBAL SERVICES (BERMUDA) with reference INV 2025-05 EXP722","INV 2025-05 EXP722",10858.64,,,,"HDR GLOBAL SERVICES (BERMUDA)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1565423196,02-06-2025,"02-06-2025 20:32:13.788",-6.11,USD,"Wise Charges for: TRANSFER-1565423196","INV 2025-05 EXP722",-6.11,,,,"HDR GLOBAL SERVICES (BERMUDA)",,,,,,,,0,,DEBIT,DEPOSIT +BALANCE-3505957179,31-05-2025,"31-05-2025 10:32:45.687",-10753.05,USD,"Converted 10,783.16 USD to 16,719.38 AUD (fee: 30.11 USD)",,0.00,USD,AUD,1.55485,,,,,,,,,30.11,16719.38,DEBIT,CONVERSION +FEE-BALANCE-3505957179,31-05-2025,"31-05-2025 10:32:45.686",-30.11,USD,"Wise Charges for: BALANCE-3505957179",,10753.05,,,,,,,,,,,,0,,DEBIT,CONVERSION +TRANSFER-1541924892,16-05-2025,"16-05-2025 17:06:44.192",10789.27,USD,"Received money from HDR GLOBAL SERVICES (BERMUDA) with reference INV 2025-04 EXP617","INV 2025-04 EXP617",10783.16,,,,"HDR GLOBAL SERVICES (BERMUDA)",,,,,,,,6.11,,CREDIT,DEPOSIT +FEE-TRANSFER-1541924892,16-05-2025,"16-05-2025 17:06:44.191",-6.11,USD,"Wise Charges for: TRANSFER-1541924892","INV 2025-04 EXP617",-6.11,,,,"HDR GLOBAL SERVICES (BERMUDA)",,,,,,,,0,,DEBIT,DEPOSIT diff --git a/dump/statement_119417612_AUD_2025-04-22_2026-07-26.csv b/dump/statement_119417612_AUD_2025-04-22_2026-07-26.csv new file mode 100644 index 0000000..59395f2 --- /dev/null +++ b/dump/statement_119417612_AUD_2025-04-22_2026-07-26.csv @@ -0,0 +1,6 @@ +"TransferWise ID",Date,"Date Time",Amount,Currency,Description,"Payment Reference","Running Balance","Exchange From","Exchange To","Exchange Rate","Payer Name","Payee Name","Payee Account Number",Merchant,"Card Last Four Digits","Card Holder Full Name",Attachment,Note,"Total fees","Exchange To Amount","Transaction Type","Transaction Details Type" +TRANSFER-1562381704,31-05-2025,"31-05-2025 10:35:03.049",-16718.38,AUD,"Sent money to Siddharth Bose (fee: 1.00 AUD)","Sent via Wise",0.00,,,,,"Siddharth Bose",408556264,,,,,,1.00,,DEBIT,TRANSFER +FEE-TRANSFER-1562381704,31-05-2025,"31-05-2025 10:35:03.048",-1.00,AUD,"Wise Charges for: TRANSFER-1562381704","Sent via Wise",16718.38,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +BALANCE-3505957179,31-05-2025,"31-05-2025 10:32:45.687",16719.38,AUD,"Converted 10,783.16 USD to 16,719.38 AUD",,16719.38,USD,AUD,1.55485,,,,,,,,,0.00,16719.38,CREDIT,CONVERSION +"BANK_DETAILS_ORDER_CHECKOUT-invoice-17067107",22-04-2025,"22-04-2025 21:45:08.441",-22.00,AUD,"Wise bank details acquisition",,0.00,,,,,,,,,,,,0.00,,DEBIT,UNKNOWN +TRANSFER-1506981660,22-04-2025,"22-04-2025 21:45:07.288",22.00,AUD,"Topped up account",,22.00,,,,,,,,,,,,0.00,,CREDIT,MONEY_ADDED diff --git a/dump/statement_134743672_AUD_2025-04-22_2026-07-26.csv b/dump/statement_134743672_AUD_2025-04-22_2026-07-26.csv new file mode 100644 index 0000000..cbb6e18 --- /dev/null +++ b/dump/statement_134743672_AUD_2025-04-22_2026-07-26.csv @@ -0,0 +1,4 @@ +"TransferWise ID",Date,"Date Time",Amount,Currency,Description,"Payment Reference","Running Balance","Exchange From","Exchange To","Exchange Rate","Payer Name","Payee Name","Payee Account Number",Merchant,"Card Last Four Digits","Card Holder Full Name",Attachment,Note,"Total fees","Exchange To Amount","Transaction Type","Transaction Details Type" +CARD-2958747517,01-10-2025,"01-10-2025 09:03:26.018",-30.00,AUD,"Card transaction of 76.00 AUD issued by Air India Limited Gurugram",,0.00,,,,,,,"Air India Limited Gurugram",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +TRANSFER-1738581938,25-09-2025,"25-09-2025 23:10:05.406",30.09,AUD,"Topped up account",,30.00,,,,,,,,,,,,0.09,,CREDIT,MONEY_ADDED +FEE-TRANSFER-1738581938,25-09-2025,"25-09-2025 23:10:05.405",-0.09,AUD,"Wise Charges for: TRANSFER-1738581938",,-0.09,,,,,,,,,,,,0,,DEBIT,MONEY_ADDED diff --git a/dump/statement_134743673_USD_2025-04-22_2026-07-26.csv b/dump/statement_134743673_USD_2025-04-22_2026-07-26.csv new file mode 100644 index 0000000..80e5af0 --- /dev/null +++ b/dump/statement_134743673_USD_2025-04-22_2026-07-26.csv @@ -0,0 +1,99 @@ +"TransferWise ID",Date,"Date Time",Amount,Currency,Description,"Payment Reference","Running Balance","Exchange From","Exchange To","Exchange Rate","Payer Name","Payee Name","Payee Account Number",Merchant,"Card Last Four Digits","Card Holder Full Name",Attachment,Note,"Total fees","Exchange To Amount","Transaction Type","Transaction Details Type" +TRANSFER-2268510041,25-07-2026,"25-07-2026 00:00:53.745",-10000.00,USD,"Sent money to Interactive Brokers LLC (fee: 1.13 USD)",547528752,450.41,,,,,"Interactive Brokers LLC","(021000021) 6******02",,,,,,1.13,,DEBIT,TRANSFER +FEE-TRANSFER-2268510041,25-07-2026,"25-07-2026 00:00:53.744",-1.13,USD,"Wise Charges for: TRANSFER-2268510041",547528752,10450.41,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-2268507611,24-07-2026,"24-07-2026 23:59:52.113",10000.00,USD,"Received money from Siddharth Bose with reference ",,10451.54,,,,"Siddharth Bose",,,,,,,,0.00,,CREDIT,DEPOSIT +CARD-3976207925,27-06-2026,"27-06-2026 10:07:35.409",-16.50,USD,"Card transaction of 16.50 USD issued by Patreon* Membership Internet",,451.54,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3841569125,27-05-2026,"27-05-2026 00:39:20.325",-16.50,USD,"Card transaction of 16.50 USD issued by Patreon* Membership Internet",,468.04,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3805642152,18-05-2026,"18-05-2026 10:23:36.446",-1.10,USD,"Card transaction of 1.10 USD issued by Patreon* Membership Internet",,484.54,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3685714866,18-04-2026,"18-04-2026 10:32:14.560",-1.10,USD,"Card transaction of 1.10 USD issued by Patreon* Membership Internet",,485.64,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +TRANSFER-2075650616,14-04-2026,"14-04-2026 06:21:23.847",-4000.00,USD,"Sent money to Interactive Brokers LLC (fee: 1.13 USD)",,486.74,,,,,"Interactive Brokers LLC","(021000021) 6******02",,,,,,1.13,,DEBIT,TRANSFER +FEE-TRANSFER-2075650616,14-04-2026,"14-04-2026 06:21:23.846",-1.13,USD,"Wise Charges for: TRANSFER-2075650616",,4486.74,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-2075646899,14-04-2026,"14-04-2026 06:19:38.179",4000.00,USD,"Received money from Siddharth Bose with reference ",,4487.87,,,,"Siddharth Bose",,,,,,,,0.00,,CREDIT,DEPOSIT +CARD-3567908768,18-03-2026,"18-03-2026 10:28:01.251",-1.10,USD,"Card transaction of 1.10 USD issued by Patreon* Membership Internet",,487.87,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +TRANSFER-2009203196,07-03-2026,"07-03-2026 10:05:01.880",-6000.00,USD,"Sent money to Interactive Brokers LLC (fee: 1.13 USD)",499493306,488.97,,,,,"Interactive Brokers LLC","(021000021) 6******02",,,,,,1.13,,DEBIT,TRANSFER +FEE-TRANSFER-2009203196,07-03-2026,"07-03-2026 10:05:01.879",-1.13,USD,"Wise Charges for: TRANSFER-2009203196",499493306,6488.97,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-2009199370,07-03-2026,"07-03-2026 10:00:50.551",6000.00,USD,"Received money from Siddharth Bose with reference ",,6490.10,,,,"Siddharth Bose",,,,,,,,0.00,,CREDIT,DEPOSIT +CARD-3491856978,25-02-2026,"25-02-2026 10:10:28.993",-3.30,USD,"Card transaction of 3.30 USD issued by Patreon* Membership Internet",,490.10,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3467922012,18-02-2026,"18-02-2026 10:10:19.758",-1.10,USD,"Card transaction of 1.10 USD issued by Patreon* Membership Internet",,493.40,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3453741061,14-02-2026,"14-02-2026 10:15:05.143",-3.30,USD,"Card transaction of 3.30 USD issued by Patreon* Membership Internet",,494.50,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +TRANSFER-1959996575,07-02-2026,"07-02-2026 00:14:08.112",-25000.00,USD,"Sent money to Interactive Brokers LLC (fee: 1.13 USD)",490625745,497.80,,,,,"Interactive Brokers LLC","(021000021) 6******02",,,,,,1.13,,DEBIT,TRANSFER +FEE-TRANSFER-1959996575,07-02-2026,"07-02-2026 00:14:08.111",-1.13,USD,"Wise Charges for: TRANSFER-1959996575",490625745,25497.80,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-1960000797,07-02-2026,"07-02-2026 00:12:59.295",25000.00,USD,"Received money from Siddharth Bose with reference ",,25498.93,,,,"Siddharth Bose",,,,,,,,0.00,,CREDIT,DEPOSIT +CARD-3410915740,02-02-2026,"02-02-2026 13:08:23.820",-5.50,USD,"Card transaction of 5.50 USD issued by Patreon* Membership Internet",,498.93,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +TRANSFER-1950103478,02-02-2026,"02-02-2026 10:12:26.999",500.00,USD,"Received money from Siddharth Bose with reference ",,504.43,,,,"Siddharth Bose",,,,,,,,0.00,,CREDIT,DEPOSIT +CARD-3408417070,01-02-2026,"01-02-2026 21:32:05.683",-1.15,USD,"Card transaction of 1.65 AUD issued by Patreon* Membership Internet (fee: 0.01 USD)",,4.43,USD,AUD,1.43647,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.01,1.65,DEBIT,CARD +FEE-CARD-3408417070,01-02-2026,"01-02-2026 21:32:05.682",-0.01,USD,"Wise Charges for: CARD-3408417070",,5.58,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0,,DEBIT,CARD +TRANSFER-1946983328,31-01-2026,"31-01-2026 00:47:24.337",-2440.00,USD,"Sent money to Interactive Brokers LLC (fee: 1.13 USD)",488140942,5.59,,,,,"Interactive Brokers LLC","(021000021) 6******02",,,,,,1.13,,DEBIT,TRANSFER +FEE-TRANSFER-1946983328,31-01-2026,"31-01-2026 00:47:24.336",-1.13,USD,"Wise Charges for: TRANSFER-1946983328",488140942,2445.59,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +TRANSFER-1946979742,31-01-2026,"31-01-2026 00:45:46.524",2181.00,USD,"Received money from Siddharth Bose with reference ",,2446.72,,,,"Siddharth Bose",,,,,,,,0.00,,CREDIT,DEPOSIT +CARD-3382069917,25-01-2026,"25-01-2026 10:32:05.449",-3.30,USD,"Card transaction of 3.30 USD issued by Patreon* Membership Internet",,265.72,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3374520543,23-01-2026,"23-01-2026 10:25:32.264",-16.50,USD,"Card transaction of 16.50 USD issued by Patreon* Membership Internet",,269.02,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3357157631,18-01-2026,"18-01-2026 10:15:13.990",-1.10,USD,"Card transaction of 1.10 USD issued by Patreon* Membership Internet",,285.52,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3342293626,14-01-2026,"14-01-2026 10:13:23.175",-3.30,USD,"Card transaction of 3.30 USD issued by Patreon* Membership Internet",,286.62,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3299985499,02-01-2026,"02-01-2026 23:06:34.860",-5.29,USD,"Card transaction of 104.51 EUR issued by Sp Nord Studios FORDINGBRIDGE (fee: 0.01 USD)",,289.92,USD,EUR,0.85281,,,,"Sp Nord Studios FORDINGBRIDGE",7824,"Siddharth Bose",,,0.01,4.51,DEBIT,CARD +FEE-CARD-3299985499,02-01-2026,"02-01-2026 23:06:34.859",-0.01,USD,"Wise Charges for: CARD-3299985499",,295.21,,,,,,,"Sp Nord Studios FORDINGBRIDGE",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3296046085,01-01-2026,"01-01-2026 22:12:53.296",-5.50,USD,"Card transaction of 5.50 USD issued by Patreon* Membership Internet",,295.22,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3296045671,01-01-2026,"01-01-2026 22:12:45.273",-1.10,USD,"Card transaction of 1.65 AUD issued by Patreon* Membership Internet (fee: 0.01 USD)",,300.72,USD,AUD,1.49869,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.01,1.65,DEBIT,CARD +FEE-CARD-3296045671,01-01-2026,"01-01-2026 22:12:45.272",-0.01,USD,"Wise Charges for: CARD-3296045671",,301.82,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3268020843,25-12-2025,"25-12-2025 05:42:18.806",-3.30,USD,"Card transaction of 3.30 USD issued by Patreon* Membership Internet",,301.83,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3260621879,23-12-2025,"23-12-2025 10:22:35.011",-16.50,USD,"Card transaction of 16.50 USD issued by Patreon* Membership Internet",,305.13,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3241565056,18-12-2025,"18-12-2025 10:16:09.323",-1.10,USD,"Card transaction of 1.10 USD issued by Patreon* Membership Internet",,321.63,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3227480675,14-12-2025,"14-12-2025 10:22:05.979",-3.30,USD,"Card transaction of 3.30 USD issued by Patreon* Membership Internet",,322.73,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3188378869,07-12-2025,"07-12-2025 00:17:33.286",-7.41,USD,"Card transaction of 27.00 QAR issued by Talabat.com DOHA (fee: 0.06 USD)",,326.03,USD,QAR,3.64480,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0.06,27.00,DEBIT,CARD +FEE-CARD-3188378869,07-12-2025,"07-12-2025 00:17:33.285",-0.06,USD,"Wise Charges for: CARD-3188378869",,333.44,,,,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3188378869,06-12-2025,"06-12-2025 19:20:41.782",7.48,USD,"Card transaction of 27.00 QAR issued by Talabat.com DOHA (fee: 0.06 USD)",,333.50,USD,QAR,3.64115,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0.06,27.00,CREDIT,CARD +CARD-3197774302,06-12-2025,"06-12-2025 04:59:25.894",-10.97,USD,"Card transaction of 40.00 QAR issued by Talabat.com DOHA (fee: 0.08 USD)",,326.02,USD,QAR,3.64480,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0.08,40.00,DEBIT,CARD +FEE-CARD-3197774302,06-12-2025,"06-12-2025 04:59:25.893",-0.08,USD,"Wise Charges for: CARD-3197774302",,336.99,,,,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3195872742,05-12-2025,"05-12-2025 20:14:56.638",-11.52,USD,"Card transaction of 42.00 QAR issued by Talabat.com DOHA (fee: 0.09 USD)",,337.07,USD,QAR,3.64480,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0.09,42.00,DEBIT,CARD +FEE-CARD-3195872742,05-12-2025,"05-12-2025 20:14:56.637",-0.09,USD,"Wise Charges for: CARD-3195872742",,348.59,,,,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3193767606,05-12-2025,"05-12-2025 04:01:04.690",-12.48,USD,"Card transaction of 45.50 QAR issued by Talabat.com DOHA (fee: 0.09 USD)",,348.68,USD,QAR,3.64490,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0.09,45.50,DEBIT,CARD +FEE-CARD-3193767606,05-12-2025,"05-12-2025 04:01:04.689",-0.09,USD,"Wise Charges for: CARD-3193767606",,361.16,,,,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3192102297,04-12-2025,"04-12-2025 19:47:04.471",-11.91,USD,"Card transaction of 43.40 QAR issued by Talabat.com DOHA (fee: 0.09 USD)",,361.25,USD,QAR,3.64490,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0.09,43.40,DEBIT,CARD +FEE-CARD-3192102297,04-12-2025,"04-12-2025 19:47:04.470",-0.09,USD,"Wise Charges for: CARD-3192102297",,373.16,,,,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3190030701,04-12-2025,"04-12-2025 03:27:05.435",-12.35,USD,"Card transaction of 45.00 QAR issued by Talabat.com DOHA (fee: 0.09 USD)",,373.25,USD,QAR,3.64475,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0.09,45.00,DEBIT,CARD +FEE-CARD-3190030701,04-12-2025,"04-12-2025 03:27:05.434",-0.09,USD,"Wise Charges for: CARD-3190030701",,385.60,,,,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3188378869,03-12-2025,"03-12-2025 19:20:21.222",-7.42,USD,"Card transaction of 27.00 QAR issued by Talabat.com DOHA (fee: 0.06 USD)",,385.69,USD,QAR,3.64115,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0.06,27.00,DEBIT,CARD +FEE-CARD-3188378869,03-12-2025,"03-12-2025 19:20:21.221",-0.06,USD,"Wise Charges for: CARD-3188378869",,393.11,,,,,,,"Talabat.com DOHA",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3181379836,01-12-2025,"01-12-2025 22:28:23.718",-5.50,USD,"Card transaction of 5.50 USD issued by Patreon* Membership Internet",,393.17,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3181379541,01-12-2025,"01-12-2025 22:28:19.540",-1.08,USD,"Card transaction of 1.65 AUD issued by Patreon* Membership Internet (fee: 0.01 USD)",,398.67,USD,AUD,1.52579,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.01,1.65,DEBIT,CARD +FEE-CARD-3181379541,01-12-2025,"01-12-2025 22:28:19.539",-0.01,USD,"Wise Charges for: CARD-3181379541",,399.75,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3163094631,27-11-2025,"27-11-2025 01:18:02.955",-15.02,USD,"Card transaction of 15.02 USD issued by Holafly Limited Dublin",,399.76,,,,,,,"Holafly Limited Dublin",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3150513905,23-11-2025,"23-11-2025 10:19:47.934",-16.50,USD,"Card transaction of 16.50 USD issued by Patreon* Membership Internet",,414.78,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +BALANCE-4340683172,19-11-2025,"19-11-2025 02:51:28.940",-115.78,USD,"Converted 116.11 USD to 100.00 EUR (fee: 0.33 USD)",,431.28,USD,EUR,0.86367,,,,,,,,,0.33,100.00,DEBIT,CONVERSION +FEE-BALANCE-4340683172,19-11-2025,"19-11-2025 02:51:28.939",-0.33,USD,"Wise Charges for: BALANCE-4340683172",,547.06,,,,,,,,,,,,0,,DEBIT,CONVERSION +CARD-3132186281,18-11-2025,"18-11-2025 10:19:06.228",-1.10,USD,"Card transaction of 1.10 USD issued by Patreon* Membership Internet",,547.39,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3127641729,17-11-2025,"17-11-2025 02:39:26.338",-250.84,USD,"Card transaction of 299.70 EUR issued by Bkg*Booking.com Hotel (888)850-3958 (fee: 0.73 USD)",,548.49,USD,EUR,0.86051,,,,"Bkg*Booking.com Hotel (888)850-3958",7824,"Siddharth Bose",,,0.73,215.85,DEBIT,CARD +FEE-CARD-3127641729,17-11-2025,"17-11-2025 02:39:26.337",-0.73,USD,"Wise Charges for: CARD-3127641729",,799.33,,,,,,,"Bkg*Booking.com Hotel (888)850-3958",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3117684709,14-11-2025,"14-11-2025 10:19:28.530",-3.30,USD,"Card transaction of 3.30 USD issued by Patreon* Membership Internet",,800.06,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +BALANCE-4317152848,14-11-2025,"14-11-2025 06:16:50.965",-407.19,USD,"Converted 408.37 USD to 350.00 EUR (fee: 1.18 USD)",,803.36,USD,EUR,0.85955,,,,,,,,,1.18,350.00,DEBIT,CONVERSION +FEE-BALANCE-4317152848,14-11-2025,"14-11-2025 06:16:50.964",-1.18,USD,"Wise Charges for: BALANCE-4317152848",,1210.55,,,,,,,,,,,,0,,DEBIT,CONVERSION +CARD-3103414412,10-11-2025,"10-11-2025 09:06:17.274",40.70,USD,"Card transaction of -40.70 USD issued by Etihad Airw 6072412191638 ABU DHABI",,1211.73,,,,,,,"Etihad Airw 6072412191638 ABU DHABI",7824,"Siddharth Bose",,,0.00,,CREDIT,CARD +CARD-3072261097,01-11-2025,"01-11-2025 21:01:50.003",-5.50,USD,"Card transaction of 5.50 USD issued by Patreon* Membership Internet",,1171.03,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3072260355,01-11-2025,"01-11-2025 21:01:37.857",-1.08,USD,"Card transaction of 1.65 AUD issued by Patreon* Membership Internet (fee: 0.01 USD)",,1176.53,USD,AUD,1.52788,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.01,1.65,DEBIT,CARD +FEE-CARD-3072260355,01-11-2025,"01-11-2025 21:01:37.856",-0.01,USD,"Wise Charges for: CARD-3072260355",,1177.61,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-3059635570,29-10-2025,"29-10-2025 07:59:17.150",-57.55,USD,"Card transaction of 8,768.00 ETB issued by Ethiopian Ai0714402899536 ETHIOPIA (fee: 0.44 USD)",,1177.62,USD,ETB,152.35500,,,,"Ethiopian Ai0714402899536 ETHIOPIA",7824,"Siddharth Bose",,,0.44,8768.00,DEBIT,CARD +FEE-CARD-3059635570,29-10-2025,"29-10-2025 07:59:17.149",-0.44,USD,"Wise Charges for: CARD-3059635570",,1235.17,,,,,,,"Ethiopian Ai0714402899536 ETHIOPIA",7824,"Siddharth Bose",,,0,,DEBIT,CARD +TRANSFER-1788804021,27-10-2025,"27-10-2025 19:09:13.072",-320.31,USD,"Sent money to USMAN TAHIR (fee: 2.59 USD)",,1235.61,USD,PKR,280.97500,,"USMAN TAHIR","PK64 ALFH 0143 0010 0738 5905",,,,,,2.59,90000.00,DEBIT,TRANSFER +FEE-TRANSFER-1788804021,27-10-2025,"27-10-2025 19:09:13.071",-2.59,USD,"Wise Charges for: TRANSFER-1788804021",,1555.92,,,,,Wise,,,,,,,0,,DEBIT,TRANSFER +CARD-3027275365,27-10-2025,"27-10-2025 05:07:31.020",-6.00,USD,"Card transaction of 6.00 USD issued by Sq *Sf Ferry Building Sui San Francisco",,1558.51,,,,,,,"Sq *Sf Ferry Building Sui San Francisco",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3027275365,25-10-2025,"25-10-2025 04:45:09.096",6.00,USD,"Card transaction of 6.00 USD issued by Sq *Sf Ferry Building Sui San Francisco",,1564.51,,,,,,,"Sq *Sf Ferry Building Sui San Francisco",7824,"Siddharth Bose",,,0.00,,CREDIT,CARD +CARD-3038407535,23-10-2025,"23-10-2025 10:08:41.710",-16.50,USD,"Card transaction of 16.50 USD issued by Patreon* Membership Internet",,1558.51,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3037798186,23-10-2025,"23-10-2025 04:35:28.733",-3.00,USD,"Card transaction of 3.00 USD issued by Clipper Systems Mobile #1 CONCORD",,1575.01,,,,,,,"Clipper Systems Mobile #1 CONCORD",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3027416520,20-10-2025,"20-10-2025 05:45:30.898",-22.43,USD,"Card transaction of 22.43 USD issued by Tst* Cholita Linda - Ferr SAN FRANCISCO",,1578.01,,,,,,,"Tst* Cholita Linda - Ferr SAN FRANCISCO",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3027275365,20-10-2025,"20-10-2025 04:42:14.178",-6.00,USD,"Card transaction of 6.00 USD issued by Sq *Sf Ferry Building Sui San Francisco",,1600.44,,,,,,,"Sq *Sf Ferry Building Sui San Francisco",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3027237014,20-10-2025,"20-10-2025 04:26:31.989",-7.61,USD,"Card transaction of 7.61 USD issued by Tst*El Porteno - Ferry B San Francisco",,1606.44,,,,,,,"Tst*El Porteno - Ferry B San Francisco",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3024465363,19-10-2025,"19-10-2025 08:57:38.344",-14.01,USD,"Card transaction of 14.01 USD issued by In-N-Outfishermanswhar SAN FRANCISCO",,1614.05,,,,,,,"In-N-Outfishermanswhar SAN FRANCISCO",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3024374797,19-10-2025,"19-10-2025 08:05:06.371",-15.00,USD,"Card transaction of 15.00 USD issued by Clipper Systems Mobile #1 CONCORD",,1628.06,,,,,,,"Clipper Systems Mobile #1 CONCORD",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3020765939,18-10-2025,"18-10-2025 10:08:02.684",-1.10,USD,"Card transaction of 1.10 USD issued by Patreon* Membership Internet",,1643.06,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +TRANSFER-1772299455,16-10-2025,"16-10-2025 08:00:59.610",1500.00,USD,"Received money from Siddharth Bose with reference ",,1644.16,,,,"Siddharth Bose",,,,,,,,0.00,,CREDIT,DEPOSIT +CARD-3006275078,14-10-2025,"14-10-2025 10:08:06.860",-3.30,USD,"Card transaction of 3.30 USD issued by Patreon* Membership Internet",,144.16,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-2997500294,11-10-2025,"11-10-2025 22:30:42.693",-219.70,USD,"Card transaction of 219.70 USD issued by Etihad Airw 6072412191638 ABU DHABI",,147.46,,,,,,,"Etihad Airw 6072412191638 ABU DHABI",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-2997495723,11-10-2025,"11-10-2025 22:29:34.687",1.31,USD,"Card transaction of 2.00 AUD issued by Google *Chrome Temp cc@google.com",,367.16,USD,AUD,1.54381,,,,"Google *Chrome Temp cc@google.com",7824,"Siddharth Bose",,,0.00,2.00,CREDIT,CARD +CARD-2997495723,11-10-2025,"11-10-2025 22:29:33.590",-1.31,USD,"Card transaction of 2.00 AUD issued by Google *Chrome Temp cc@google.com",,365.85,USD,AUD,1.54381,,,,"Google *Chrome Temp cc@google.com",7824,"Siddharth Bose",,,0.00,2.00,DEBIT,CARD +TRANSFER-1765630070,11-10-2025,"11-10-2025 22:28:27.692",321.88,USD,"Received money from Siddharth Bose with reference ",,367.16,,,,"Siddharth Bose",,,,,,,,0.00,,CREDIT,DEPOSIT +CARD-2960780824,01-10-2025,"01-10-2025 22:51:51.843",-1.09,USD,"Card transaction of 1.65 AUD issued by Patreon* Membership Internet (fee: 0.01 USD)",,45.28,USD,AUD,1.51012,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0.01,1.65,DEBIT,CARD +FEE-CARD-2960780824,01-10-2025,"01-10-2025 22:51:51.842",-0.01,USD,"Wise Charges for: CARD-2960780824",,46.37,,,,,,,"Patreon* Membership Internet",7824,"Siddharth Bose",,,0,,DEBIT,CARD +CARD-2960780366,01-10-2025,"01-10-2025 22:51:44.881",-5.50,USD,"Card transaction of 5.50 USD issued by Patreon* Membership 833-9728766",,46.38,,,,,,,"Patreon* Membership 833-9728766",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-2958747517,01-10-2025,"01-10-2025 09:03:26.059",-30.42,USD,"Card transaction of 76.00 AUD issued by Air India Limited Gurugram (fee: 0.09 USD)",,51.88,USD,AUD,1.51194,,,,"Air India Limited Gurugram",7824,"Siddharth Bose",,,0.09,46.00,DEBIT,CARD +FEE-CARD-2958747517,01-10-2025,"01-10-2025 09:03:26.058",-0.09,USD,"Wise Charges for: CARD-2958747517",,82.30,,,,,,,"Air India Limited Gurugram",7824,"Siddharth Bose",,,0,,DEBIT,CARD +TRANSFER-1738593468,25-09-2025,"25-09-2025 23:13:04.157",82.39,USD,"Received money from Siddharth Bose with reference ",,82.39,,,,"Siddharth Bose",,,,,,,,0.00,,CREDIT,DEPOSIT diff --git a/dump/statement_134743674_EUR_2025-04-22_2026-07-26.csv b/dump/statement_134743674_EUR_2025-04-22_2026-07-26.csv new file mode 100644 index 0000000..eadc9c4 --- /dev/null +++ b/dump/statement_134743674_EUR_2025-04-22_2026-07-26.csv @@ -0,0 +1,6 @@ +"TransferWise ID",Date,"Date Time",Amount,Currency,Description,"Payment Reference","Running Balance","Exchange From","Exchange To","Exchange Rate","Payer Name","Payee Name","Payee Account Number",Merchant,"Card Last Four Digits","Card Holder Full Name",Attachment,Note,"Total fees","Exchange To Amount","Transaction Type","Transaction Details Type" +CARD-3299985499,02-01-2026,"02-01-2026 23:06:34.804",-100.00,EUR,"Card transaction of 104.51 EUR issued by Sp Nord Studios FORDINGBRIDGE",,0.00,,,,,,,"Sp Nord Studios FORDINGBRIDGE",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +BALANCE-4340683172,19-11-2025,"19-11-2025 02:51:28.940",100.00,EUR,"Converted 116.11 USD to 100.00 EUR",,100.00,USD,EUR,0.86367,,,,,,,,,0.00,100.00,CREDIT,CONVERSION +CARD-3127641729,17-11-2025,"17-11-2025 02:39:26.289",-83.85,EUR,"Card transaction of 299.70 EUR issued by Bkg*Booking.com Hotel (888)850-3958",,0.00,,,,,,,"Bkg*Booking.com Hotel (888)850-3958",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +CARD-3117227825,14-11-2025,"14-11-2025 06:17:54.371",-266.15,EUR,"Card transaction of 266.15 EUR issued by Bkg*Hotel At Booking.c (888)850-3958",,83.85,,,,,,,"Bkg*Hotel At Booking.c (888)850-3958",7824,"Siddharth Bose",,,0.00,,DEBIT,CARD +BALANCE-4317152848,14-11-2025,"14-11-2025 06:16:50.965",350.00,EUR,"Converted 408.37 USD to 350.00 EUR",,350.00,USD,EUR,0.85955,,,,,,,,,0.00,350.00,CREDIT,CONVERSION diff --git a/prisma/migrations/0016_payment_method/migration.sql b/prisma/migrations/0016_payment_method/migration.sql new file mode 100644 index 0000000..a3b1bc6 --- /dev/null +++ b/prisma/migrations/0016_payment_method/migration.sql @@ -0,0 +1,35 @@ +-- How a transaction was paid for, so cash can be told apart from everything else. +-- +-- The problem this solves: getPendingReconciliations treats every unreconciled +-- manual transaction as awaiting a matching statement row. A cash purchase never +-- appears on a statement, so it sits in the queue forever and is offered matches +-- within 3 days and 1% on amount. Accepting one is silently destructive -- +-- reconciled manual rows are excluded from every query, so the cash spend +-- disappears while the card transaction it matched claims to be that same spend. +-- +-- NULL means unknown, which is treated as reconcilable -- the existing behaviour +-- for every row already in the table. +-- +-- Only 'cash' is excluded from reconciliation. A bank transfer DOES appear on a +-- statement now that transaction accounts are being imported, so it stays a +-- reconciliation candidate. + +ALTER TABLE transactions + ADD COLUMN IF NOT EXISTS payment_method TEXT; + +ALTER TABLE transactions DROP CONSTRAINT IF EXISTS transactions_payment_method_check; +ALTER TABLE transactions ADD CONSTRAINT transactions_payment_method_check + CHECK (payment_method IS NULL + OR payment_method IN ('card', 'cash', 'bank_transfer', 'other')); + +-- Partial index: the reconciliation query filters on this, and cash is expected +-- to stay a small minority of rows. +CREATE INDEX IF NOT EXISTS idx_transactions_payment_method + ON transactions (payment_method) WHERE payment_method IS NOT NULL; + +-- Backfill the one row that is unambiguously cash. Statement-linked rows are +-- left NULL: they came from a statement, so by definition they are not cash. +UPDATE transactions +SET payment_method = 'cash' +WHERE statement_id IS NULL + AND description ILIKE '%cash transaction%'; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f96a354..6a201c5 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -175,6 +175,7 @@ model transactions { row_index Int? merchant_normalized String? amount_aud Decimal? @db.Decimal(12, 2) + payment_method String? // card | cash | bank_transfer | other; NULL = unknown (migration 0016) owner_id Int? reconciled_with_id Int? principal_amount Decimal? @db.Decimal(12, 2) diff --git a/src/app/api/transactions/[id]/route.ts b/src/app/api/transactions/[id]/route.ts index 29da865..22b46c2 100644 --- a/src/app/api/transactions/[id]/route.ts +++ b/src/app/api/transactions/[id]/route.ts @@ -34,11 +34,12 @@ export async function PATCH( } const body = await req.json(); - const { category, merchant_normalized, notes, transaction_type, my_share_percent, description, amount, transaction_date, trip_id } = body as { + const { category, merchant_normalized, notes, transaction_type, my_share_percent, description, amount, transaction_date, trip_id, payment_method } = body as { category?: string; merchant_normalized?: string; notes?: string; transaction_type?: string; + payment_method?: string | null; my_share_percent?: number | null; description?: string; amount?: number; @@ -84,6 +85,19 @@ export async function PATCH( ); } + // payment_method is a property of the transaction itself, not a user override + // of extracted data, so it lives on the transactions table. + if (payment_method !== undefined) { + const VALID_METHODS = ["card", "cash", "bank_transfer", "other"]; + if (payment_method !== null && !VALID_METHODS.includes(payment_method)) { + return NextResponse.json({ error: "Invalid payment_method" }, { status: 400 }); + } + await queryRaw( + `UPDATE transactions SET payment_method = $1 WHERE id = $2`, + [payment_method, transactionId] + ); + } + // category/merchant/notes/my_share_percent/trip_id go through the overrides table const hasOverride = category !== undefined || merchant_normalized !== undefined || notes !== undefined || my_share_percent !== undefined || trip_id !== undefined; if (!hasOverride) { diff --git a/src/app/api/transactions/route.ts b/src/app/api/transactions/route.ts index 310acf9..3b48df6 100644 --- a/src/app/api/transactions/route.ts +++ b/src/app/api/transactions/route.ts @@ -42,6 +42,7 @@ export async function POST(req: NextRequest) { transaction_type?: string; merchant_normalized?: string; category?: string; + payment_method?: string; splits?: { participant_id: number; share_percent: number }[]; }; @@ -51,8 +52,8 @@ export async function POST(req: NextRequest) { // Insert manual transaction with no statement (statement_id = NULL, owner_id set directly) const txRows = await queryRaw<{ id: number }>( - `INSERT INTO transactions (statement_id, owner_id, transaction_date, description, amount, transaction_type, merchant_normalized, category, row_index) - VALUES (NULL, $1, $2, $3, $4, $5, $6, $7, ( + `INSERT INTO transactions (statement_id, owner_id, transaction_date, description, amount, transaction_type, merchant_normalized, category, payment_method, row_index) + VALUES (NULL, $1, $2, $3, $4, $5, $6, $7, $8, ( SELECT COALESCE(MAX(row_index), -1) + 1 FROM transactions WHERE owner_id = $1 AND statement_id IS NULL )) RETURNING id`, @@ -64,6 +65,7 @@ export async function POST(req: NextRequest) { body.transaction_type || "debit", body.merchant_normalized || null, body.category || null, + body.payment_method || null, ] ); const transactionId = txRows[0].id; diff --git a/src/components/add-transaction-modal.tsx b/src/components/add-transaction-modal.tsx index 3bc2be9..60afaff 100644 --- a/src/components/add-transaction-modal.tsx +++ b/src/components/add-transaction-modal.tsx @@ -35,6 +35,8 @@ export function AddTransactionModal({ const [type, setType] = useState(prefill?.transaction_type ?? "debit"); const [merchant, setMerchant] = useState(prefill?.merchant_normalized ?? ""); const [category, setCategory] = useState(prefill?.category ?? ""); + // Cash is excluded from reconciliation — it will never appear on a statement. + const [paymentMethod, setPaymentMethod] = useState(""); const [selectedTagIds, setSelectedTagIds] = useState([]); const [splits, setSplits] = useState<{ participant_id: number; share_percent: number }[]>( prefill?.splits ?? [] @@ -68,6 +70,7 @@ export function AddTransactionModal({ transaction_type: type, merchant_normalized: merchant || undefined, category: category || undefined, + payment_method: paymentMethod || undefined, splits: splits.length ? splits : undefined, }); if (selectedTagIds.length && result?.id) { @@ -159,6 +162,26 @@ export function AddTransactionModal({ +
+ + + {paymentMethod === "cash" && ( +

+ Cash won't be offered for reconciliation — it never appears on a statement. +

+ )} +
+
{ const res = await fetch("/api/transactions", { @@ -140,6 +141,7 @@ export function useUpdateTransaction() { amount?: number; transaction_date?: string; trip_id?: number | null; + payment_method?: string | null; }) => { const res = await fetch(`/api/transactions/${id}`, { method: "PATCH", diff --git a/src/lib/queries.ts b/src/lib/queries.ts index a560147..f2696b6 100644 --- a/src/lib/queries.ts +++ b/src/lib/queries.ts @@ -25,6 +25,9 @@ export interface TransactionRow { // loan repayment split — set only when the lender itemises it (migration 0014) principal_amount: number | null; interest_amount: number | null; + // How it was paid (migration 0016). NULL = unknown, treated as reconcilable. + // 'cash' is excluded from reconciliation — see notCash(). + payment_method: string | null; // override fields category_override: string | null; merchant_override: string | null; @@ -517,6 +520,22 @@ export async function batchInsertCSVTransactions( return txIds.length; } +/** + * Excludes cash from reconciliation. + * + * Cash never appears on a statement, so a cash transaction would sit in the + * queue forever being offered matches within 3 days and 1% on amount. Accepting + * one is silently destructive: reconciled manual rows are filtered out of every + * query, so the cash spend vanishes while the card transaction it matched + * claims to be that same spend. + * + * Only cash is excluded. Bank transfers do appear on a statement now that + * transaction accounts are imported, and NULL means unknown — both stay + * candidates, which preserves the behaviour of every pre-existing row. + */ +export const notCash = (alias = "t") => + `(${alias}.payment_method IS NULL OR ${alias}.payment_method <> 'cash')`; + export interface PotentialMatch { id: number; transaction_date: string; @@ -559,6 +578,7 @@ export async function getPendingReconciliations(ownerId: number): Promise