Cost & Budgets
The Usage tab on the Models page tracks the estimated cost of processing and lets you set spend budgets that can alert you (or pause processing) when a limit is reached.
Every cost figure in DocAI Fabric is an estimate, computed from the rates you configure: it is not a billed amount and does not come from your AI provider's invoice. Use it for tracking and budgeting, not reconciliation.
Cost rates
Each model carries an optional cost rate, shown in the Est. cost column on the Models tab:
| Model kind | Rate | Unit |
|---|---|---|
| LLM model | input + output token price | per 1M input tokens / per 1M output tokens |
| OCR engine | page price | per page |
- System model rates are set by the platform administrator (they apply to all tenants).
- Tenant model rates are set by you, in the model's Edit dialog under Estimated cost.
If a model has no rate configured, the column shows -, and that model contributes 0 to all cost and budget figures, so an unconfigured rate reads as "free", which is usually not what you want. Set a rate on every model you actually use. (Local/free engines such as on-box OCR are correctly left unset.)
Currency
There is a single platform-wide currency (set by the platform administrator). All cost and budget figures across every tenant use it: there is no per-tenant currency and no currency conversion, which keeps system-model and tenant-model costs directly comparable.
Usage tab: cost tracking
The Usage tab shows how much processing has been done and its estimated cost for the time window, project and task you choose at the top of the tab:
- An Estimated cost summary widget (shown once at least one rate is configured), with the cost per imported page: the estimated cost in the window divided by the pages imported in it. Re-running transactions spends without importing, so a window with many re-runs shows a higher figure than steady processing would.
- A per-model usage table with calls, pages, input/output tokens, errors, and an Est. cost column.
- Drill-downs by project and by task (classification, extraction, …).
Choose a project to see its pages, cost and cost per imported page alone, or No project for usage outside any project, such as model tests on the Models page. A project's figures include Assistant conversations held in it, so choose a task such as Extract to leave them out. Choose a task to see what that task costs: the model figures narrow to it, while pages imported and exported are not divided by task, so the cost per imported page then reads as, for example, "what extraction costs per page imported". The lists offer only the projects and tasks with usage in the window. Budgets are not filtered: each budget has its own scope.
Models without a configured rate show - in the cost column and are excluded from the totals.
Compute-on-read pricing
Cost is calculated when you view it, using the current rates; it is not stored at processing time. This means changing a rate retroactively restates history: if you correct a model's price, every past period's estimated cost (and every budget's spend) updates to match. There is no need to re-process anything.
Cost in Evaluation
On the Evaluation page, the Cost tile shows what processing the dataset's transactions costs, as cost per page: the estimated cost of all their model and OCR calls divided by their pages. Use it next to the accuracy and processing-time tiles to compare configurations: run the dataset, note the cost per page, change a step's model, re-run, and look again. Multiply the cost per page by your own monthly volume to estimate a month.
Open the tile for the details:
- Cost by Step: the estimated cost of each workflow step, named as in the workflow.
- Cost by Model: calls, failed calls, pages, input, cached and output tokens, and the estimated cost of each model or OCR engine, with its share of the total.
- Transactions by Cost: each transaction's pages, cost and cost per page, most expensive per page first, linked to the transaction.
Evaluation compares the cost of the current result: the cost of the steps that produced each transaction's result as it stands. A re-run from the beginning measures it afresh. A re-run from a step keeps the cost of the steps before it and adds what the re-run spends. Re-running a single document adds what that re-run spends. Calls that failed or were retried count, because they were made.
Two notices can appear on the tile and in the details:
- Rates not set for some models: calls to those models are left out of the cost. Set their rates on the Models page; the figures update straight away, with no re-run.
- Without cost data: these transactions were processed before costs were recorded. Re-run them from the beginning to measure their cost (a re-run from a step cannot know what the earlier steps cost). They are not counted as zero.
Cost is counted per transaction, not per document: filtering the Evaluation page by document type does not narrow it.
Text read from a PDF's own text layer, and OCR engines that run inside DocAI Fabric (PaddleOCR, Tesseract), cost nothing unless a rate is set for them.
Two figures: current result and total spent
Each transaction has two estimated cost figures:
| Figure | Answers | Counts |
|---|---|---|
| Cost of the current result | What does this configuration cost? | The steps that produced the result you see now, plus single-document re-runs |
| Total spent | What has this transaction cost in all? | Every call ever made for it: runs later replaced by a re-run, re-runs from the beginning, and single-document re-runs |
Re-running never lowers Total spent. A copy of a transaction (to a dataset, to Memory, or to another project) starts with no Total spent: the copy has cost nothing until it runs. Total spent is recorded from this release on, so a transaction processed earlier shows none until it runs again.
Cost in the Activity Log
Every transaction's Activity Log shows the cost of the current result at the top, beside the number of events. Hover over it for the details: the cost per page, the cost of each workflow step, and Total spent. Each completed step in the timeline also shows what that run of the step cost. A transaction processed before costs were recorded shows No cost data (re-run it from the beginning to measure it), and models without a rate are named so you can set their rates on the Models page. A transaction that failed or was cancelled before any step ran says so: nothing was processed, so nothing was spent.
Cost columns in transaction lists
The transaction lists on Playground, Evaluation and My Work Queue offer a Cost of Current Result column and a Total Spent column. Both are hidden by default: turn them on from Manage Columns (see Views and columns). A dash means there is no cost record, not zero. An amount marked * leaves out calls to models without a rate. The columns sort like any other.
Budgets
A budget is an estimated-spend ceiling over a period. Budgets are managed on the Usage tab: all configured budgets are always listed with a live progress bar, and you create, edit, or delete one from a dialog (settings never clutter the page).
Scope and period
| Setting | Options |
|---|---|
| Scope | Tenant (covers all processing for the tenant) or Project (one specific project). |
| Period | absolute (a single running total), annual, monthly, weekly, or daily. |
For recurring periods the spend resets at the start of each new window (each month, week, etc.).
What a budget does
Each budget has two independent switches:
- Enabled: the budget tracks spend and (if recipients are listed) sends email alerts.
- Stop processing when reached: the budget also pauses processing once the limit is hit. With this off, the budget is informational only.
The budget list makes the mode obvious at a glance:
- 🔔 Notify only: sends alerts; processing continues.
- 🚫 Stops processing: pauses processing when the limit is reached.
Email notifications
When a budget is enabled and has at least one recipient, DocAI Fabric emails the list as estimated spend crosses 50%, 75%, 80%, 90%, 95%, and 100% of the limit. Each threshold fires once per window. The email states whether the budget will pause processing at the limit or is alert-only (and, if alert-only, how to turn enforcement on).
Email requires SMTP to be configured for your deployment. If it is not, enforcement (Stop processing when reached) still works; only the emails are skipped.
How enforcement works
When Stop processing when reached is on and the budget is at or over its limit:
- Model-consuming steps pause: split, classification, extraction, and OCR stop running.
- The AI assistant declines to reply while the budget is exceeded.
- Import and export are never blocked, and new transactions are still accepted and queued - they simply wait.
Paused work resumes automatically when the window resets (e.g. the new month begins) or when you raise the limit. Re-processing is incremental: splitting skips windows already done, and classification/extraction skip documents already completed.
Enforcement reuses the same pause mechanism as a temporary infrastructure shortage: there is no separate "budget paused" status. A paused step appears in the Activity Log as Paused for budget. If a budget stays exceeded for a long time, the step eventually fails like an infrastructure issue and can be re-run later once there is budget available.
Because spend is estimated from your configured rates, enforcement is only as accurate as those rates. If processing is not pausing when you expect, check that the relevant models and OCR engines have non-zero rates set on the Models tab.