Skip to main content
Recovery is where the AI Spend Agent turns confirmed billing discrepancies into evidence packages you download and submit to the provider yourself. It has two parts:
  • The reconciliation summary — what the agent expected to be billed vs. what actually was.
  • The refund claim list — one claim per billing-discrepancy finding, each with its own evidence package ready to download.
Dash.fi does not file refund claims with the provider for you. The agent assembles the evidence; you submit the claim.

Reconciliation summary

Every audit produces a reconciliation of your provider bill against expected pricing. The summary at the top of Recovery shows:
  • Billed vs. expected — Total the provider billed you against what pricing implies you should have been billed.
  • Recoverable — The positive-delta total across reconciled buckets. This is the amount that’s actually claimable, split into Confirmed and Potential (see below).
  • Net delta — Billed minus expected across everything reconciled (can be positive or negative).
  • Buckets reconciled — How many usage buckets the audit was able to line up against pricing.
  • Period — The date range the reconciliation covers.
  • Audit coverage — The share of the provider’s billed spend the audit could actually compare against local usage. Below 80% is called out in amber. The gap is billed buckets with no local usage to compare — usually a sign that not all of your usage is flowing through connected keys.
  • Coverage caveat — When some usage couldn’t be reconciled (missing pricing, unknown models), the summary flags it so you know the recoverable number is a lower bound. The dollar amount of any excluded billed buckets is shown inline.
  • Low-data flag — If fewer than 14 days have been audited so far, the summary notes that the baseline is still building. Treat the recoverable figure as preliminary until more days have accumulated.
If the audit hasn’t run yet, the summary shows an unaudited state and points at Refresh insights. If the audit ran and found no overcharges, it shows explicitly — “no overcharges found · N buckets reconciled · $0 to recover” — instead of an empty section that could read as broken.

Confirmed vs. Potential recoverable

When the recoverable figure has any Potential portion, the summary breaks it down into two tiers so you know how much of it is ready to file and how much still needs to be confirmed against an invoice.
  • Confirmed — Backed by real per-model billed cost. Anthropic reports cost per model, so Anthropic discrepancies are Confirmed by default. OpenAI discrepancies are Confirmed only after they’ve been validated against the provider invoice.
  • Potential — Derived from estimated, model-blind cost. OpenAI’s cost API reports cost per project, not per model, so the agent apportions billed cost across models by list-price share. That signal is real but a per-model figure may be a distribution artifact, so it’s surfaced with a confirm with invoice note and left out of the confirmed claimable total until the invoice backs it up.
Confirmed + Potential always equals the total Recoverable. OpenAI reconciliations are treated as estimated across the board, so re-auditing an older window brings historical OpenAI rows across into the Potential tier rather than as Confirmed. Windowed billing-discrepancy findings (billing_discrepancy_window) roll up only Confirmed per-bucket deltas — the Potential portion is excluded so the aggregate isn’t inflated by estimated cost.

Opening a refund claim

Refund claims are backed by billing-discrepancy findings on the Violations view.
1

Open Violations

From the agent’s rail, open Violations.
2

Expand a billing discrepancy

Click a Billing discrepancy finding to expand it. Only findings whose rule is claimable show the claim action — cache, model-efficiency, and pricing-data findings can’t back a claim.
3

Open the claim

Click Open refund claim. The action flips to Claim opened once the claim exists, so you can’t double-file against the same finding.
The new claim appears in the Recovery list, and Dash.fi begins assembling its evidence package in the background.

The refund claim list

Each row in the list represents one claim and shows:
  • Progress — Your own status for the claim (see Track your progress).
  • Created — When the claim was opened from its violation.
  • Refund — The claimable amount from the underlying billing discrepancy.
  • Package — The evidence package’s state, and once it’s ready, the Download action for it.
Expanding a row shows the originating finding — title, severity, human explanation, and estimated impact — inline, so you don’t need to jump back to Violations.

Downloading the evidence package

When you open a claim, Dash.fi builds a .zip evidence package that contains the reconciliation detail and supporting artifacts for the underlying billing discrepancy. The Package column reflects the build: Click Download to save the file as ai-spend-refund-claim-{id}.zip. Download URLs are short-lived and generated per click, so you can share the button but not a raw link — coming back later just fetches a fresh URL. Submit the downloaded package to your provider through their normal refund or billing-dispute channel — for example, Anthropic support or the OpenAI billing contact. The package is self-contained. It includes the reconciliation numbers, the discrepancy detail, and the pricing basis the agent used, so the provider has everything they need to review the claim.

Track your progress with status tabs

Recovery is the single home for claims. Each claim has a Progress field you set yourself to track where you are in gathering approvals, submitting the package to the provider, and reconciling any credit that lands. Available statuses:
  • Not started
  • In progress
  • Completed
  • Cancelled
The status tabs at the top of the list filter claims by this field, with counts per status. The tab you land on defaults to All. Change a claim’s status from the control on its row — the change saves immediately.
A useful convention: leave a claim at Not started until you’ve downloaded the package. Move it to In progress once you’ve submitted it to the provider, and flip it to Completed when the refund or credit lands in your account.

What if there’s nothing to recover?

If the reconciliation runs and finds no positive delta on any bucket, Recovery shows a clear “no overcharges found” state alongside the reconciliation numbers. That way you can see it’s the real answer, not a missing audit. Re-run the audit any time with Refresh insights — a future window may surface new discrepancies as usage and pricing data land.