← All posts

Why everything is counted in integer millimes

A dinar is a thousand millimes, and no floating-point number touches your balance. Here is why.

Most AI platforms bill in dollars, with prices like $0.00042 / 1K tokens. We bill in integer millimes, and the reason has more to do with arithmetic than with localisation.

The trouble with floats#

A balance stored as a floating-point number eventually lies. 0.1 + 0.2 is not 0.3 in binary, and a wallet that accumulates tens of thousands of small debits drifts in a way that cannot be explained to a customer — let alone an auditor.

A millime is the indivisible unit of the Tunisian dinar: 1 TND = 1,000 millimes. Storing integer millimes makes every balance exact, every debit exact, and the sum of the debits exactly the change in balance.

What that means in practice#

  • A model's price is an integer number of millimes per million tokens.
  • A request's cost is rounded up to the millime, once, at billing time.
  • The wallet balance and the sum of unexpired credit lots must be equal. That is an invariant, checked by a dedicated script.

The rounding is visible#

Rounding up to the millime means a tiny request still costs one millime. That is deliberate: the only honest alternative is to charge zero, and a platform that charges zero for real work ends up taking it back somewhere else.

Exact rates are on the Plans and pricing page — and that table is rendered from the same registry the gateway bills with, precisely so it cannot drift.