---
title: "Odoo AI Credits: Budget Quotation Review"
canonical: https://wavect.io/blog/odoo-ai-cost-per-accepted-workflow/
language: en
description: "Budget an Odoo 20 AI quotation workflow with IAP credits, review and rework. Use a runnable example to set spend limits and cost each accepted quotation."
image: "https://wavect.io/img/blog/headers/header_odoo-ai-cost-per-accepted-workflow.png"
author: ["Kevin Riedl"]
published: "2026-11-05"
updated: "2026-11-05"
reviewed: "2026-11-05"
---

# Odoo AI credits: budget a reviewed quotation workflow

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

9 min read · 5 Nov 2026 Last reviewed November 5, 2026

[**Next**](/blog/odoo-ai-data-residency-eu-hosting/)

TL;DR

For an Odoo 20 AI-assisted quotation queue, budget consumed IAP credits, the subscription change, initial review, correction work and operation. Define reviewer acceptance before increasing volume. The hypothetical ledger totals €2,580 for 900 accepted quotations, or €2.87 each; it is not an Odoo benchmark or a quote. Credit purchases belong in a separate cash view, and any spending limit needs an owner.

A sales team wants AI to help prepare the next thousand Odoo quotations. Somebody still has to approve the customer, lines and prices. Before finance approves that queue, the budget needs an allowance for rejected drafts and rework as well as credits and the subscription change.

**Budget an Odoo 20 AI-assisted quotation queue with separate allowances for the subscription change, consumed IAP credits, initial review, correction and operation; count a quotation as accepted only when its named reviewer approves the agreed draft.** Keep credit purchases in a separate cash view, set an observation period and stop expanding the queue when a spending or quality limit is reached.

**Research checked: 5 November 2026.** Product facts below use the inspected official Odoo sources. The scenario, calculator and CSV are synthetic planning aids. We did not run a live Odoo pilot, measure AI quality or obtain a subscription quotation.

## Which Odoo AI costs can you verify today?

Verify the subscription effect and the billing route before estimating usage. A product's credit price answers only one input. It does not establish how many credits your configured task will consume, how much review it needs, or whether the same credential arrangement applies after a version change.

Odoo's [20.0 AI overview](https://github.com/odoo/documentation/blob/20.0/content/applications/productivity/ai.rst) states that installing AI on Standard triggers a Custom upsell and that AI uses IAP credits. The inspected [AI IAP listing](https://iap.odoo.com/iap/in-app-services/867) shows €1 per credit, 20 free credits and variable consumption by task and request. It does not give a universal price per accepted workflow.

The [20.0 API-key page](https://github.com/odoo/documentation/blob/20.0/content/applications/productivity/ai/apikeys.rst) was under construction when checked. The separate [19.0 documentation](https://github.com/odoo/documentation/blob/19.0/content/applications/productivity/ai/apikeys.rst) describes provider-key arrangements for that version. Treat the version boundary as an open purchasing question until your current route is confirmed.

Ask for the plan change in writing for your users, billing term, currency and configuration. Use that written quotation as the subscription input. A percentage uplift remembered from another contract is not a substitute for that evidence.

## What is the quotation reviewer approving?

For this proposed queue, acceptance means a named reviewer approves a draft against the source request: correct customer, products, quantities and pricing basis. The AI-assisted draft is a candidate for review. Budget initial checks and subsequent corrections separately, and leave an unresolved quotation out of the accepted total.

This is a planning scenario, not a claim that installing the AI app creates this complete workflow. The implementation team must establish which drafting and review steps the configured system supports. The separate [email and PDF quotation review guide](/blog/odoo-email-pdf-quotation-review/) owns that implementation decision.

The synthetic ledger records one row per quotation. Two hundred rows include another attempt and 2.5 minutes of correction; every row includes one minute of initial review. Nine hundred drafts are accepted and one hundred remain unresolved. These values demonstrate a budget, not achievable Odoo performance.

Our [cost per token versus cost per task guide](/blog/cost-per-token-vs-cost-per-task/) explains why the outcome denominator matters. Here we apply that principle to this exact quotation queue, with the selected acceptance rule and all review work included.

## How much would this reviewed quotation queue cost?

The example totals consumed credits, initial quotation review, correction work, a hypothetical subscription uplift and an operating allocation, then divides by accepted quotations. Every workflow input is invented for planning. The arithmetic is reproducible; the numbers do not predict Odoo consumption, staff efficiency or an achievable acceptance rate in your environment.

| Input | Illustrative assumption | Period cost |
| --- | --- | --- |
| Quotations | 1,000 reviewed; 900 accepted; 100 unresolved | Denominator: 900 |
| IAP consumption | 600 credits at €1 | €600 |
| Initial review | 1 minute for each of 1,000 quotations at €60 per hour | €1,000 |
| Correction work | 2.5 additional minutes for 200 quotations at €60 per hour | €500 |
| Subscription change | Assumed period uplift; replace with a quote | €300 |
| Ongoing operation | Assumed monitoring and support allocation | €180 |
| Total | €600 + €1,000 + €500 + €300 + €180 | €2,580 |
| Accepted-quotation cost | €2,580 / 900 | €2.87, rounded |

Initial review applies to all 1,000 quotations in this example, including the unresolved hundred. Correction is an additional line, so the budget can reveal when rework consumes its allowance. The CSV also contains 1,200 attempts aggregated into those 1,000 case rows. Its allocation of credits to rows is synthetic; it is not a claim about Odoo's charging granularity or a per-request tariff.

Download the [Python budget calculator](/downloads/odoo-ai-cost-per-accepted-workflow/odoo_ai_budget.py) and [synthetic case ledger](/downloads/odoo-ai-cost-per-accepted-workflow/synthetic_cases.csv) into the same directory. Run `python3 odoo_ai_budget.py synthetic_cases.csv`. It uses Python's standard library, makes no network requests and rejects duplicate case identifiers. Replace the inputs before using its result in a purchasing decision.

This is a period operating view. Keep one-time configuration, integration, training and acceptance work visible alongside it. If you choose to allocate setup over a useful life, state the amount, horizon and expected case volume separately. Do not silently turn an optimistic future volume into a lower current operating cost.

## Why are purchased credits different from consumed credits?

Credit purchases determine cash required for the period; consumed credits determine the usage component of this model. Keep opening balance, purchases, consumption and closing balance in a reconciliation. Combining them in one cost line can double-count consumption or make a large remaining balance look like expensive workflow execution.

Suppose the example starts with zero credits, buys 1,000 and consumes 600. Credit purchase cash is €1,000 and the remaining balance is 400 credits. The consumption line is €600. Both numbers matter to the approval, but they answer different questions. This is management arithmetic, not a prescription for statutory accounting treatment.

Record the period and database or account to which the usage belongs. Where the available billing export is less detailed than the workflow ledger, label the allocation method and the unallocated difference. Do not pretend that a spreadsheet has created task-level billing evidence that the source system did not provide.

## Which inputs change the decision most?

Change one assumption at a time to see which missing observation could overturn the approval. In this example, review time and accepted-case count deserve attention because their assumed values materially affect the result. That conclusion follows from this scenario's arithmetic; another workflow can have a different cost structure.

| Scenario | Period cost | Cost per accepted case |
| --- | --- | --- |
| Base: 900 accepted; 200 quotations require correction | €2,580 | €2.87 |
| Only 800 accepted | €2,580 | €3.23 |
| Correction rises from 200 to 400 quotations | €3,080 | €3.42 |
| Credits double to 1,200; 900 accepted | €3,180 | €3.53 |

These are separate hypothetical scenarios, not a probability forecast. Doubling consumed credits also requires sufficient purchased or opening credits. For a real pilot, preserve complex cases and exceptions in the sample; a budget calculated only from easy examples cannot describe the full queue.

A savings claim needs a comparable baseline: the same scope, acceptance rule, period and labor basis without the proposed change. This article does not supply that baseline. A lower model charge alone cannot establish a better business result.

## What should stop the quotation queue from expanding?

Use explicit credit, labor and acceptance limits for the observation period. In this example, 600 consumed credits and 25 human hours define the variable-cost envelope; the plan and operating allocation add €480. A reached limit triggers a review of the queue, not a promise that every quotation will finish within it.

Assign a named owner to check usage and outstanding drafts at an agreed interval. This is a proposed operating control; the article does not establish that Odoo provides a hard stop for this combined credit-and-labor budget. A billing alert alone also cannot measure the correction time in your queue.

| Decision input | Evidence to retain | Approval question |
| --- | --- | --- |
| Subscription | Current plan, proposed change and written quote | Is the full uplift budgeted? |
| AI route | Version, enabled feature, provider/key route and confirmed charging terms | Are we budgeting the configured route? |
| Credit movement | Opening balance, purchases, usage and closing balance for the same period | Can we explain every difference? |
| Acceptance | Unique case IDs, acceptance rule, reviewer decision and unresolved queue | Are we counting the outcome we agreed to buy? |
| Human effort | Review, correction and exception-handling observations | Does the result include the work that remains? |
| Stop condition | Named owner, spend ceiling and business-quality threshold | Who pauses expansion when the evidence fails? |

Cost approval does not settle integration constraints or processing location. Use the existing [Odoo API integration limits guide](/blog/odoo-erp-api-integration-limits-2026/) for platform boundaries and the [Odoo AI processing-location checklist](/blog/odoo-ai-data-residency-eu-hosting/) for the data path. Those are separate decisions that can change what you are allowed to pilot.

## What would we approve first?

Start with one quotation queue, one reviewer acceptance rule and one observation period. Obtain the subscription quote, confirm the configured AI billing route, and collect the credit and review evidence together. Approve a larger volume only when the remaining uncertainty is affordable and someone owns the unresolved work.

If the underlying question is whether a standard feature fits the business requirement, use our [custom software versus off-the-shelf decision guide](/software-development-guide/custom-software-vs-off-the-shelf/) before funding an extension. The [Twinsoft AI case study](/case-studies/twinsoft-ai/) provides separate project context; it is not evidence for the synthetic Odoo numbers above.

Wavect's [technology consulting](/services/technology-consulting/) can help turn these inputs into a reviewable rollout decision. [Discuss an Odoo AI rollout budget](/contact/?intent=technology-consulting) with the current plan, intended workflow and unanswered purchasing questions.

## Odoo AI budget FAQ

### Does the free allowance establish a normal monthly AI cost?

No. Treat an introductory allowance as a way to begin observation, not as your operating budget. Do not assume a monthly renewal or infer production consumption from it. Estimate the intended workload from the configured task, then keep the measured usage and review evidence beside the resulting cost calculation.

### Can I reuse my Odoo 19 own-key budget unchanged?

Confirm the current version and route first. The inspected 20.0 API-key documentation was incomplete, so the older page cannot settle your current purchasing terms. Ask the responsible vendor or implementation owner to identify the supported configuration and charges in writing, then model that specific route.

### Should setup work be included in the monthly unit cost?

Show setup separately before deciding whether to allocate it. Configuration, integration, training and acceptance work may belong in the investment decision even when they are not recurring operating expenses. If you amortize them for management comparison, state the horizon and volume assumption so the calculation can be challenged.

### How do you report a period with no accepted case?

Report the total spend, the number of attempted cases and the failed acceptance outcome. Cost per accepted case is undefined when the denominator is zero. The calculator returns a null value in that situation. A zero unit cost would misrepresent paid work that produced no accepted result.

### Is the calculator an Odoo benchmark or a price quote?

It is an arithmetic aid over explicitly synthetic inputs. It does not connect to Odoo, measure a model, discover your subscription price or forecast productivity. Replace the ledger and budget assumptions with your own evidence, preserve the acceptance definition and review the exclusions before using the output.

### How should several workflows share a subscription uplift?

Choose and document an allocation rule, such as measured use or an agreed operational share, and apply it consistently. Also show the full subscription uplift in the overall purchasing decision. Dividing it between workflows must not make the amount disappear from the budget that somebody approves.

Models and infrastructure

## Read next

Model selection, inference economics, local deployment, compression and serving architecture.

[Start here**Self-Hosting LLMs in the EU: When Open Weights Actually Pay Off**](/blog/self-hosting-llms-eu-cost/)

- [Odoo Helpdesk AI: classify, draft or escalate?](/blog/odoo-helpdesk-ai-classify-draft-escalate/)
- [How to Validate Open Ontologies Derivation Certificates](/blog/open-ontologies-proof-verification/)
- [Does Scrapling Save Scraped Items in Checkpoints?](/blog/scrapling-checkpoints-scraped-items/)
- [Cue Turn Detection: Phone Numbers, Benchmarks and Limits](/blog/cue-turn-detection-phone-numbers/)
- [Google SAM is now Agent Mesh: MCP tools across machines](/blog/google-sam-agent-mesh-mcp-tools/)

[Next article**Odoo Helpdesk AI: classify, draft or escalate?**](/blog/odoo-helpdesk-ai-classify-draft-escalate/)

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

9 min read · 5 Nov 2026 Last reviewed November 5, 2026

[**Next**](/blog/odoo-ai-data-residency-eu-hosting/)
