NEWProgress-billing audits are live — architecture, engineering, legal →
Case study: a $431,315 billing series, audited line by line

Every recovered dollar
shows its math.

Recoup audits an itemized bill or a progress-billing series, proves each overcharge against a real line, totals only what the arithmetic supports — and drafts the letter that asks for it back.

Integer cents, never floats26/26 tests greenZero network callsEvery finding cites its line

recoup · audit report · stmt 10042 SAMPLE DATA
L-1108 ASSERTED
Lab panel — qty 2 × $75.00, billed $250.00
quantity-mismatch · 2 × 7500¢ = 15000¢ · billed 25000¢ · excess 10000¢
+$100.00
L-1131 REVIEW
Identical charge, same date of service
duplicate-charge · confidence 0.65 · legitimate repeat services exist — held for confirmation
+$150.00
L-1140 REVIEW
Panel and its component billed together
unbundling · pair table is SAMPLE until quarterly ingestion lands
+$84.00
L-1152 CLEAN
Office visit, established patient
Arithmetic checks. Left alone — the engine never invents a finding to justify itself.
$0.00

Recovery, bucketed

Asserted — arithmetic proves it
$100.00
Candidates — confirm, then dispute
$234.00
Checks not performed
2 listed
Grounding guard: a finding with no real line reference, or a non-integer recoverable, is rejected before it can reach this column. Fail-closed.
Grounded or it doesn't count. Every dollar above names a line that exists and shows the integer-cents arithmetic that produced it.
How it works

Four steps. Each one refuses to guess.

Bills lie in boring ways — a quantity that doesn't multiply, a phase billed past its own estimate, a consultant fee routed around a cap. Finding those is arithmetic, not opinion. Recoup does the arithmetic and stops exactly where the arithmetic stops.

Read the bill without rounding it.

Every amount enters as safe-integer cents. A float, an oversized number, a line without an id — intake throws instead of rounding. On a progress-billing series the intake goes further: hourly sections must sum to their stated totals and each phase line must satisfy contract = remaining + prior + this. If your transcription is wrong, the audit refuses to start.

intake()throws
inputamountCents: 100.5 errorL.amountCents must be safe-integer cents, got 100.5 (money is never a float)

Prove it against a line that exists.

Ten detectors run. Each one computes its recoverable amount from the bill's own numbers — never a constant, never an estimate — and cites the reference it came from. A detector that can't name a real line produces nothing; the grounding guard rejects it before totalling.

hourly-line-mathASSERTED · 0.95
hours2.00 h rate$450.00 / h expected$900.00 billed$1,000.00 recoverable$100.00±1¢ tolerance

Total into three buckets that never blur.

Arithmetic the bill's own numbers prove is asserted. Anything needing a human — a duplicate that might be a legitimate repeat, a phase billed past its estimate — is a candidate, capped at low confidence and labelled for confirmation. Work billed with no authorization visible in the provided contract is a documentation gap: a paper request, never an accusation. Promoting a candidate to asserted is an operator's decision, not the engine's.

auditProgress()3 buckets
asserted$0.00arithmetic clean candidates$21,869.43confirm first doc gap$262,710.00request paper

Draft the letter the math already wrote.

The output is a dispute letter that quotes each finding, its line reference, and its arithmetic — plus a limitations block naming every check that did not run. Asserted items are stated. Candidates ask the recipient to confirm. Nothing in the letter is a claim the report can't show its work for.

appeal.txtgenerated
Re: Statement 10042 — request for correction
Line L-1108 bills $250.00 for a quantity of 2 at a unit price of $75.00. Quantity × unit price is $150.00; the statement exceeds it by $100.00.

Lines L-1131 and L-1133 appear identical on the same date of service. Please confirm whether these represent two distinct services.

Limitations: upcoding and contract-rate checks were not performed on this statement.

Run a bill through these four steps

A clean bill recovers nothing. That is the feature. An audit engine that always finds something is an audit engine you cannot use as evidence.

Two verticals

Different bills. Identical discipline.

A medical statement and an architect's progress billing fail in completely different ways — so they get different detectors, not a shoehorn. What they share is the guard: integer cents, real references, honest coverage.

Vertical 01

Itemized bills

Medical statements, vendor invoices, SaaS line items. Anything where a quantity, a unit price, and an amount are supposed to agree.

  • Quantity mismatch — billed above quantity × unit price
  • Duplicate charge — identical line billed more than once
  • Unbundling — panel and component billed together
  • Out-of-network balance bill — No Surprises Act context
  • Cited rights annex — the channel, never the verdict
Vertical 02 · new

Progress billing

Architecture, engineering, legal, consulting. Percent-complete against phase caps, hourly-estimate sections, pass-through consultants, and a series that has to stay continuous.

  • Hourly line math — hours × rate, to the cent
  • Over-estimate billing — past a phase's own stated estimate
  • Unauthorized phase — billed with no visible authorization
  • Reimbursable markup — above cost plus the contract markup
  • Cap bypass — a consultant fee routed around a phase cap
  • Prior-billing continuity — regressions and missing invoices
Case study

Four invoices. 118 hourly lines. $431,315 billed — $262,710 of it against paper we were never given.

A commercial remodel's architecture billing series, run through the progress-billing engine. Every hourly line, phase reconciliation, and markup was recomputed from the invoices' own printed totals — all of which reconciled exactly, which is itself the proof the transcription was faithful.

Audit result — 12 findings across 4 invoices
Asserted arithmetic overcharges
Every hours × rate line, every markup, every phase reconciliation checks to the penny. The firm's math is clean.
$0
Candidates — confirm, then dispute
A schematic phase billed at twice its own estimate; permits billed past theirs; a consultant invoice routed through reimbursables while its phase cap had $1,600 left.
$21,869.43
Billed without visible authorization
Nine phases the provided contract excludes outright. Almost certainly covered by a later executed agreement — which was not in the documents provided. A paper request, not an accusation.
$262,710

What that buys the person paying the bill.

Not an accusation — a list of exactly four documents to request before the next payment goes out, each one attached to the dollar figure it would resolve:

  • 1 The executed agreement and every change order — resolves $262,710
  • 2 The missing invoices in the series — ~$134,800 appears only as prior-billing jumps
  • 3 The retainer application trace — applied on paper, never visible as a credit
  • 4 The rate schedule in effect — same-staff rates rose ~36% mid-project

Figures from a real engagement, reported with the client and firm unnamed. Re-running the audit against the requested documents is what converts the third bucket into either an authorization or a dispute.

Get this list for your own billing series

Coverage

What it checks — and what it honestly doesn't.

Ten detectors ship and are tested. Everything not covered is printed in the report as a check not performed, so an absent finding is never mistaken for a clean bill.

DetectorSeverityState
Itemized bills
Quantity mismatchquantity-mismatchAssertedShipped & tested
Duplicate chargeduplicate-chargeCandidateShipped — held for confirmation
UnbundlingunbundlingCandidateShipped — pair table is SAMPLE
Out-of-network balance billout-of-network-balance-billCandidateShipped — context-gated
Progress billing
Hourly line mathhourly-line-mathAssertedShipped & tested
Reimbursable markupreimbursable-markupAssertedShipped & tested
Over-estimate billingover-estimate-billingCandidateShipped & tested
Cap bypass via reimbursablecap-bypass-reimbursableCandidateShipped & tested
Unauthorized phaseunauthorized-phaseDoc gapShipped & tested
Prior-billing continuityprior-billing-regressionCandidateShipped & tested
Declared gaps — printed in every report
UpcodingNot deterministically detectable without clinical records
Expired contract rateWaits on contract ingestion
Rate-schedule complianceNeeds the firm's employee-to-category assignments
Change-order authorizationNeeds the executed agreement
Retainer application traceNeeds the full invoice series
±1¢tolerance on every computed line — no rounding drift
0floats on a money path, enforced at intake
26/26tests green, zero install, no network
100%of findings cite a reference that resolves
Where this stands

The parts that aren't finished, stated before you ask.

Honest status

  • The engine is deterministic. No network, no secrets, no model in the pass/fail path. The same bill produces the same report every time — which is what makes a finding usable as evidence.
  • The unbundling pair table is SAMPLE data until real quarterly source ingestion lands. That is a named launch gate, printed in the report, not a footnote here.
  • Rights-annex entries surface context, never conclusions. Each is cited and dated; the decision stays with the payer, provider, or agency.
  • Sample figures on this page are test data from the repository's fixtures. The case-study figures are from a real engagement, reported without naming the parties.

Send one bill. See what it can prove.

Send an itemized statement or a progress-billing series with its contract. You get the findings, the arithmetic behind each one, the three buckets, and the list of checks that did not run — before any engagement.

Recovery runs
on proof.

Not on volume, not on a percentage of what someone hopes is wrong.

Run a bill through it