All posts
Functional4 min read

Budget Position Control and Commitment Accounting in Odoo

Enable Odoo budget position control to prevent over-spending - blocking purchase orders and vendor bills that would exceed the approved budget before they are confirmed.

Budget Position Control in Odoo#

Standard budgeting reports variances after the fact. Budget position control prevents overspending before it happens - blocking transactions that would breach the budget unless an exception is explicitly approved.

Prerequisites#

Accounting → Configuration → Settings → enable Budget Management and Budget Positional Control.

Creating a Budget with Position Control#

Accounting → Accounting → Budgets → New:

  • Name: FY2027 Marketing Budget
  • Period: 2027-01-01 → 2027-12-31
  • Control: Strict (blocks transactions) or Warning (flags but allows)

Budget Lines:

  • Marketing Events (GL: 6200): $30,000
  • Digital Advertising (GL: 6205): $20,000
  • Trade Show (GL: 6210): $15,000

How Position Control Works#

When a purchase order is confirmed that posts to Marketing Events (6200):

If budget has remaining balance: PO is confirmed normally.

If budget is exhausted:

  • Warning mode: PO can be confirmed but finance sees an alert in the budget report
  • Strict mode: confirmation is blocked - "Budget limit exceeded for Marketing Events. Available: $0. Required: $500."

The block happens at the PO confirmation stage - before money is committed to the vendor.

Commitment Accounting#

When a PO is confirmed (but not yet received), Odoo can record a budget commitment:

  • The PO amount is immediately deducted from the available budget balance
  • Prevents the same budget dollars from being committed twice before the invoice arrives

Example: $10,000 budget. PO for $8,000 confirmed. Available shows $2,000 - not $10,000.

Without commitment accounting: a second PO for $7,000 could be confirmed (budget shows $10,000 available) → overspend when both POs are received.

Enable commitment accounting:

Accounting → Configuration → Settings → Budget → Use Commitments.

Budget Exception Workflow#

When a purchase needs to exceed the budget:

  1. Purchase manager submits a Budget Exception Request (via chatter or external approval form)
  2. Finance or CFO reviews and approves
  3. Finance increases the budget line by the exception amount
  4. Purchase manager confirms the PO

This creates an auditable trail: every budget increase is linked to an approval.

Budget Availability Report#

Accounting → Accounting → Budgets → [Budget] → Print Budget:

  • Budget (approved amount)
  • Commitments (confirmed POs not yet invoiced)
  • Actuals (posted expenses)
  • Available = Budget − Commitments − Actuals

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free