Share:

Instalment recovery — what a missed first or second instalment costs

The RECURRING book only — studio deposits and studio-sale payments are excluded outright · age-matched at fixed horizons, every cell states its n · agreements opened 2023-12-01 → 2026-09-20 · data on disk 2023-06-01 → 2026-09-20
Agreements in the cohort
27,823
Opening charge missed
41.9%
Missed openings banked within 10 days
20.1%
365-day gap per agreement
$907
1 · What do we collect from the people who miss the first instalment, and those who don’t?
Over 365 days from the opening charge, an agreement whose first instalment failed banks $420 on average (median $50, n = 6,512) against $1,326 (median $1,053, n = 10,346) where it went through — 32% of the paid group, a gap of $907 per agreement. 50.6% of the missed group bank something after the opening charge against 84.6% of the paid group.
2 · The same split on the second instalment
Measured the same way from the second instalment: a failed second banks $333 in the next 365 days (median $0, n = 6,225) against $1,287 where it went through (median $1,108, n = 8,999) — 26% of the paid group.
3 · How many missed first instalments do we get back inside ten days?
Of 11,501 missed opening charges with ten days of runway behind them, 2,316 (20.1%) are banked within ten days — $641,883. It is front-loaded: day 1 alone brings back 1,102 (9.6% of the population, 48% of everything the ten days ever return), day 3 is at 71%, and by day 7 92% of it is in. Days 8–10 add only 180 more. Push the window out and the returns keep coming but slowly — 26.4% by day 30, 42.0% by day 90, and 48.2% ever.

Which miss tells you more about the agreement

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…GroupnMean collected in 365 daysMedian collectedInstalments bankedBanked anything after the opening charge
The FIRST instalmentFailed6,366$429$802.0351.7%
The FIRST instalmentPaid9,629$1,386$1,1676.7290.9%
The SECOND instalmentFailed6,648$392$1001.9340.6%
The SECOND instalmentPaid9,347$1,441$1,2606.93100.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.

Collected within N days of the opening charge — missed vs banked

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.

Horizonn — opening missedn — opening paidMean collected — opening missedMean collected — opening paidFailed ÷ paidMedian — opening missedMedian — opening paidPaid again — opening missedPaid again — opening paidInstalments banked — opening missedInstalments banked — opening paid
30 days11,19915,680$75$2820.27×$0$24026.4%22.4%0.291.23
60 days10,78115,174$127$4170.30×$0$37036.3%74.9%0.531.88
90 days10,37414,700$172$5530.31×$0$49942.0%79.7%0.752.52
180 days9,03013,275$279$8920.31×$0$77549.4%84.0%1.284.15
365 days6,51210,346$420$1,3260.32×$50$1,05350.6%84.6%1.996.32

The control — take the opening charge out of both sides

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.

Horizonn — opening missedn — opening paidMean banked after — opening missedMean banked after — opening paidFailed ÷ paidMedian after — opening missedMedian after — opening paid
30 days11,19915,680$75$511.49×$0$0
60 days10,78115,174$127$1860.68×$0$175
90 days10,37414,700$172$3220.53×$0$275
180 days9,03013,275$279$6590.42×$0$534
365 days6,51210,346$420$1,0900.39×$50$835

The same split, month by month — 180-day horizon

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 openedFailed (n, % of month)Paid (n)Mean collected — failedMean collected — paidFailed ÷ paidPaid again — failedPaid again — paid
2023-1237 7.3%473$604$8360.72×67.6%82.5%
2024-0149 8.7%517$301$8170.37×65.3%83.6%
2024-0250 8.8%520$553$8000.69×78.0%81.3%
2024-0336 6.1%558$641$8230.78×80.6%83.5%
2024-0491 13.7%572$513$8730.59×60.4%85.8%
2024-05446 47.6%490$213$8500.25×37.4%83.1%
2024-06469 50.4%461$229$9040.25×41.6%82.4%
2024-07291 42.2%399$312$9950.31×52.9%87.0%
2024-08294 38.7%466$315$9160.34×51.4%85.4%
2024-09321 41.4%454$307$8900.34×53.6%84.1%
2024-10336 41.9%466$262$9620.27×50.0%85.2%
2024-11352 42.9%469$296$9390.32×56.3%81.2%
2024-12326 43.2%429$360$9900.36×54.9%84.6%
2025-01314 43.0%416$298$9680.31×52.2%87.3%
2025-02314 39.3%484$324$9200.35×58.0%87.0%
2025-03394 42.2%540$319$9670.33×48.5%82.8%
2025-04481 48.1%520$271$8740.31×46.6%84.8%
2025-05420 44.5%524$276$8750.32×50.7%83.6%
2025-06438 49.1%454$252$8660.29×44.7%81.1%
2025-07418 47.3%465$264$9060.29×45.0%84.1%
2025-08396 49.1%410$251$8790.29×49.0%82.9%
2025-09462 49.7%468$239$8570.28×44.8%83.1%
2025-10450 48.1%485$215$9320.23×45.3%82.7%
2025-11406 46.3%470$223$9220.24×45.3%85.7%
2025-12415 46.8%471$254$8390.30×49.9%85.4%
2026-01401 47.2%448$312$8760.36×53.1%84.8%
2026-02357 43.3%468$308$9220.33×54.3%83.5%
2026-03266 41.3%378$253$8390.30×52.3%84.4%
TOTAL9,03013,275$279$8920.31×49.4%84.0%

Collected within N days of the second instalment — missed vs banked

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.

Horizonn — second missedn — second paidMean collected — second missedMean collected — second paidFailed ÷ paidMedian — second missedMedian — second paidPaid again — second missedPaid again — second paidInstalments banked — second missedInstalments banked — second paid
30 days10,63414,111$44$2740.16×$0$23816.6%24.5%0.191.25
60 days10,26613,638$83$4110.20×$0$37126.8%76.4%0.381.91
90 days9,79313,186$120$5470.22×$0$50032.5%81.2%0.562.57
180 days8,65611,808$209$8920.23×$0$78539.2%85.5%1.024.23
365 days6,2258,999$333$1,2870.26×$0$1,10840.6%86.5%1.676.24

The control — take the second charge out of both sides

Horizonn — second missedn — second paidMean banked after — second missedMean banked after — second paidFailed ÷ paidMedian after — second missedMedian after — second paid
30 days10,63414,111$44$550.79×$0$0
60 days10,26613,638$83$1910.43×$0$181
90 days9,79313,186$120$3270.37×$0$290
180 days8,65611,808$209$6710.31×$0$575
365 days6,2258,999$333$1,0630.31×$0$893

The combination is what predicts the book — 365 days from the opening charge

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 instalmentAgreements (n, share of book)Mean collected in 365 daysMedian collectedInstalments bankedBanked anything after the opening chargeTotal collected
Paid → paid7,416 44.0%$1,559$1,4637.55100.0%$11,558,933
Paid → failed2,213 13.1%$808$4003.9260.3%$1,787,169
Failed → paid1,931 11.5%$991$6454.53100.0%$1,914,406
Failed → failed4,435 26.3%$185$00.9430.7%$818,872
Paid → no second attempt717 4.3%$526$2501.000.0%$376,845
Failed → no second attempt146 0.9%$0$00.000.0%$0
TOTAL16,858$976$5804.6571.4%$16,456,225

The same combinations at 180 days

First instalment → second instalmentAgreements (n, share of book)Mean collected in 180 daysMedian collectedInstalments bankedBanked anything after the opening chargeTotal collected
Paid → paid9,497 42.6%$1,033$9874.9299.8%$9,813,344
Paid → failed2,835 12.7%$549$3192.6159.0%$1,557,465
Failed → paid2,713 12.2%$676$4803.03100.0%$1,833,168
Failed → failed6,136 27.5%$112$00.5528.6%$687,408
Paid → no second attempt943 4.2%$505$2501.000.0%$476,519
Failed → no second attempt181 0.8%$0$00.000.0%$0
TOTAL22,305$644$4252.9970.0%$14,367,904

Of the opening charges that miss, what comes back day by day

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 chargeRecovered that dayRecovered by this day (n, % of 11,501)Money banked by this dayStill unrecovered
Day 11,1021,102 9.6%$341,86110,399
Day 23151,417 12.3%$428,36910,084
Day 32201,637 14.2%$477,8179,864
Day 41751,812 15.8%$522,0379,689
Day 51271,939 16.9%$550,9019,562
Day 6982,037 17.7%$571,9729,464
Day 7992,136 18.6%$593,1479,365
Day 8712,207 19.2%$612,2839,294
Day 9532,260 19.7%$624,3649,241
Day 10562,316 20.1%$641,8839,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.

And after day 10

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.

HorizonMissed opening charges with this much runway (n)Recovered by then (n, %)
Within 15 days11,4732,520 22.0%
Within 20 days11,3402,601 22.9%
Within 30 days11,1992,951 26.4%
Within 60 days10,7813,912 36.3%
Within 90 days10,3744,362 42.0%
Within 180 days9,0304,464 49.4%
Ever, however long it took11,6445,610 48.2%

Split by why the opening charge was declined

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 declinedMissed opening charges (n)Recovered by day 3Recovered by day 10Recovered by day 30n with 365d runwayMean collected in 365 daysBanked anything at all
TRANSACTION_LIMIT6,825937 13.7%1,384 20.3%1,806 27.1%4,124$42655.0%
GENERIC_DECLINE3,204493 15.4%627 19.6%777 24.7%2,064$40841.6%
INSUFFICIENT_FUNDS744114 15.3%174 23.4%219 30.9%168$50761.3%
CARDHOLDER_INSUFFICIENT_PERMISSIONS56070 12.5%97 17.3%104 19.7%77$32636.4%
INVALID_ACCOUNT758 10.7%11 14.7%15 20.5%14$32221.4%
PAN_FAILURE537 13.2%8 15.1%14 26.9%41$24648.8%
CARD_EXPIRED316 19.4%10 32.3%13 43.3%22$37245.5%
ADDRESS_VERIFICATION_FAILURE31 33.3%2 66.7%2 66.7%2$850100.0%
ISSUER_INSTALLMENT_ERROR20 0.0%0 0.0%0 0.0%0
EXPIRATION_FAILURE10 0.0%0 0.0%0 0.0%0
INSUFFICIENT_PERMISSIONS10 0.0%1 100.0%1 100.0%0
PAYMENT_LIMIT_EXCEEDED10 0.0%1 100.0%0 0.0%0
CVV_FAILURE11 100.0%1 100.0%0 0.0%0
TOTAL11,50114.2%20.1%26.4%

Every Square account

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 accountAgreements openedOpening charge missedn failed with 365d runwayn paid with 365d runwayMean collected 365d — opening missedMean collected 365d — opening paidFailed ÷ paidRecovered within 10 days
Texas8,7723,837 43.7%2,2703,372$376$1,2860.29×683 18.0%
New York7,0552,955 41.9%1,9993,119$415$1,3410.31×532 18.1%
Florida4,3781,771 40.5%9311,513$502$1,4130.36×401 23.1%
Boston3,3701,158 34.4%7281,591$467$1,2880.36×259 22.6%
Nashville2,6671,180 44.2%577734$418$1,3610.31×274 23.6%
Chicago1,581743 47.0%717$130$1,2000.11×167 22.9%
TOTAL27,82341.9%6,51210,346$420$1,3260.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.

What the issuer said on the opening charge, and what happened next

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 declinedMissed opening charges (n)Recovered by day 3Recovered by day 10Recovered by day 30n with 365d runwayMean collected in 365 daysBanked anything at all
TRANSACTION_LIMIT6,825937 13.7%1,384 20.3%1,806 27.1%4,124$42655.0%
GENERIC_DECLINE3,204493 15.4%627 19.6%777 24.7%2,064$40841.6%
INSUFFICIENT_FUNDS744114 15.3%174 23.4%219 30.9%168$50761.3%
CARDHOLDER_INSUFFICIENT_PERMISSIONS56070 12.5%97 17.3%104 19.7%77$32636.4%
INVALID_ACCOUNT758 10.7%11 14.7%15 20.5%14$32221.4%
PAN_FAILURE537 13.2%8 15.1%14 26.9%41$24648.8%
CARD_EXPIRED316 19.4%10 32.3%13 43.3%22$37245.5%
ADDRESS_VERIFICATION_FAILURE31 33.3%2 66.7%2 66.7%2$850100.0%
ISSUER_INSTALLMENT_ERROR20 0.0%0 0.0%0 0.0%0
EXPIRATION_FAILURE10 0.0%0 0.0%0 0.0%0
INSUFFICIENT_PERMISSIONS10 0.0%1 100.0%1 100.0%0
PAYMENT_LIMIT_EXCEEDED10 0.0%1 100.0%0 0.0%0
CVV_FAILURE11 100.0%1 100.0%0 0.0%0
TOTAL11,50114.2%20.1%26.4%

Card brand on the missed opening charge

BrandMissed opening charges (n)Recovered by day 10n with 365d runwayMean collected in 365 days
VISA8,1901,645 20.1%4,686$399
MASTERCARD2,919583 20.0%1,673$452
DISCOVER27970 25.1%84$885
AMERICAN_EXPRESS11318 15.9%69$465

How this is built

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.