Same agreements, same measurement window (365 days from the opening charge), n = 15,995 — only the variable we split on changes, so the two separations are directly comparable. Splitting on the first instalment opens a gap of $957 per agreement (31% of the paid group); splitting on the second opens $1,049 (27%). The SECOND instalment is the sharper signal.
| Split the same agreements on… | Group | n | Mean collected in 365 days | Median collected | Instalments banked | Banked anything after the opening charge |
|---|---|---|---|---|---|---|
| The FIRST instalment | Failed | 6,366 | $429 | $80 | 2.03 | 51.7% |
| The FIRST instalment | Paid | 9,629 | $1,386 | $1,167 | 6.72 | 90.9% |
| The SECOND instalment | Failed | 6,648 | $392 | $100 | 1.93 | 40.6% |
| The SECOND instalment | Paid | 9,347 | $1,441 | $1,260 | 6.93 | 100.0% |
Row-level detail is in the CSVs, never on this page — agreements.csv (one row per agreement, with the horizons already computed) and recovery_curve.csv.
Money banked in the window that starts on the opening charge, including that charge itself when it went through. An agreement only enters a horizon if it has that many days of visible runway behind it (opening date + N ≤ 2026-09-20), which is why n shrinks as the horizon lengthens — that shrinkage is the age-matching doing its job. Paid again is the share that banked at least one charge after the opening attempt.
| Horizon | n — opening missed | n — opening paid | Mean collected — opening missed | Mean collected — opening paid | Failed ÷ paid | Median — opening missed | Median — opening paid | Paid again — opening missed | Paid again — opening paid | Instalments banked — opening missed | Instalments banked — opening paid |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 30 days | 11,199 | 15,680 | $75 | $282 | 0.27× | $0 | $240 | 26.4% | 22.4% | 0.29 | 1.23 |
| 60 days | 10,781 | 15,174 | $127 | $417 | 0.30× | $0 | $370 | 36.3% | 74.9% | 0.53 | 1.88 |
| 90 days | 10,374 | 14,700 | $172 | $553 | 0.31× | $0 | $499 | 42.0% | 79.7% | 0.75 | 2.52 |
| 180 days | 9,030 | 13,275 | $279 | $892 | 0.31× | $0 | $775 | 49.4% | 84.0% | 1.28 | 4.15 |
| 365 days | 6,512 | 10,346 | $420 | $1,326 | 0.32× | $50 | $1,053 | 50.6% | 84.6% | 1.99 | 6.32 |
For the missed group the opening charge banks nothing by construction, so part of the gap above is arithmetic rather than behaviour. This strips the opening charge out of both groups and asks only what came in afterwards. The gap survives it, which is what makes the finding behavioural: a missed opening charge is not one lost payment, it is a different agreement.
| Horizon | n — opening missed | n — opening paid | Mean banked after — opening missed | Mean banked after — opening paid | Failed ÷ paid | Median after — opening missed | Median after — opening paid |
|---|---|---|---|---|---|---|---|
| 30 days | 11,199 | 15,680 | $75 | $51 | 1.49× | $0 | $0 |
| 60 days | 10,781 | 15,174 | $127 | $186 | 0.68× | $0 | $175 |
| 90 days | 10,374 | 14,700 | $172 | $322 | 0.53× | $0 | $275 |
| 180 days | 9,030 | 13,275 | $279 | $659 | 0.42× | $0 | $534 |
| 365 days | 6,512 | 10,346 | $420 | $1,090 | 0.39× | $50 | $835 |
So you can see it is not one odd month carrying the whole finding. Each row is the agreements that opened in that month and have 180 days of runway behind them.
| Agreement opened | Failed (n, % of month) | Paid (n) | Mean collected — failed | Mean collected — paid | Failed ÷ paid | Paid again — failed | Paid again — paid |
|---|---|---|---|---|---|---|---|
| 2023-12 | 37 7.3% | 473 | $604 | $836 | 0.72× | 67.6% | 82.5% |
| 2024-01 | 49 8.7% | 517 | $301 | $817 | 0.37× | 65.3% | 83.6% |
| 2024-02 | 50 8.8% | 520 | $553 | $800 | 0.69× | 78.0% | 81.3% |
| 2024-03 | 36 6.1% | 558 | $641 | $823 | 0.78× | 80.6% | 83.5% |
| 2024-04 | 91 13.7% | 572 | $513 | $873 | 0.59× | 60.4% | 85.8% |
| 2024-05 | 446 47.6% | 490 | $213 | $850 | 0.25× | 37.4% | 83.1% |
| 2024-06 | 469 50.4% | 461 | $229 | $904 | 0.25× | 41.6% | 82.4% |
| 2024-07 | 291 42.2% | 399 | $312 | $995 | 0.31× | 52.9% | 87.0% |
| 2024-08 | 294 38.7% | 466 | $315 | $916 | 0.34× | 51.4% | 85.4% |
| 2024-09 | 321 41.4% | 454 | $307 | $890 | 0.34× | 53.6% | 84.1% |
| 2024-10 | 336 41.9% | 466 | $262 | $962 | 0.27× | 50.0% | 85.2% |
| 2024-11 | 352 42.9% | 469 | $296 | $939 | 0.32× | 56.3% | 81.2% |
| 2024-12 | 326 43.2% | 429 | $360 | $990 | 0.36× | 54.9% | 84.6% |
| 2025-01 | 314 43.0% | 416 | $298 | $968 | 0.31× | 52.2% | 87.3% |
| 2025-02 | 314 39.3% | 484 | $324 | $920 | 0.35× | 58.0% | 87.0% |
| 2025-03 | 394 42.2% | 540 | $319 | $967 | 0.33× | 48.5% | 82.8% |
| 2025-04 | 481 48.1% | 520 | $271 | $874 | 0.31× | 46.6% | 84.8% |
| 2025-05 | 420 44.5% | 524 | $276 | $875 | 0.32× | 50.7% | 83.6% |
| 2025-06 | 438 49.1% | 454 | $252 | $866 | 0.29× | 44.7% | 81.1% |
| 2025-07 | 418 47.3% | 465 | $264 | $906 | 0.29× | 45.0% | 84.1% |
| 2025-08 | 396 49.1% | 410 | $251 | $879 | 0.29× | 49.0% | 82.9% |
| 2025-09 | 462 49.7% | 468 | $239 | $857 | 0.28× | 44.8% | 83.1% |
| 2025-10 | 450 48.1% | 485 | $215 | $932 | 0.23× | 45.3% | 82.7% |
| 2025-11 | 406 46.3% | 470 | $223 | $922 | 0.24× | 45.3% | 85.7% |
| 2025-12 | 415 46.8% | 471 | $254 | $839 | 0.30× | 49.9% | 85.4% |
| 2026-01 | 401 47.2% | 448 | $312 | $876 | 0.36× | 53.1% | 84.8% |
| 2026-02 | 357 43.3% | 468 | $308 | $922 | 0.33× | 54.3% | 83.5% |
| 2026-03 | 266 41.3% | 378 | $253 | $839 | 0.30× | 52.3% | 84.4% |
| TOTAL | 9,030 | 13,275 | $279 | $892 | 0.31× | 49.4% | 84.0% |
Anchored on the second charge and its date, so the runway test moves with it. Only the 25,587 agreements that ever got a second attempt are in here — 2,236 never did, and they are counted separately in the combination table below rather than being folded in.
| Horizon | n — second missed | n — second paid | Mean collected — second missed | Mean collected — second paid | Failed ÷ paid | Median — second missed | Median — second paid | Paid again — second missed | Paid again — second paid | Instalments banked — second missed | Instalments banked — second paid |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 30 days | 10,634 | 14,111 | $44 | $274 | 0.16× | $0 | $238 | 16.6% | 24.5% | 0.19 | 1.25 |
| 60 days | 10,266 | 13,638 | $83 | $411 | 0.20× | $0 | $371 | 26.8% | 76.4% | 0.38 | 1.91 |
| 90 days | 9,793 | 13,186 | $120 | $547 | 0.22× | $0 | $500 | 32.5% | 81.2% | 0.56 | 2.57 |
| 180 days | 8,656 | 11,808 | $209 | $892 | 0.23× | $0 | $785 | 39.2% | 85.5% | 1.02 | 4.23 |
| 365 days | 6,225 | 8,999 | $333 | $1,287 | 0.26× | $0 | $1,108 | 40.6% | 86.5% | 1.67 | 6.24 |
| Horizon | n — second missed | n — second paid | Mean banked after — second missed | Mean banked after — second paid | Failed ÷ paid | Median after — second missed | Median after — second paid |
|---|---|---|---|---|---|---|---|
| 30 days | 10,634 | 14,111 | $44 | $55 | 0.79× | $0 | $0 |
| 60 days | 10,266 | 13,638 | $83 | $191 | 0.43× | $0 | $181 |
| 90 days | 9,793 | 13,186 | $120 | $327 | 0.37× | $0 | $290 |
| 180 days | 8,656 | 11,808 | $209 | $671 | 0.31× | $0 | $575 |
| 365 days | 6,225 | 8,999 | $333 | $1,063 | 0.31× | $0 | $893 |
All four cells of the 2×2, plus the two agreements-we-never-re-attempted rows. Everything is measured over the same window from the same anchor, so the rows are comparable.
| First instalment → second instalment | Agreements (n, share of book) | Mean collected in 365 days | Median collected | Instalments banked | Banked anything after the opening charge | Total collected |
|---|---|---|---|---|---|---|
| Paid → paid | 7,416 44.0% | $1,559 | $1,463 | 7.55 | 100.0% | $11,558,933 |
| Paid → failed | 2,213 13.1% | $808 | $400 | 3.92 | 60.3% | $1,787,169 |
| Failed → paid | 1,931 11.5% | $991 | $645 | 4.53 | 100.0% | $1,914,406 |
| Failed → failed | 4,435 26.3% | $185 | $0 | 0.94 | 30.7% | $818,872 |
| Paid → no second attempt | 717 4.3% | $526 | $250 | 1.00 | 0.0% | $376,845 |
| Failed → no second attempt | 146 0.9% | $0 | $0 | 0.00 | 0.0% | $0 |
| TOTAL | 16,858 | $976 | $580 | 4.65 | 71.4% | $16,456,225 |
| First instalment → second instalment | Agreements (n, share of book) | Mean collected in 180 days | Median collected | Instalments banked | Banked anything after the opening charge | Total collected |
|---|---|---|---|---|---|---|
| Paid → paid | 9,497 42.6% | $1,033 | $987 | 4.92 | 99.8% | $9,813,344 |
| Paid → failed | 2,835 12.7% | $549 | $319 | 2.61 | 59.0% | $1,557,465 |
| Failed → paid | 2,713 12.2% | $676 | $480 | 3.03 | 100.0% | $1,833,168 |
| Failed → failed | 6,136 27.5% | $112 | $0 | 0.55 | 28.6% | $687,408 |
| Paid → no second attempt | 943 4.2% | $505 | $250 | 1.00 | 0.0% | $476,519 |
| Failed → no second attempt | 181 0.8% | $0 | $0 | 0.00 | 0.0% | $0 |
| TOTAL | 22,305 | $644 | $425 | 2.99 | 70.0% | $14,367,904 |
Population: 11,501 agreements whose opening charge failed and which have at least ten days of runway behind them. “Recovered” means a recurring charge for that customer was banked after the failed attempt — a same-day retry counts as day 1.
| Day after the missed opening charge | Recovered that day | Recovered by this day (n, % of 11,501) | Money banked by this day | Still unrecovered |
|---|---|---|---|---|
| Day 1 | 1,102 | 1,102 9.6% | $341,861 | 10,399 |
| Day 2 | 315 | 1,417 12.3% | $428,369 | 10,084 |
| Day 3 | 220 | 1,637 14.2% | $477,817 | 9,864 |
| Day 4 | 175 | 1,812 15.8% | $522,037 | 9,689 |
| Day 5 | 127 | 1,939 16.9% | $550,901 | 9,562 |
| Day 6 | 98 | 2,037 17.7% | $571,972 | 9,464 |
| Day 7 | 99 | 2,136 18.6% | $593,147 | 9,365 |
| Day 8 | 71 | 2,207 19.2% | $612,283 | 9,294 |
| Day 9 | 53 | 2,260 19.7% | $624,364 | 9,241 |
| Day 10 | 56 | 2,316 20.1% | $641,883 | 9,185 |
Where it flattens: day 1 brings back 1,102, day 2 adds 315, day 3 adds 220. Measured against everything the ten-day window ever returns: day 1 is 48% of it, day 3 is 71%, day 5 is 84%, and day 7 is the first day past 90% — 92%. Days 8–10 together contribute 180 more recoveries (1.6% of the population). A 7-day chase window captures 92% of what a ten-day one would.
Each horizon has its own population, because a longer horizon needs more runway. The n column is that population, not a subset of the ten-day one.
| Horizon | Missed opening charges with this much runway (n) | Recovered by then (n, %) |
|---|---|---|
| Within 15 days | 11,473 | 2,520 22.0% |
| Within 20 days | 11,340 | 2,601 22.9% |
| Within 30 days | 11,199 | 2,951 26.4% |
| Within 60 days | 10,781 | 3,912 36.3% |
| Within 90 days | 10,374 | 4,362 42.0% |
| Within 180 days | 9,030 | 4,464 49.4% |
| Ever, however long it took | 11,644 | 5,610 48.2% |
This is where the action is. A limit or a funds decline is a timing problem and comes back on its own; a dead card is a data problem and never does, however long you chase it.
| Why the opening charge was declined | Missed opening charges (n) | Recovered by day 3 | Recovered by day 10 | Recovered by day 30 | n with 365d runway | Mean collected in 365 days | Banked anything at all |
|---|---|---|---|---|---|---|---|
| TRANSACTION_LIMIT | 6,825 | 937 13.7% | 1,384 20.3% | 1,806 27.1% | 4,124 | $426 | 55.0% |
| GENERIC_DECLINE | 3,204 | 493 15.4% | 627 19.6% | 777 24.7% | 2,064 | $408 | 41.6% |
| INSUFFICIENT_FUNDS | 744 | 114 15.3% | 174 23.4% | 219 30.9% | 168 | $507 | 61.3% |
| CARDHOLDER_INSUFFICIENT_PERMISSIONS | 560 | 70 12.5% | 97 17.3% | 104 19.7% | 77 | $326 | 36.4% |
| INVALID_ACCOUNT | 75 | 8 10.7% | 11 14.7% | 15 20.5% | 14 | $322 | 21.4% |
| PAN_FAILURE | 53 | 7 13.2% | 8 15.1% | 14 26.9% | 41 | $246 | 48.8% |
| CARD_EXPIRED | 31 | 6 19.4% | 10 32.3% | 13 43.3% | 22 | $372 | 45.5% |
| ADDRESS_VERIFICATION_FAILURE | 3 | 1 33.3% | 2 66.7% | 2 66.7% | 2 | $850 | 100.0% |
| ISSUER_INSTALLMENT_ERROR | 2 | 0 0.0% | 0 0.0% | 0 0.0% | 0 | — | — |
| EXPIRATION_FAILURE | 1 | 0 0.0% | 0 0.0% | 0 0.0% | 0 | — | — |
| INSUFFICIENT_PERMISSIONS | 1 | 0 0.0% | 1 100.0% | 1 100.0% | 0 | — | — |
| PAYMENT_LIMIT_EXCEEDED | 1 | 0 0.0% | 1 100.0% | 0 0.0% | 0 | — | — |
| CVV_FAILURE | 1 | 1 100.0% | 1 100.0% | 0 0.0% | 0 | — | — |
| TOTAL | 11,501 | 14.2% | 20.1% | 26.4% |
All six merchant accounts, agreements opened 2023-12-01 onwards. The 365-day columns use only the agreements with 365 days of runway, so their n is smaller than the agreements-opened column — that is the age-matching, not a data gap.
| Square account | Agreements opened | Opening charge missed | n failed with 365d runway | n paid with 365d runway | Mean collected 365d — opening missed | Mean collected 365d — opening paid | Failed ÷ paid | Recovered within 10 days |
|---|---|---|---|---|---|---|---|---|
| Texas | 8,772 | 3,837 43.7% | 2,270 | 3,372 | $376 | $1,286 | 0.29× | 683 18.0% |
| New York | 7,055 | 2,955 41.9% | 1,999 | 3,119 | $415 | $1,341 | 0.31× | 532 18.1% |
| Florida | 4,378 | 1,771 40.5% | 931 | 1,513 | $502 | $1,413 | 0.36× | 401 23.1% |
| Boston | 3,370 | 1,158 34.4% | 728 | 1,591 | $467 | $1,288 | 0.36× | 259 22.6% |
| Nashville | 2,667 | 1,180 44.2% | 577 | 734 | $418 | $1,361 | 0.31× | 274 23.6% |
| Chicago | 1,581 | 743 47.0% | 7 | 17 | $130 | $1,200 | 0.11× | 167 22.9% |
| TOTAL | 27,823 | 41.9% | 6,512 | 10,346 | $420 | $1,326 | 0.32× | 20.1% |
A studio that opened recently has almost no 365-day runway. Chicago’s first recurring charge is 2025-08-14, so hardly any of its agreements are a year old yet and its 365-day columns are thin or empty — an em-dash means nobody qualifies, not that they paid nothing. Read Chicago on the agreements-opened, missed-opening and 10-day columns, which have no runway requirement.
Same table as the recovery tab, kept here so the reason cut can be sorted and read on its own. Sort on “Recovered by day 10” to see which misses chase themselves and which need a new card before anything else is worth doing.
| Why the opening charge was declined | Missed opening charges (n) | Recovered by day 3 | Recovered by day 10 | Recovered by day 30 | n with 365d runway | Mean collected in 365 days | Banked anything at all |
|---|---|---|---|---|---|---|---|
| TRANSACTION_LIMIT | 6,825 | 937 13.7% | 1,384 20.3% | 1,806 27.1% | 4,124 | $426 | 55.0% |
| GENERIC_DECLINE | 3,204 | 493 15.4% | 627 19.6% | 777 24.7% | 2,064 | $408 | 41.6% |
| INSUFFICIENT_FUNDS | 744 | 114 15.3% | 174 23.4% | 219 30.9% | 168 | $507 | 61.3% |
| CARDHOLDER_INSUFFICIENT_PERMISSIONS | 560 | 70 12.5% | 97 17.3% | 104 19.7% | 77 | $326 | 36.4% |
| INVALID_ACCOUNT | 75 | 8 10.7% | 11 14.7% | 15 20.5% | 14 | $322 | 21.4% |
| PAN_FAILURE | 53 | 7 13.2% | 8 15.1% | 14 26.9% | 41 | $246 | 48.8% |
| CARD_EXPIRED | 31 | 6 19.4% | 10 32.3% | 13 43.3% | 22 | $372 | 45.5% |
| ADDRESS_VERIFICATION_FAILURE | 3 | 1 33.3% | 2 66.7% | 2 66.7% | 2 | $850 | 100.0% |
| ISSUER_INSTALLMENT_ERROR | 2 | 0 0.0% | 0 0.0% | 0 0.0% | 0 | — | — |
| EXPIRATION_FAILURE | 1 | 0 0.0% | 0 0.0% | 0 0.0% | 0 | — | — |
| INSUFFICIENT_PERMISSIONS | 1 | 0 0.0% | 1 100.0% | 1 100.0% | 0 | — | — |
| PAYMENT_LIMIT_EXCEEDED | 1 | 0 0.0% | 1 100.0% | 0 0.0% | 0 | — | — |
| CVV_FAILURE | 1 | 1 100.0% | 1 100.0% | 0 0.0% | 0 | — | — |
| TOTAL | 11,501 | 14.2% | 20.1% | 26.4% |
| Brand | Missed opening charges (n) | Recovered by day 10 | n with 365d runway | Mean collected in 365 days |
|---|---|---|---|---|
| VISA | 8,190 | 1,645 20.1% | 4,686 | $399 |
| MASTERCARD | 2,919 | 583 20.0% | 1,673 | $452 |
| DISCOVER | 279 | 70 25.1% | 84 | $885 |
| AMERICAN_EXPRESS | 113 | 18 15.9% | 69 | $465 |
The recurring book only. A sale is a deposit or studio-sale taken at the till on the day, then a finance agreement charged monthly against a stored card. Two different events, two different failure modes. This report is entirely about the second: the recurring location, matched on the location NAME with /^Recurring/i (the canonical rule in lib/square.js). The prefix match is required rather than an exact compare because New York’s location is called Recurring NYC, and an exact match on “Recurring” silently drops the biggest city. Deposits, studio sales and office charges are excluded outright — 187,228 rows dropped on this run.
An agreement is a customer’s run of recurring charges. A new one opens on a charge with no recurring charge from that customer in the preceding 12 months — the same test /first-payments settled. The first instalment is that opening charge; the second instalment is the next attempt after it inside the same agreement. Charges belong to the agreement that was open when they landed, so a customer who comes back years later never has their old plan’s money counted against the new one.
Failed means the attempt carries status: FAILED; paid means COMPLETED. Where an opening attempt failed and a retry the same day went through, the agreement is in the failed group (the first attempt by timestamp is what decides it) and the retry shows up as a day-1 recovery.
Age-matching — the whole methodological point. An agreement opened in Dec 2023 has had nearly three years to pay; one opened three weeks ago has had three weeks. Comparing raw lifetime collected between the two groups measures the calendar, not behaviour. So every figure here is collected within N days of an anchor charge, and an agreement only enters a horizon if it has N days of visible runway behind it — anchor date + N ≤ 2026-09-20, the newest charge on disk. Horizons: 30 / 60 / 90 / 180 / 365 days. Every cell states its n, and the n shrinks as the horizon lengthens because fewer agreements are old enough to qualify.
Per-agreement figures only. Mean and median collected, share that ever bank again, instalments banked. A raw total across groups of different sizes would say nothing, so totals appear only where the group size is stated beside them.
Why the cohort starts 2023-12-01. The data begins 2023-06-01, so a charge in that first month has no prior visibility and mid-series charges get misread as agreement openings — 1,790 apparent openings in 2023-06 against a ~600/month baseline either side. Starting the cohort at 2023-12-01 gives every agreement in it at least six months of prior visibility. 4,789 earlier agreement openings are excluded.
What six months of lookback costs, measured rather than assumed. Over 2024-05-31 → 2026-09-20, where a full 12 months of prior history genuinely exists, the number of agreement openings found is: 3 months of lookback 25,221, 6 months 24,196, 12 months 24,094, 24 months 24,077, 36 months 24,076. Six months over-counts by 0.4% against twelve, and twelve over-counts by 0.1% against the full depth on disk. A customer resuming a recurring plan after a year of silence is effectively nonexistent, so 12 months is not a compromise and 6 months at the cohort edge is a rounding error.
Inputs. square_attempts.jsonl (2025-01-01 → now, the daily incremental pull) plus square_attempts_pre2025.jsonl (2023-06-01 → 2025-01-01, the backfill). Both are /v2/payments looped per location — that endpoint returns the default location only otherwise. No Square or CRM call is made at report time.
Read this run: 491,465 raw lines → 463,120 unique payment ids (28,345 repeat lines dropped), 187,228 studio deposit / studio-sale / office charges discarded, 22,271 recurring charges with no customer id excluded because they cannot be tied to an agreement (8.1% of the recurring book — see the caveat below), leaving 253,621 recurring charges spanning 2023-06-01 → 2026-09-20, which resolve to 32,612 agreements, 27,823 of them in the cohort.
The one caveat worth knowing. The 22,271 excluded no-customer-id rows are not a random slice: 22,269 of them (100.0%) are declines and only 2 were banked, for $109 in total — so they cannot move a single collected figure on this page. They are concentrated in the older data (2023: 11,164, 2024: 8,965, 2025: 1,317, 2026: 825). Where one of them was genuinely an agreement’s opening attempt, that agreement is credited with a later, successful charge as its opening and lands in the paid group while behaving like a failed one. That drags the paid group’s average down, so the gap reported here is if anything an understatement — it cannot be an artefact of this exclusion.
Every n on the page. Cohort 27,823 · opening charge missed 11,644 · opening charge paid 16,179 · ever got a second attempt 25,587 · 365d runway from the opening charge 16,858 (missed 6,512, paid 10,346) · 365d runway from the second 15,224 (missed 6,225, paid 8,999) · 10-day recovery population 11,501 · first-vs-second prediction cohort 15,995.