> ## Documentation Index
> Fetch the complete documentation index at: https://help.dash.fi/llms.txt
> Use this file to discover all available pages before exploring further.

# Recovery and refund claims

> How the AI Spend Agent reconciles billing, assembles evidence packages for billing discrepancies, and hands them to you to submit to the provider.

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.

<Note>
  Dash.fi does not file refund claims with the provider for you. The agent assembles the evidence; you submit the claim.
</Note>

## 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 — the amount that's actually claimable.
* **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.

## Opening a refund claim

Refund claims are backed by **billing-discrepancy** findings on the [Violations](/integrations/ai-tokens/dashboard#violations) view.

<Steps>
  <Step title="Open Violations">
    From the agent's rail, open **Violations**.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>
</Steps>

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](#track-your-progress-with-status-tabs)).
* **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:

| Package state                        | What it means                                                                                                                                  |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **Preparing…**                       | The package is queued or being built. Check back in a moment — refreshing the page updates the state.                                          |
| **Ready** — with **Download** button | The package is available. Click **Download** to save it.                                                                                       |
| **Failed**                           | The build didn't complete. Dash.fi retries failed builds automatically; if it stays failed, contact [support@dash.fi](mailto:support@dash.fi). |

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.

<Tip>
  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.
</Tip>

## 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.
