On this pageWhere the cents go
Every ledger we inherited was designed around a simple assumption: the smallest amount of money anyone cares about is one cent. For a company whose biggest vendor bills by the token, that assumption is quietly, expensively wrong.
Where the cents go#
A short completion on a small model costs around $0.00004. An agent that classifies support tickets might make forty thousand of those calls a day. Each one, rounded to the nearest cent, is zero. Rounded up, it is 250 times its real cost.
Neither is acceptable. Round down and the ledger says the agent is free while the vendor invoice says otherwise. Round up and every per-agent margin report is fiction. Most teams end up reconciling the difference by hand at month end, with a spreadsheet and a plug line called unallocated.
Across the accounts we migrated in the first half of 2026, the median company could not attribute 31% of its inference spend to a team, agent or customer before moving to Nebula.
A smaller unit of account#
The Nebula ledger stores every amount as an integer count of micro-cents — one millionth of a cent, or 10⁻⁸ dollars. That is enough precision to record a single token on the cheapest model we have seen priced, with room to spare, while still fitting a trillion dollars comfortably in a signed 64-bit integer.
| Unit | Value in USD | Smallest call it can record |
|---|---|---|
| Cent | 0.01 | About 250 small-model completions |
| Mill | 0.001 | About 25 completions |
| Micro-cent | 0.00000001 | A single token |
We never use floating point for money, anywhere. Floats are fine for forecasting; they are not fine for a number you have to defend to an auditor.
Settling back to cents#
The card networks and the banking rails still settle in cents, so precision has to be given back somewhere. We do it exactly once, at the boundary, and we keep the remainder.
- 1Usage events are recorded at full precision against the agent, model and environment that produced them.
- 2When the vendor charges the card, the settled amount is matched to the usage window it covers.
- 3The difference between the sum of usage and the settled amount — usually a fraction of a cent — is posted to a rounding account for that vendor, not smeared across lines.
- 4The rounding account carries forward and nets out over the next settlement, so it never grows.
The result is a ledger where the sum of every agent’s spend equals the bank statement to the cent, and every individual line is still accurate to the token.
What it looks like in the API#
Amounts in the API are returned as strings in dollars with up to eight decimal places, alongside the settled amount in cents where one exists. Strings, because JSON numbers lose precision in more languages than you would expect.
{
"id": "led_9xK2…",
"agent": "agt_8KpZ2xQ4",
"vendor": "openai",
"amount": "0.00004210",
"currency": "usd",
"settlement": { "id": "stl_41Qa…", "amount_cents": 1240 }
}The takeaway#
If your costs are made of millions of tiny events, the unit of account is a product decision, not an implementation detail. Pick one small enough to be honest, round exactly once, and keep the remainder where you can see it.