# Revenue upload

> Upload what each customer pays you, so ai-tally can show whether serving them is profitable.

ai-tally already knows what each customer costs you in AI. Upload what each customer pays you, and ai-tally can show your gross margin per customer: revenue minus AI cost.

Use this if your revenue lives in a billing tool like Chargebee, Recurly, Zuora or NetSuite, or in a spreadsheet.

## Make the file

Make a CSV file with these four columns:

```csv
account_id,period,amount,currency
acct_northwind,2026-08,1200.00,USD
acct_contoso,2026-08,450.00,USD
```

| Column | What to put |
|---|---|
| `account_id` | The customer id. Use the same id you pass to `with_account` or hash for the proxy, so revenue and cost line up. |
| `period` | The calendar month, like `2026-08`. A full date like `2026-08-01` also works and counts as its month. |
| `amount` | What the customer paid that month. `$` signs, commas and spaces are ignored. A negative amount is a credit and is subtracted. |
| `currency` | A 3-letter code, like `USD`. Use one currency per month. |

Rules:

- **One row per customer per month.**
- **Up to 50,000 rows** in one file.
- **One bad row rejects the whole file.** The error lists every line to fix, so you can fix them all at once.

## Upload it

In the dashboard, open **Connectors** under **Configure**. In **Revenue upload: CSV**, click **Upload revenue CSV** and choose your file. **Download the template** gives you an empty file with the right columns.

## Updating a month

- **Re-uploading replaces.** Uploading a month again replaces that month completely. A customer missing from the new file is removed for that month.
- **Stale uploads are flagged.** The card marks your revenue as out of date when the last upload is more than 35 days old, or when the newest month is more than two months behind. Upload each month after you close your books.

## Your customer ids

- **Ids are hashed on arrival.** ai-tally turns each `account_id` into the same hashed customer id that cannot be traced back, used everywhere else in ai-tally.
- **The real id is never saved.** It is used only to make the hash, and it is not saved or logged.

## See it

Open **Cost per Account** under **Analyze**. **Accounts by gross margin** shows each customer's revenue next to their AI cost. **Unit Economics** also shows gross margin.

## Next

- No customer costs yet? Attach customers to your calls first: see [What gets counted](https://ai-tally.com/docs/cost/what-gets-counted#cost-per-customer).
