Billing
Platform › Billing turns metered use into statements. Model use (LLMaaS) is priced per model, per million tokens, from a price book or a rate negotiated with the tenant. Reserved GPU capacity (GPUaaS) is priced per GPU-hour, whether or not it is used. A billing period sets the window a statement covers; issuing a statement numbers it and freezes it.
Who can open it
Section titled “Who can open it”Platform administrators only. Every billing route is refused to tenant roles. Send statements to your customers yourself.
Principles that run through every tab
Section titled “Principles that run through every tab”- Exact amounts. Money is computed as exact decimals end to end, and rounded half-up to two places only on the document.
- Rates are fixed when usage is metered. Each metered request stores the rates that applied to it. Changing a price never changes usage already metered, a draft statement or an issued one.
- Unpriced is not free. A request served with no rate is recorded as unpriced, and the statement labels it so, rather than billing it at zero.
- One currency per document. Prices, periods and statements each carry a currency, and totals are never summed across currencies.
- An issued statement never changes. A wrong one is corrected with a credit note.
What you see
Section titled “What you see”- The header, Billing, and a tenant picker: All tenants, or one tenant to narrow every tab.
- No live price book, when none is: “Inference is being metered but left unpriced — deliberately, rather than billed at zero.” with Open price books.
- Tiles: Open periods, Awaiting issue, GPUs under contract, Active commitments, Trials running and Statements issued.
- Renewals due: commitments ending within 60 days. When one lapses, the capacity it covered reprices to on-demand at the list rate.
- Six tabs: Periods, Issued statements, LLMaaS prices, Negotiated rates, GPU rates and Commitments.
Price models: LLMaaS prices
Section titled “Price models: LLMaaS prices”Price books holds list prices per model, quoted per million input and per million output tokens. One book is live at a time, in the platform currency. Edits go into a draft.
A new installation ships one draft book of example market rates in US dollars. It prices nothing until you make it live.
The tab shows the chosen book’s name, status, model count and effective date, then its Model rates: Model, Input / 1M tokens, Output / 1M tokens and Output × (output over input).
Create a price book and set rates
Section titled “Create a price book and set rates”- Select New price book. Enter a Name, such as
Standard list — 2026, and choose the Currency: only a book in the platform currency can be made live. Select Create. - Select Add model rate. Find the model in the catalog, or type a name the catalog does not have yet; a rate for a name no catalog model has prices nothing until one does. Enter Input / 1M tokens and Output / 1M tokens as decimals, such as
2.50. - Repeat for every model you serve. Edit rate changes a rate while the book is a draft.
Price output separately from input: output tokens cost more to generate, and providers price them three to five times higher. Embedding models take an output rate of 0.
Make a price book live
Section titled “Make a price book live”- Choose the draft book, then select Make live.
- Confirm Make this price book live.
Its rates price every model call in its currency from then on. The book live until now is archived. An archived book cannot be made live again, and a live book cannot be edited: it shows Live book — rates are fixed. To reprice, create a new draft and make it live.
A book not in the platform currency shows Not in the platform currency and cannot be made live.
Negotiate a rate for one tenant
Section titled “Negotiate a rate for one tenant”A negotiated rate prices one model for one tenant. It beats the list price, and nothing beats it. Setting a new one supersedes the old rather than rewriting it.
- Choose the tenant in the picker, open Negotiated rates, and select Negotiate a rate.
- Tenant and model: the model, from the live price book.
- Rates: Currency, Input / 1M tokens and Output / 1M tokens, each shown beside the list price.
- Review: the difference from list, under Effective from now. Select Save.
The new rate applies to what is served from that moment. Usage already metered keeps the rate it was served at. The table shows Model (an older row tagged superseded), Input / 1M tokens, Output / 1M tokens, vs list and Effective. On the statement, the model’s lines read (negotiated).
Price GPUs: GPU rates
Section titled “Price GPUs: GPU rates”GPU rate card holds an hourly price per GPU flavor, for each term it is sold under: Hourly, Daily, Monthly, Quarterly and Yearly. The rate is always per GPU-hour, whatever the term: a month is not a fixed number of hours, and a monthly figure would bill February and March differently for the same contract. Longer terms are quoted lower; that discount is what a commitment buys.
Rates are set per currency: choose one at the top of the tab. A new installation ships example rates in US dollars for the seeded flavors. A MIG slice is priced in proportion to its memory, so a slice never costs more than its whole card.
To set a rate, select the cell for a flavor and term, enter the Rate per GPU-hour, and select Save.
A flavor with no rate shows Set. A tenant holding such a flavor accrues GPU-hours but no charge, and nothing hides the gap. GPU flavors come from the catalog in Settings.
How GPU capacity is billed
Section titled “How GPU capacity is billed”Every GPU a tenant holds in its capacity envelope accrues charges every 15 minutes, whether or not anything runs on it.
- Without a commitment, held GPUs are billed at the hourly list rate.
- Within an active commitment, the committed GPUs are billed at the commitment’s discounted rate. GPUs held beyond the commitment overflow to on-demand at the undiscounted list rate.
- The rate applied is stored on each accrual, so a line stays explainable after a rate or a commitment changes.
Record a GPU commitment
Section titled “Record a GPU commitment”A commitment is a signed contract: a quantity of GPUs of one flavor on one cluster, for a term, at a discount. It is billed every hour of the term whether or not the GPUs are held. It is separate from capacity: recording one grants nothing, and granting capacity changes nothing about what is committed.
- Open Commitments, then select New commitment.
- Tenant and cluster: the tenant that signed, and the cluster the GPUs are reserved on.
- GPUs: the GPU flavor, whole card or MIG slice, and the GPUs committed.
- Term and price: Term, Years (3 is common), Discount % from 0 to 100, Currency and Starts. When the flavor has a yearly rate in that currency, the step shows the List rate, the Committed rate and the total Over the term.
- Contract ref and review: the Contract reference, then select Create.
The commitment is recorded as a draft and bills nothing until you select Activate on it. End commitment stops it now and records it as canceled: from then on the capacity bills on demand, and hours already billed are not changed. An ended or canceled commitment is kept.
Open a billing period
Section titled “Open a billing period”Usage is metered continuously; a statement needs a window. A billing period is that window, set by explicit dates, for one tenant. A tenant cannot have two periods over the same day.
- Open Periods, then select New period. The New billing period dialog opens.
- Tenant and dates: the Tenant, Starts, and Last day billed. Both dates are included: the period stops at 00:00 UTC the day after the last day. A window over a period the tenant already has is refused here.
- Currency and trial: the Currency (the platform currency by default), the Trial period switch, and Free allowance (optional).
- Notes and review: Notes (optional), then select Create.
The period’s page opens.
- A trial meters and prices exactly as a paid period, then waives the whole charge. The statement shows what the usage would have cost, under Waived — trial.
- A free allowance waives charges up to that amount within a paid period, under Waived — allowance. Unused allowance is not refunded, and a total is never negative.
The Billing periods table shows Tenant, Period, Status (open, closed or stated) and Credit, with Statements, Close, Reopen and Delete in each row.
- Close marks the period finished so its statements can be issued. Until one is issued, you can Reopen it.
- Delete removes the period with its dates, trial setting and notes. The usage in those dates is kept and can be billed by a new period.
- A period becomes stated once both its statements are issued. It can then no longer be reopened or deleted.
Issue a statement
Section titled “Issue a statement”A period has two statements: LLMaaS — token consumption and GPUaaS — reserved capacity. Until issued, each is a draft recomputed from the metered usage every time it is read.
- Open the period (Statements on its row). The two statements sit side by side.
- Close the period if it is open: Issue is disabled with “Close the period before issuing — usage can still arrive.”
- Select Issue on a statement. Issue this statement? offers Issuer reference (optional), your own fiscal identifier printed on the document, and Customer reference (optional), such as a purchase order.
- Confirm.
The statement gets a number and is frozen: its lines and totals never change again, even if a rate is superseded afterwards. Issue the GPUaaS statement too, even when it is empty: “no GPU capacity was held” is a statement the customer is entitled to, and the period stays unstated until both are issued.
Print prints the statement from the browser.
What a statement holds
Section titled “What a statement holds”| Statement | Lines |
|---|---|
| LLMaaS | For each model and rate applied: an input line and an output line with tokens and the unit price, then a total line with the amount. A model repriced mid-period gets one group per rate. Lines are suffixed (negotiated) or (unpriced) where that applies. |
| GPUaaS | For each GPU flavor and rate: a committed line at the discounted rate and an on-demand line at the list rate, each in GPU-hours. |
Then Subtotal, any Waived amount, Total, and once credited, Credited since and Net due. An empty statement says so (“No inference was served for this tenant in this period.”) rather than printing zeros.
Numbering
Section titled “Numbering”Numbers run in an unbroken series per document type per year, zero-padded to six digits so they sort as text:
| Document | Example |
|---|---|
| LLMaaS statement | OLY-LLM-2026-000001 |
| GPUaaS statement | OLY-GPU-2026-000001 |
| LLMaaS credit note | OLY-CN-LLM-2026-000001 |
| GPUaaS credit note | OLY-CN-GPU-2026-000001 |
A failed issue returns its number, so the series has no gaps. Two statements issued at the same moment get consecutive numbers.
Correct a statement with a credit note
Section titled “Correct a statement with a credit note”- Open the issued statement. Its footer reads “Wrong? Issue a credit note — this document stays exactly as it was sent.” Select Credit.
- In Issue a credit note, enter Amount (optional): leave it empty to credit the whole remaining balance. A partial credit cannot exceed what remains.
- Enter the Reason. It is required, and it is printed on the note.
- Confirm.
The credit note is a second numbered document, in its own series, that references the statement and carries a negative total. The statement itself does not change. It then lists Credit notes against this statement. A credit that would read 0.00 on the note is refused.
Issued statements
Section titled “Issued statements”Issued statements lists everything numbered and frozen: Number, Service, Tenant, Period, Issued and Total, with credit notes marked and the statement they correct. Net issued and Credit notes are totalled per currency. Draft statements are not listed: they live in their periods.
Limits
Section titled “Limits”| Limit | Value |
|---|---|
| Live price books | 1, in the platform currency |
| Rates | Per million tokens (models); per GPU-hour (GPUs) |
| GPU accrual interval | 15 minutes |
| Commitment discount | 0 to 100% |
| Renewal warning | Commitments ending within 60 days |
| Overlapping periods for one tenant | Refused |
| Statement number | Six digits per series per year |
| Smallest credit | One that reads at least 0.01 on the note |
Related
Section titled “Related”- Settings for the platform currency
- Keys, budgets and metering
- Usage for what tenants consumed
- Tenants for capacity and subscriptions