# AI spend where finance already looks

> A Google Sheet of AI spend by team, provider and agent, and every decision, refreshed daily; the same views as CSV for Excel, Looker Studio, Metabase or a warehouse; and a read-only summary link for a board.

Source: https://immiscible.fly.dev/docs/guides/finance-dashboards

The finance pages in the console answer most questions. These three get the numbers to the places finance teams already work, without giving anyone a login. Find them under **Settings**, **Connections**, **Reports and dashboards**.

> **Note**
> Names describe what each export does. Google, Microsoft and the others named here do not endorse or partner with Immiscible.

## The views

| View | Rows |
|---|---|
| Spend by team | Team, cost centre, calls, spend, share |
| Spend by provider | Provider, calls, spend, share |
| Spend by agent | Agent, agent id, calls, spend: model calls made with that agent's key |
| Daily spend | Each day of the period, calls and spend |
| Decisions | Every action an agent asked about: when, which agent, the action, the decision, whether a person decided, the amount, the merchant or recipient and the agent's own summary |

Spend by team and provider uses the same records as the chargebacks on the finance page, so the numbers agree.

Spend is shown in the currency your books are in (**Settings**; pounds for a new workspace), converted at the newest European Central Bank reference rate Immiscible has stored, with the US dollars providers bill in beside it: a **Spend (£)** and a **Spend ($)** column, and a last row giving the rate and its date. Until a rate has been fetched, spend shows in dollars alone and the last row says so; a conversion is never guessed.

## Google Sheets

An owner or admin chooses **Connect** on **Google Sheets** and approves at Google. Immiscible asks for one scope, `drive.file`, which lets it see only the files it creates: it cannot read anything else in the Drive. It makes a spreadsheet in that person's Drive with an **About** tab and one tab per view, and rewrites those tabs every day. Values are written as plain values, so nothing an agent wrote is read as a formula.

- Build charts and pivot tables on tabs of your own: the six tabs are overwritten on each refresh.
- `POST /api/w/{workspace}/dashboards/sheets/sync` refreshes at once.
- Deleted a tab, or the whole sheet? The next refresh puts it back, or makes a new sheet.
- **Disconnect** withdraws Immiscible's access at Google. The sheet stays in the Drive.

Looker Studio reads a Google Sheet as a data source, so this sheet is also the simplest way to a Looker Studio report.

The operator sets this up once on the server; see `GOOGLE_SHEETS_CLIENT_ID` in the [deployment reference](https://immiscible.fly.dev/docs/guides/deploy.md).

## CSV

**CSV download** on the card downloads any view for the last 30 days. Anyone who can read reports can also fetch `GET /api/w/{workspace}/dashboards/csv/{view}?days=90` while signed in, where `{view}` is `team`, `provider`, `agent`, `daily` or `decisions`.

- **Excel**: open the file, or use **Data**, **From Text/CSV**.
- **Metabase**: upload it to a database Metabase writes to (Postgres, MySQL, Snowflake, Redshift or ClickHouse), with uploads turned on.
- **BigQuery** and **Snowflake**: load it from a file or a bucket (`bq load`, or `PUT` then `COPY INTO`). Neither loads from a URL, so a scheduled job downloads and loads it.

Text that would read as a formula is prefixed with an apostrophe.

## Share with your board

**Share with your board** makes a link to a summary page anyone can open without signing in: total AI spend, spend by team and by provider, daily spend, and how many requests were allowed by the rules, approved by a person, refused or still waiting. It names no person, agent or merchant, and shows nothing an agent wrote.

- The link is shown once. It ends after 30 days by default (up to 90, through `POST /api/w/{workspace}/dashboards/board-links` with `expiresInDays`), and the page says when.
- Revoke one link, or all of them with **Disconnect** on the card. A revoked or ended link answers that it has ended.
- The page is not indexed and sends no referrer. Only a digest of the link is stored, so nobody can read the link back out of the database.

Making or revoking a link needs an owner or admin; analysts can see the list.
