Recurring only. Every row here comes from the per-day chase files, which
are collapseToCustomers(day).filter(bucket === 'Finance' && !cleared) — and
Finance means the Square location name starts with Recurring. A card failing at the
studio counter is a sale that did not go through, not arrears, and it is not on this page.
Checked: 0 of the 7,556 source rows were studio sales, deposits or office declines, and
0 of the 101 rows in the download are anything other than Finance arrears
(0 owe nothing).
What went wrong. A day's hand-over file used to cut everyone the ledger had ever recorded, and the ledger has no time limit — so the customers who fail every cycle were handed over once and then dropped forever. On 31 August that cut 684 of 877 people and Hamad received 193 names. The cut rule was fixed on 3 Sep 2026; this page is the backlog it left behind.
How a person counts as handed over. They appear in the laptop's daily CSV, or Render's copy of it, or a weekly window file the ledger actually records as sent. Matching is Square customer id, then last-10-digit phone, then lowercased email — the same three keys the ledger uses. Where two copies of a day disagree, the larger hand-over wins, so this list under-claims rather than sending anyone a second call.
Download the recovery list — 101 people, one row each
One row per person, biggest debt first, with Days missed and Times missed
added to the usual chase columns. Somebody who missed on three different days is one row, not three.
11 column(s) are blank for some people —
BIN 101, Issuer 101, Early access 101, Card type 101, Prepaid 101, Payday stated 101, Payday kind 101, Payday stated on 101, Payday quote 101, Charge day 101, Charge day % 101 rows. Those columns were
added to the chase file after the older per-day lists were written, so a person whose latest miss is on an
older day has nothing to put there. The columns are kept rather than dropped so this file never stops
matching the chase file Hamad already works; rebuilding a day fills them in.
Of the 7,556 people who missed a recurring payment across the days we can check, 7,429 were handed over and 127 were not.
| Day | Missed a payment | Handed over | Never handed over | Past due missed | Where the hand-over came from |
|---|---|---|---|---|---|
| Thu, 17 Sept | 191 | 191 | 0 0.0% | — | daily file (laptop) 191 daily file (Render) 186 |
| Wed, 16 Sept | 171 | 171 | 0 0.0% | — | daily file (laptop) 171 daily file (Render) 170 |
| Tue, 15 Sept | 535 | 535 | 0 0.0% | — | daily file (laptop) 535 daily file (Render) 532 |
| Mon, 14 Sept | 126 | 126 | 0 0.0% | — | daily file (laptop) 126 daily file (Render) 126 |
| Sun, 13 Sept | 141 | 141 | 0 0.0% | — | daily file (laptop) 141 daily file (Render) 139 |
| Sat, 12 Sept | 137 | 137 | 0 0.0% | — | daily file (laptop) 137 daily file (Render) 137 |
| Fri, 11 Sept | 101 | 101 | 0 0.0% | — | daily file (laptop) 101 daily file (Render) 98 |
| Thu, 10 Sept | 205 | 205 | 0 0.0% | — | daily file (laptop) 205 daily file (Render) 205 |
| Wed, 9 Sept | 107 | 107 | 0 0.0% | — | daily file (laptop) 107 daily file (Render) 106 |
| Tue, 8 Sept | 100 | 100 | 0 0.0% | — | daily file (laptop) 100 daily file (Render) 99 |
| Mon, 7 Sept | 100 | 100 | 0 0.0% | — | daily file (laptop) 100 daily file (Render) 100 |
| Sat, 5 Sept | 171 | 171 | 0 0.0% | — | daily file (laptop) 171 daily file (Render) 169 |
| Fri, 4 Sept | 105 | 105 | 0 0.0% | — | daily file (laptop) 105 daily file (Render) 105 |
| Thu, 3 Sept | 135 | 135 | 0 0.0% | — | daily file (laptop) 135 daily file (Render) 135 |
| Wed, 2 Sept | 105 | 105 | 0 0.0% | — | daily file (laptop) 105 daily file (Render) 105 |
| Tue, 1 Sept | 203 | 203 | 0 0.0% | — | daily file (laptop) 203 daily file (Render) 203 |
| Mon, 31 Aug | 863 | 863 | 0 0.0% | — | daily file (laptop) 863 daily file (Render) 863 |
| Sun, 30 Aug | 2 | 1 | 1 50.0% | $0 | daily file (laptop) 1 daily file (Render) 1 |
| Sat, 29 Aug | 0 | 0 | 0 — | — | daily file (laptop) 0 daily file (Render) 0 |
| Fri, 28 Aug | 297 | 277 | 20 6.7% | $23,661 | daily file (laptop) 277 daily file (Render) 277 |
| Thu, 27 Aug | 170 | 164 | 6 3.5% | $2,253 | daily file (laptop) 164 daily file (Render) 164 |
| Wed, 26 Aug | 169 | 160 | 9 5.3% | $10,965 | daily file (laptop) 160 daily file (Render) 160 |
| Tue, 25 Aug | 209 | 200 | 9 4.3% | $6,445 | daily file (laptop) 200 daily file (Render) 200 |
| Mon, 24 Aug | 193 | 183 | 10 5.2% | $4,189 | daily file (laptop) 183 daily file (Render) 183 |
| Sun, 23 Aug | 123 | 120 | 3 2.4% | $1,215 | daily file (laptop) 120 daily file (Render) 120 |
| Sat, 22 Aug | 165 | 162 | 3 1.8% | $723 | daily file (laptop) 162 daily file (Render) 162 |
| Fri, 21 Aug | 152 | 137 | 15 9.9% | $18,111 | daily file (laptop) 137 daily file (Render) 137 |
| Thu, 20 Aug | 296 | 287 | 9 3.0% | $3,120 | daily file (laptop) 287 daily file (Render) 281 |
| Wed, 19 Aug | 188 | 180 | 8 4.3% | $8,032 | daily file (laptop) 180 daily file (Render) 179 |
| Tue, 18 Aug | 172 | 167 | 5 2.9% | $4,303 | daily file (laptop) 167 daily file (Render) 167 |
| Mon, 17 Aug | 215 | 210 | 5 2.3% | $2,350 | daily file (laptop) 210 daily file (Render) 210 |
| Sun, 16 Aug | 151 | 149 | 2 1.3% | $770 | daily file (laptop) 149 daily file (Render) 149 |
| Sat, 15 Aug | 507 | 506 | 1 0.2% | $1,480 | daily file (laptop) 506 daily file (Render) 506 |
| Fri, 14 Aug | 128 | 118 | 10 7.8% | $13,769 | daily file (laptop) 118 daily file (Render) 118 |
| Thu, 13 Aug | 150 | 147 | 3 2.0% | $970 | daily file (laptop) 147 daily file (Render) 147 |
| Wed, 12 Aug | 147 | 139 | 8 5.4% | $10,945 | daily file (laptop) 139 daily file (Render) 139 |
| Tue, 11 Aug | 78 | 78 | 0 0.0% | — | daily file (Render) 76 weekly window chase_2026-08-07_2026-08-11.csv 626 |
| Mon, 10 Aug | 227 | 227 | 0 0.0% | — | daily file (Render) 0 weekly window chase_2026-08-07_2026-08-11.csv 626 |
| Sun, 9 Aug | 111 | 111 | 0 0.0% | — | daily file (Render) 0 weekly window chase_2026-08-07_2026-08-11.csv 626 |
| Sat, 8 Aug | 104 | 104 | 0 0.0% | — | weekly window chase_2026-08-07_2026-08-11.csv 626 |
| Fri, 7 Aug | 106 | 106 | 0 0.0% | — | weekly window chase_2026-08-07_2026-08-11.csv 626 |
| City | People | Past due | Missed payments |
|---|---|---|---|
| Florida | 17 16.8% | $17,650 22.9% | 22 |
| New York | 22 21.8% | $16,050 20.8% | 26 |
| Nashville | 19 18.8% | $14,680 19.0% | 26 |
| Texas | 18 17.8% | $12,694 16.4% | 21 |
| Boston | 14 13.9% | $11,918 15.4% | 20 |
| Chicago | 11 10.9% | $4,213 5.5% | 12 |
| TOTAL | 101 | $77,206 | 127 |
The whole point of the fix: these are the repeat missers the old rule was designed to suppress.
| Missed and not handed over | People | Past due |
|---|---|---|
| once | 81 80.2% | $51,584 66.8% |
| 2 times | 14 13.9% | $13,006 16.8% |
| 3 times | 6 5.9% | $12,615 16.3% |
| Period | What exists | Verdict |
|---|---|---|
| 2026-07-31 – 2026-08-06 | the window file chase_2026-07-31_2026-08-06.csv only — no per-day lists |
cannot be checked day by day. It went out as one file of 1,662 people; there is no per-day uncut list to compare it against |
| 2026-08-07 – 2026-08-11 | 5 per-day lists and chase_2026-08-07_2026-08-11.csv, which the ledger records as sent |
whole. The per-day files hold 626 people between them and the window file holds 626 — every one of them was handed over |
| 2026-08-12 – 2026-09-17 | a per-day uncut list and a per-day hand-over file for every one of the 36 days | computed exactly. This is where every person in the download came from |
| 2026-09-18 | Render's day index only — the per-day uncut list was wiped with Render's ephemeral disk | 0 more people are known to have been cut and are NOT in the download.
The count survives in days.json; the names do not |
| 2026-09-19 (today) | nothing yet, by design | not a gap. Square's recurring charges land through the afternoon, so /chase-daily never cuts today — today's missers are handed over tomorrow morning, under the fixed rule |
To close that gap the per-day uncut list has to be rebuilt for those days:
node scripts/reports/report_square_declines.js 2026-09-18 2026-09-18 --split-days,
then re-run this report. Nothing here reconstructs those names from context — the gap is stated, not filled.
The per-day files are one route to "who missed a recurring payment that day". The rolling
declines.json pull is an independent one. It counts every recurring decliner, including people who
have since cleared, so it should be the larger of the two. A day with people in the file but not in the
pull would mean the two disagree, and that is what the last column watches for.
| Day | From declines.json | From the per-day file | In the file only |
|---|---|---|---|
| Mon, 14 Sept | 136 | 126 | agree |
| Tue, 15 Sept | 568 | 535 | agree |
| Wed, 16 Sept | 184 | 171 | agree |
| Thu, 17 Sept | 198 | 191 | agree |