# How billing works

> How prepaid credit, per-match metering, and monthly grants fit together — what counts as a billable match, what doesn't, and how the quotas relate.

Firehose billing is **prepaid credit**. Your balance funds API stream usage; subscription tiers top
it up automatically each month, and you can add more any time.

## Matches are the billable unit

API stream consumption is metered per **match** at **$5 per 1,000 matches**. A match is a newly-seen
page delivered on the stream (deduplicated, so re-delivering the same page isn't charged twice).

Your balance is the sum of your active **credit grants**. New organizations get a one-time **$5
welcome grant**. Paid subscription tiers add a **monthly grant** sized to their reviewable-match
allowance (e.g. Starter's $10/mo funds 2,000 matches); monthly credit expires at the end of each
period. Top-up credit never expires.

```text
balance = sum of remaining credit across active grants
match delivered on /v1/stream ──▶ debit $0.005 from balance
balance hits $0 ──▶ new stream connections return 402
```

## What is and isn't metered as matches

| Activity | Metered as |
| --- | --- |
| Pages delivered on `GET /v1/stream` | Matches ($5 / 1,000) |
| Reviewing matches in the dashboard feed | Plan's monthly reviewable-match cap (not credit) |
| URL Watch crawls | Plan's monthly check quota (not credit) |

So the **feed** and **URL Watch** draw down their own monthly quotas, while the **API stream** draws
down prepaid credit. Three separate buckets.

## Next steps

<CardGrid>
  <Card title="Errors & limits" href="/api-reference/errors-and-limits">
    What a 402 means and the rate limits that apply.
  </Card>
  <Card title="Plans & pricing" href="/billing/plans">
    What each tier includes and how grants are sized.
  </Card>
</CardGrid>
