## TL;DR

A metered billing invoice for $0 means no usage was reported during the billing period: with nothing to bill, Stripe correctly invoices zero. Report usage via usage records before the period closes (or backfill for the missed window where the API allows), and verify your metering pipeline actually emits records. A $0 invoice is usually a metering gap, not a Stripe bug.

```text
stripe metered billing invoice $0: no usage reported during the trial period
```

## Use this when

- Stripe metered billing produces a $0 invoice
- No usage was reported during the trial or billing period
- You need to backfill missing usage

## Not for this skill when

- Usage was reported but billed incorrectly (metering math issue)
- The subscription has a fixed price component that should have billed
- You are debugging the upcoming invoice preview

## Steps

1. Check the usage record history for the subscription item over the billing period.
   Expected: You confirm zero usage was reported.
2. Inspect your metering pipeline: confirm events flow from your app to Stripe usage records.
   Expected: You find where reporting broke.
3. Backfill usage records for the missed window if still within the allowed period.
   Expected: The missing usage is recorded.
4. Verify the next invoice reflects the reported usage.
   Expected: Billing is correct going forward.
5. Add monitoring on usage-record volume per subscription so silent metering gaps alert.
   Expected: Future gaps are caught early.
6. Decide the trial policy: whether $0 trial invoices should even be sent.
   Expected: The product behavior is deliberate.

## Tool compatibility

Stripe Billing metered usage records API; usage must be reported before the invoice finalizes.

## Variant phrasings

### stripe metered invoice zero no usage

The symptom stated plainly.

### stripe usage records missing billing period

The pipeline angle.

### stripe $0 invoice metered billing trial

The trial-specific phrasing.

## Why it happens

Metered billing inverts the usual flow: instead of Stripe knowing the price, your application tells Stripe how much was consumed via usage records. If your pipeline emits nothing during the period, through a bug, a deploy gap, or the customer genuinely using nothing, Stripe has zero quantity to price and the invoice is $0. The invoice is arithmetically correct; the data feeding it is missing. Trial periods surface this most because new integrations often have not wired metering yet.

## Edge cases / pitfalls

- Usage records are timestamped: records reported after the period closes may land on the next invoice instead.
- Idempotency on usage record creation prevents double-counting when you backfill.
- A customer with real zero usage should still get the $0 invoice or an explicit no-invoice policy; decide which.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_g67s1Sn8wOKxgq0v-MCNvw
