Ingest raw usage events from your metering system (API or message queue), including customer_id, product_id, usage_quantity, usage_timestamp, and unit_price or rate_schedule reference.
Apply the rate schedule to each event to compute the billable amount; aggregate events by customer, product, and billing period to produce a usage summary matching what the billing system will invoice.
Determine the revenue recognition timing: for usage-based arrangements, ASC 606-10-55-18 permits recognizing revenue in the amount billed if the billed amount corresponds directly to the value delivered; document this election in your revenue recognition policy.
Write a recognition journal entry at the end of each billing period (or upon invoice generation): debit accounts receivable or unbilled revenue, credit revenue, for the aggregated usage amount per customer per product.
For partially delivered periods (e.g., month-end cut-off with usage not yet billed), accrue unbilled revenue by computing usage through the period-end date and posting to an unbilled AR account, reversing at the start of the next period.
Reconcile recognized revenue against the metering system's total event quantity multiplied by rate for each period to detect rating engine discrepancies before they reach the GL.
Known gotchas
Usage data arriving late (out-of-order events from distributed systems) can cause the period-end accrual to understate unbilled revenue; implement a configurable latency window and reprocess the prior period if significant late events arrive.
Tiered pricing creates a non-linear relationship between usage and revenue: a customer crossing a tier boundary mid-period means early-period events are retroactively re-rated; recalculate the full period's revenue rather than incrementally adding each event's standalone rate.
Minimum commit fees in usage arrangements are recognized ratably over the commitment period regardless of actual usage; the usage-based recognition logic must check whether actual usage exceeds the minimum before applying the direct-recognition election.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp