Measure the period, then bill it.
A metered charge can only be totalled once its period has actually happened. Revvly captures that total as a usage reading, holds the invoice until the reading is settled, and gives you the surfaces to settle it. A period is never billed on a number nobody looked at.
Which components this applies to
Two independent things decide how a component measures: what happens to its quantity at the period boundary, and which number in the period gets rated. Only the first one gates an invoice.
Independently of that, you choose which number is rated:
Components authored before these two settings existed were converted from their old measurement mode automatically: Peak became a carried-forward quantity billed on its highest value, Cumulative became a per-period quantity billed on its total. Nothing changed about how they bill.
The cycle
- 1Usage accruesThrough the period, an integration posts increments to the usage API, or nobody does and an operator will enter the figure later. Which of the two Revvly expects is the component’s capture mode.
- 2The period closesA daily sweep captures the accumulated total as a reading before the live counter resets, so the number that will be billed is fixed at the boundary rather than read back afterwards.
- 3A grace window runsFor an integrated meter the reading stays open for a day after close, so events delayed by a queue or a retry still land in the period they belong to.
- 4The reading seals, or asks for youAn hourly sweep settles what it can. A meter that reported seals on its own; one that did not is handled by the policy below, and anything left needing a decision raises a task.
- 5The invoice issuesOnce every reading it carries is sealed or waived, the held draft issues: it takes its invoice number and its dates at that moment, and enters receivables like any other invoice.
Reading states
Only Sealed and Waived release an invoice. Every other state holds it.
- Period closesThe total is captured as a reading.
- AccumulatingAPI capture, grace window still open.orAwaitingManual capture, no value entered yet.
- SealedQuantity is final.orWaivedNot billed, with a reason on record.orUnverifiedAPI sent nothing; invoice stays held.
- Held invoice issuesOnce every reading is sealed or waived.
What silence means, per component
A period that received nothing is ambiguous, and the ambiguity is expensive in both directions: bill it as zero when an integration was broken and you lose the revenue silently; hold it for review when zero is the ordinary outcome and you generate a held invoice and a task every period, for every such client, forever. So it is a per-component decision — a fact about what is being metered, not about who is being billed.
Capture mode normally comes from the client: an integrated client is API, everyone else is manual. One component on one subscription can be pinned the other way, with a reason kept for audit — for the client who integrates most of their meters and reports one by hand.
Working the queue
Held drafts are not pending invoices
Whether a document has been issued and whether it has been paid are separate questions, and a held draft answers only the first. It has no invoice number, no invoice date, no due date and no payment status, which is exactly what keeps it out of receivables, out of AR aging and out of payment reminders: nothing is owed until it issues. It picks all of those up at the moment it issues, so invoice numbers stay in issue order.
Drafting and holding was chosen over declining to invoice at all. An invoice that exists and says “draft, awaiting usage” is far easier to act on than one that silently does not exist because a period never sealed. For the same reason an abandoned draft is voided rather than deleted — the record that a period was expected to bill and did not is what an audit needs.
What holds an invoice
- A reading on it is not yet sealed or waived
- The subscription is contracted to bill a per-period metered component that nothing is tracking usage for — the invoice is held with that component named, rather than issued without it
The second case is the one worth knowing about: an untracked component produces no line at all, so without the hold the renewal would issue the base charge alone and the metered charge would disappear from the bill in silence.