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

PagePage saidSource says
KlarnaPay 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 AmericaLate fee up to $40Up to $41; none if the balance is $100 or less (sample agreement)
AfterpayUp 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 reconnectionLate fee accrues 3 days into the billing cycle, amount not published; no day counts; reactivation fee for Fiber/Internet, amount not published (Billing FAQs)
StarlinkSuspension "within days"; $0 late fee; no reconnection feeSuspended 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

BillerPage saidData saidVerifiedSource
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 $8Up to $8 per bill cycleOther 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

BillerStatus
Cox CommunicationsCox 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.
DIRECTVFee schedule page does not render the fee amounts publicly. $8 (page) / $6.25 (data) both withdrawn.
FrontierFrontier confirms a late fee exists but does not publish the amount (varies by state tariff).
OptimumTerms 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.

  • 0 now means verified: no late fee
  • null now 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-insurance and aca-health-insurance were 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 treated grace_period_days == 0 as 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: 0 paired 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

BillerFigureScopeSource
Cricket WirelessReactivation fee $5 single-line / $15 multi-lineNationalSuspend & Restore Service
Boost Mobile120 days from suspension to cancellation and loss of numberPrepaid (Pay Now) onlyGeneral 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.

BillerWithdrawnWhy
Verizonsuspension 30d, termination 60dNo day count published; Verizon says "possible interruption of service"
AT&Tsuspension 60d, termination 90dAgreement says "upon advance notice" and does not quantify it
T-Mobilesuspension 14d, termination 44d"Your service may be partially suspended"; the 30-day figure is the payment-arrangement window
Mint Mobiletermination 0d, reconnect fee $0Prepaid, so no ladder exists. A reactivation fee applies but the amount is not published
Cricket Wirelesssuspension 60d, termination 90dService stops at the due date; the 60-day figure is the number-retention window
Boost Mobilegrace 10d, suspension 10d10 days applies only to Buy Now, Pay Later accounts, not prepaid
Comcast Xfinitysuspension 45d, termination 75dAgreement reserves disconnection "in their sole discretion"
Spectrumgrace 30d, suspension 30d, termination 60dNo day count of any kind is published
FrontierNothingAlready null; confirmed as settled, no longer under review
OptimumNothingAlready null; confirmed as settled, no longer under review
Electric / Gas / Water utilitiesreconnect feesNo 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 from billers.json Resolved 2026-09-24. All 58 pages now have a data entry (see the coverage backfill above).
  • 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 from billers.json so they cannot drift again.
  • 25 entries still carry last_verified: 2026-05-14 and are due a quarterly review.