A dated record of when each figure was re-checked and against which source. The site's editorial standard is "No fact is published without a linked source", and this log is how we keep that standard auditable.
Utility state rules, Cox, Boost, Spotify and Mint re-sourced (issues #63, #115)
24 September 2026
Why: the utility, Cox and Boost pages published several figures each on one source or none, and the Cox, Spotify and Mint pages still had uncited claims outside the Quick summary. We re-read each source on 24 September 2026, with robots.txt obeyed.
Utilities: each state figure now cites that state's rule or regulator. The LIHEAP Clearinghouse page the three utility pages leaned on no longer loads for us. Re-checking each state against its own regulator changed four figures:
- Georgia electric "21 days after meter reading" was the time to pay, not notice. The Georgia PSC says bills are due at least 21 days after the meter is read, disconnection may follow once a bill is unpaid 45 days from the statement date, and notice is at least 5 days.
- New York "35 for multi-unit" isn't in the DPS HEFPA page. It gives 15 days after a Final Termination Notice, and 18 days' notice to apartment tenants when the landlord hasn't paid.
- Minnesota "30 days mailed, 15 hand-delivered" isn't in the Cold Weather Rule for regulated utilities. Minn. Stat. § 216B.096 gives 10 working days mailed or 7 served, during the October 1 to April 30 cold weather period.
- Ohio water was 10 days. Ohio Adm. Code 4901:1-15-27 gives 14 days (10 only when a landlord pays the bill).
Illinois 10 days (notice valid 45 days) is withdrawn: the rule text on ilga.gov didn't load for us, and the only Commerce Commission summary we found giving a notice period dates from 2002. Illinois stays on the pages for its winter rule and 60-day medical protection, from current Commerce Commission pages. Indiana (Office of Utility Consumer Counselor) was added to the electric and gas pages. The uncited ranges were removed: late fees "1.5%–5%" and "1.5%–10%", reconnection "$10–$75", "$25–$100" and "$25–$150", and reconnection times of "1–3" and "1–5 business days".
Cox: the payment-arrangement FAQ said Cox splits a balance "into multiple installments". Cox's payment options page offers a future-dated payment or an extension of up to 7 days. When you move the payment date, the amount "cannot be lower than the amount due". The late-fee waiver FAQ had no source and now says so. The 15-day equipment return now also cites Cox's equipment return page.
Boost Mobile: added the $10, 5-day Payment Extension for prepaid accounts. The FAQ had said prepaid customers could "pause service by simply not renewing — there's no penalty". It now says what the terms do, which is suspension, then cancellation and loss of the number after 120 days.
Spotify: each free-tier difference is now cited to Spotify's help pages. "Limited skips in some regions" became what the help pages say: Smart Shuffle is always on for free mobile listeners.
Mint Mobile: "3, 6, or 12 months", the 7-day money-back guarantee and "Mint recommends renewing within the active period" are withdrawn. mintmobile.com still returns HTTP 403 to our checker, so we couldn't re-check them.
Spotify, AT&T, Xfinity, Cox, Cricket and Mint re-checked (issues #105–#110)
24 September 2026
Why: the zero-figure pass above turned up six billers whose pages or data said more than their sources do. We re-read each one's own documents on 24 September 2026, with robots.txt obeyed.
Kept, now cited to the document that states them:
- AT&T late fee up to $8 per bill cycle and reconnection (Restoral) fee up to $35. Neither amount is in the Consumer Service Agreement the data used to cite. Both are in AT&T's Mobility Fee Schedule, which "is part of your AT&T Consumer Services Agreement". The page's "$35–$45 per line" is now "up to $35", and its claim that AT&T suspends "upon advance notice" is gone. The agreement says AT&T may suspend Wireless Service "without advance notice for any reason".
Added, because the source states it:
- Cricket account termination: 60 days after the due date (was not published). Cricket's Charges and Fees page says the reactivation fee "applies to suspended accounts that are reactivated within 59 days after the due date. On the 60th day, the account will be canceled and can't be reactivated." Its Terms and Conditions (§1.9.3) agree: 60 days in "suspend mode", then cancellation. The page also no longer says Cricket has no bill due date. Its Payment Due Dates page says "Your payment is due on your due date, which is the same date each month".
Withdrawn, because no source we could read states it:
- Spotify: grace period, late fee, suspension, termination and reconnection fee (all were
0). Spotify's own failed-payment page says "you won't immediately lose your Premium" and that it retries "over the next few days". That rules out an immediate suspension and gives no day count. Neither that page nor the terms mention a late fee. - Xfinity $10 late fee. No Xfinity page we could read gives an amount. The late payments article says only that you "may also be charged a late fee on your next bill". The data now cites the Residential Services Agreement web page instead of a PDF whose host blocks automated checkers.
- Cox suspension (30 days), termination (60), reconnection fee ($30, and "$20–$40" on the page) and collections (90 days). Cox's Residential Customer Service Agreement gives no day counts, and says only that "a reactivation or reinstallation fee" may apply.
- Mint Mobile "60–90 day" number-hold window in the FAQ, already withdrawn from the data on 21 September. mintmobile.com still blocks our checker (HTTP 403), so no Mint figure was re-checked.
Also corrected: the Mint page called Mint "Verizon-owned". T-Mobile's 2024 annual report says it completed its acquisition of Mint Mobile's parent on May 1, 2024.
Verified zeros re-checked (issue #78)
24 September 2026
Why: 16 data rows carried a 0 ("checked, and it is genuinely none") on figures the same
row flagged as unconfirmed. We re-read each biller's own terms on 24 September 2026, with
robots.txt obeyed, and kept a 0 only where the source says so in words.
Kept, because the source says it:
- Cricket grace period and suspension: "If no payment is received by 11:59 pm Central Time on your due date, your service will be suspended" and "If you miss your due date, your account will be suspended immediately" (Payment Due Dates, Charges and Fees).
Withdrawn, because no source we could read states it:
- Every figure for Netflix, Amazon Prime Video, Apple TV+, Apple Music, Peacock and Paramount+ (grace period, late fee, suspension, termination, reconnection). Their terms say a failed payment may lead to suspension and that you stay responsible for the unpaid amount. None of them mentions a late fee, and silence is not the same as "none". Paramount+ says it "may terminate your Subscription after we have provided written notice", so termination is not immediate either.
- Every figure for Hulu and Disney+. The Disney+, ESPN and Hulu Subscriber Agreement is on hulu.com and disneyplus.com, both of which close their whole site to automated checkers in robots.txt. Their help centres don't mention a late fee.
- Cricket, Boost late fee. Neither lists one; Boost's terms also list "reactivation" fees among possible charges, so its reconnection fee is not free either.
- Xfinity grace period and reconnection fee. Its Late Payments article says a late fee may be added "on your next bill" once the due date passes, and that restoring service "may include late fees and a reactivation charge".
- Cox grace period. Its agreement gives none.
- Mint Mobile grace period and late fee. mintmobile.com returned a block page (HTTP 403), so nothing could be re-checked.
- Electric, gas and water utilities grace period. These are national rows; grace periods are set by each state and utility, so no national figure exists.
Also corrected: the Xfinity and AT&T collections notes in the data file described their sources inaccurately (issue #93), and the Paramount+ page cited a Terms of Use URL that now returns 404 (issue #94). It now cites the current US Terms of Use at legal.paramount.com.
Coverage backfill for the 30 billers missing from the data file
24 September 2026
Why: /stats/ ranked 28 billers while the site documents 58. Every credit card, BNPL
provider, auto insurer, both student-loan pages, medical bills and several ISPs had a page
but no data entry (issue #10). All 30 are now in data/billers.json.
Method: each figure was taken from the biller's own published terms, fetched on
24 September 2026 with robots.txt obeyed, and not from our page. A figure the source does
not state is null. A 0 was recorded only where the source says so in words (Affirm:
"You will never be charged any late fees"; PayPal Pay in 4: "PayPal does not charge any
… late … fees"; a card agreement charging a late fee from the due date). Where a page
said "None" or "$0" and no source we could read said so, the page was reworded rather than
a zero invented.
Pages corrected against their live source
| Page | Page said | Source says |
|---|---|---|
| Klarna | Pay in 4: "$0 (no late fee)" | Late fee of up to $7 when a payment fails twice; total capped at 25% of the order (Klarna Pay in 4) |
| Bank of America | Late fee up to $40 | Up to $41; none if the balance is $100 or less (sample agreement) |
| Afterpay | Up to $8 or 25% of the installment; grace "several days" | Up to $8 per installment after 10 days unpaid; the 25% cap is per order (Installment Agreement) |
| EarthLink | $10 late fee ~30 days after due date; ~30–45 day disconnection; $25 reconnection | Late fee accrues 3 days into the billing cycle, amount not published; no day counts; reactivation fee for Fiber/Internet, amount not published (Billing FAQs) |
| Starlink | Suspension "within days"; $0 late fee; no reconnection fee | Suspended once a payment is late; may be terminated if not cured within 24 days of the invoice; no fee listed either way (US Terms of Service) |
| GEICO | "7–30 days" typical grace period | "a few days to about a month" (GEICO) |
Verified zeros withdrawn from pages
Visible, Fubo and TIDAL said "$0" late fee and "None" reconnection fee. Visible's and Fubo's terms list neither fee, which is not the same as saying there is none. TIDAL's terms returned HTTP 403, so nothing on that page could be checked. Those rows now read "Not published" or "Not verified". Visible's 60-day cancellation figure did survive: "If payment is not made within the 60 day period, it will be canceled."
Dead or unreadable citations replaced
Citi (online.citi.com/US/ag/cardmemberagreement now redirects to a not-found page),
Fubo (old terms URL serves "this page is not available"), Visible (old agreement URL
redirects to the help home), Starlink (old documents URL 404s) and EarthLink
(earthlink.net closes robots.txt) now cite readable first-party documents.
Could not be read, so every figure is null and flagged
- TIDAL, because tidal.com and support.tidal.com returned 403.
- US Cellular, because uscellular.com's robots.txt returned 403.
- Capital One late-fee amount, because the agreement PDFs sit on a host whose robots.txt returns 403. The help centre confirms a fee applies from the due date but not its amount.
Conflict resolution pass
21 September 2026
Why: data/billers.json (which powers the /stats/ charts) and the biller pages
disagreed on the late fee for 8 of the 28 billers that had both. The site was publishing
two different answers to the same question simultaneously. Root cause: commit 4b91d12
re-verified the data file against fee schedules, while the pages were authored
separately against customer agreements. Nobody reconciled the two documents.
Resolved against a primary source
| Biller | Page said | Data said | Verified | Source |
|---|---|---|---|---|
| Verizon | $5 or 1.5% | $7 or 5% | $10 or 5%, whichever greater (varies by state) | Payment Arrangement FAQs |
| AT&T | $9.25 or 1.5% | Up to $8 | Up to $8 per bill cycle | Other Wireless Fees and Charges |
| DISH Network | $7–$10 | $15 | $15.00 ($10.00 in VA, ME, AZ) | DISH Fees |
Note on Verizon: both prior figures were wrong. Picking a side without going to source would have shipped an incorrect number either way.
Also corrected on the Verizon page: grace period (it stated ~10 days, then contradicted itself two lines later by saying a late fee can apply the day after the due date), and the reconnection fee ($35 → $20 per line, per the same source).
Could not be verified, so withdrawn rather than published uncited
| Biller | Status |
|---|---|
| Cox Communications | Cox is merging into Spectrum. Cox billing/fee URLs now redirect to spectrum.com and the support pages read "Cox is now Spectrum". No Cox-published amount is currently confirmable. Previously published $8.95 (page) / $6 (data) both withdrawn. |
| DIRECTV | Fee schedule page does not render the fee amounts publicly. $8 (page) / $6.25 (data) both withdrawn. |
| Frontier | Frontier confirms a late fee exists but does not publish the amount (varies by state tariff). |
| Optimum | Terms of Service confirm a late fee; the amount lives in a separate schedule that is not publicly reachable. |
Schema correction: null ≠ 0
late_fee_dollars: 0 was doing two jobs. It meant "genuinely no late fee" (Netflix,
Spotify, prepaid mobile), and it also meant "we don't know the amount". The second meaning made
billers appear on the "who charges the most" chart as the cheapest, and made the data
table print "None" for things that unambiguously do charge late fees, including credit
cards, rent and utilities.
0now means verified: no late feenullnow means: a late fee applies, amount not published or not verified- Charts already filter
> 0, so nulls are excluded from rankings rather than shown as zero - The data table now renders these as (amount not published)
Other live bugs fixed in the same pass
- 3 chart rows linked to pages that do not exist.
credit-cards,car-insuranceandaca-health-insurancewere in the data file with no corresponding page, so every visitor clicking those rows on/stats/got a 404. Entries removed; per-brand pages already exist (Chase, Amex, GEICO, State Farm, …) and should be backfilled into the data file instead. - 29 of 31 rows on
/stats/displayed "N/A (prepaid)" for their grace period, because the template treatedgrace_period_days == 0as meaning prepaid. This labelled Verizon, Comcast, electric utilities, credit cards and rent as prepaid services. Now renders "None".
Guard added
scripts/validate_billers.py now runs in CI ahead of the Hugo build and fails on:
- a data-file slug with no matching page (the 404 class of bug)
- a page and the data file stating different late fees (the contradiction class)
- missing
source_url/source_title/last_verified late_fee_dollars: 0paired with text that isn't "None" (the unknown-vs-zero confusion)
It warns on the 30 pages still absent from the data file.
Suspension timeline sourcing pass
21 September 2026
Why: The late-fee pass fixed the numbers that disagreed with each other. It did not check the numbers that agreed with each other. The suspension and termination day counts had never been traced to a source, even though they are the ladder at the centre of every biller page and the column people search for. We traced all of them.
Method: For each biller, we read every publicly reachable official page, terms of service, customer agreement and fee schedule, and recorded any day count with the exact sentence containing it. We then reviewed each figure adversarially and accepted it only if a quoted sentence from a first-party or regulator source stated it, at the scope we publish it at. Some figures were real but narrower than our claim, because they were state-only, account-type-only, or measured something other than suspension. We refused those rather than round them up.
Survived review
| Biller | Figure | Scope | Source |
|---|---|---|---|
| Cricket Wireless | Reactivation fee $5 single-line / $15 multi-line | National | Suspend & Restore Service |
| Boost Mobile | 120 days from suspension to cancellation and loss of number | Prepaid (Pay Now) only | General Terms |
Published without a source, now withdrawn
Twenty-two day counts across thirteen billers are withdrawn. None of them could be traced to anything the biller publishes.
| Biller | Withdrawn | Why |
|---|---|---|
| Verizon | suspension 30d, termination 60d | No day count published; Verizon says "possible interruption of service" |
| AT&T | suspension 60d, termination 90d | Agreement says "upon advance notice" and does not quantify it |
| T-Mobile | suspension 14d, termination 44d | "Your service may be partially suspended"; the 30-day figure is the payment-arrangement window |
| Mint Mobile | termination 0d, reconnect fee $0 | Prepaid, so no ladder exists. A reactivation fee applies but the amount is not published |
| Cricket Wireless | suspension 60d, termination 90d | Service stops at the due date; the 60-day figure is the number-retention window |
| Boost Mobile | grace 10d, suspension 10d | 10 days applies only to Buy Now, Pay Later accounts, not prepaid |
| Comcast Xfinity | suspension 45d, termination 75d | Agreement reserves disconnection "in their sole discretion" |
| Spectrum | grace 30d, suspension 30d, termination 60d | No day count of any kind is published |
| Frontier | Nothing | Already null; confirmed as settled, no longer under review |
| Optimum | Nothing | Already null; confirmed as settled, no longer under review |
| Electric / Gas / Water utilities | reconnect fees | No national figure exists; state notice minimums published on the pages instead |
What replaced them
Each affected page now states what the biller does publish, such as notice practice, late-fee windows, payment arrangements, restore fees and restoration time. It also says plainly that the timing of suspension is the biller's discretion. On the three utility pages, state-by-state minimum notice periods from PUC rules and statutes replace the national ladder, because those are the figures that exist.
Schema change: needs_reverification: false now means settled
"This biller does not publish a timeline" is a finished answer, not an open task. Those entries carry needs_reverification: false and a timeline_note recording the finding, so the same research is not repeated every quarter and the data file does not imply we are still looking.
Guard gap identified
validate_billers.py check #4 compares page and data day counts only when both exist. Nulling the data side makes a surviving uncited ladder on a page pass CI silently. A check is needed that errors when a page states a day count and the data field is null with needs_reverification: false.
Editor decisions still open
Three figures where a citable source exists but the figure did not clear adversarial review, listed rather than applied so that nothing enters the data file unreviewed: Mint Mobile's immediate suspension, Xfinity's "normally a 10-day" late-fee window, and T-Mobile's $20 per-line restore fee (already published, but it rode along on a timeline check rather than being reviewed in its own right).
Next pass: collections_days (90 for Verizon, T-Mobile, Comcast, Spectrum, Frontier and
Optimum) and credit_threshold_days (30 across the board) are the same uncited-ladder
class as the figures withdrawn here, and have never been sourced.
Outstanding
30 of 58 biller pages are still missing fromResolved 2026-09-24. All 58 pages now have a data entry (see the coverage backfill above).billers.json- Suspension and termination timelines have not been reconciled. The pages, the data file
and
/suspension/still disagree in places (e.g. AT&T: page ~30–45 days, data 60). Only late fees and grace periods were re-verified in this pass. - The hub tables at
/late-fees/,/suspension/and/credit-impact/are hand-typed and uncited. Roughly 40 facts have no source links, which is a direct breach of the editorial standard. Only the Verizon and AT&T late-fee rows were corrected here. These tables should be generated frombillers.jsonso they cannot drift again. - 25 entries still carry
last_verified: 2026-05-14and are due a quarterly review.