05 · Usage & seats
Meters, snapshots, and the invoice line.
Usage is what they did. Seats are how many they had. Both have to land before the draft can tell the truth.
Builder
A vendor spreadsheet becomes events — once the columns are mapped.
A template maps vendor columns: who, when, how much, uniqueness, filters. Uploading a sample does not bill anyone. Process computes the preview. After that, mapping edits refresh on their own. Only a new file or worksheet asks you to Process again.
| Customer | Seat type | As of | Daily seats | Event |
|---|---|---|---|---|
| Nimbus Cloud | Editor | 1 Apr | 180 | — |
| Nimbus Cloud | Editor | 2 Apr | 180 | — |
| Nimbus Cloud | Editor | 3 Apr | 196 | Add 16 |
| Westbound Logistics | Viewer | 3 Apr | 40 | — |
| Westbound Logistics | Viewer | 4 Apr | 38 | Remove 2 |
Formula · daily_seats first, then columns, then helpers. Events only where the count changed.
Seat formula tokens
Helpers evaluate before the daily-value formula so it can reference them. Do not mix them in one flat list.
01
daily_seats
Sonic’s current balance for that customer and seat type. Always first.
02
Columns
Only the sheet columns the expression references — converting every column lets an unrelated text id fail arithmetic.
03
Helpers
Named formulae that run first so the daily-value expression can call them.

Snapshots
Seats are how many they had that day.
Sonic compares each snapshot to the balance on record and writes an event when the count changes. Vendor increase columns are not imported.
Usage
Events through a file or a warehouse.
Prepaid slabs and packaged bands are list-price models, not spreadsheet afterthoughts. Flat-band overage is materialised as a companion product so the invoice stays readable. If the line is zero, the usual cause is no events for the period — not a “wrong” list price.
Seats
Snapshots are absolute counts.
Preview shows daily values first, then events only where the count changed. Date-only sheets are that calendar day at midnight UTC — not a local midnight conversion.
Usage
2 templates
Event files
Seats
1 template
Daily snapshots
Last process
3 Apr
Sample only
| Template | Grain | Worksheet | Status |
|---|---|---|---|
| API events | Usage | daily_export | Ready |
| Seat snapshots | Seats | pupm_daily | Ready |
| Warehouse sync | Usage | — | Connected |
| Legacy CSV | Usage | sheet1 | Needs process |
Uploading a sample does not bill. Process computes the preview.
00
Platform
One chain. The order.
01
Contracts
PDF to a typed agreement
02
Catalogs
Who you bill, what you sell
03
Subscription
The schedule is the core
04
Shipment model
Rate cards, not months
05
Usage & seats
Events and snapshots
06
Shipment uploads
Process, confirm, create, invoice
07
Invoices
Drafts grow. Sent do not.
08
Watchtower
Inbox, cadence, a person
09
Revenue
Billed is not recognised
10
Bank rec
A deposit is a fact
11
Integrations
Pipes in and out
Next
See it on your contracts
A walkthrough on the agreements and files you actually bill from — not a slide deck.