Margin ControlMargin Control

Live on the Odoo App Store

Margin Control and Sold-Below-Cost Alerts for Odoo

Stop orders that lose money, on your own rules. A loss-making order is cheapest to fix before it is confirmed. Most businesses find out a month later, in a margin report, when the goods have shipped and the invoice is out.

  • Odoo 14, 15, 16, 17, 18 and 19. Community or Enterprise, on Odoo.sh or self-hosted.
  • USD 49, one-time purchase per Odoo version, on the Odoo App Store.
Margin Control for Odoo by Tripster Developers

Features

What it does

This lets you set the margin your business actually needs and has Odoo enforce it at the moment a sales order is confirmed. It also audits the two quieter causes: products priced below cost, and pricelist rules that can never apply because another rule shadows them.

Enforces your margin rules at order confirmation

Rather than reporting the loss after the fact. Each company chooses what happens when an order breaks the rules: report only, warn and let it through, or block confirmation.

Margin rules are yours to set

So the threshold matches the business rather than a default: a minimum margin percentage, a minimum cash margin per line, measured on each line, the order total, or both, against product cost or the best supplier price.

Audits products priced below cost

Product Margins lists every product worst first: sold below cost, no margin, thin margin under 5%, or no cost recorded yet. A missing cost is reported, never counted as a loss.

Finds pricelist rules that can never apply

Because another rule shadows them, which is why a discount you configured appears to do nothing. Each dead rule names the rule Odoo returns instead, judged in Odoo's own order.

Explicit override only

A block can only be bypassed by a user given the "Confirm orders below the margin floor" permission. Every override is written to the order's message log with the figures at the time.

Deliberate exceptions stay quiet

Tick a product as a deliberate loss leader, or exempt product categories, pricelists such as clearance or staff, and customers such as intercompany accounts. Free lines and uncosted products are skipped by default.

How it works

How it works

  1. 01

    Install it

    Add the module to Odoo.sh or your own server and install it from the Apps menu. It needs only Sales. Nothing is ever blocked on install: out of the box a losing order is let through and noted in its log.

  2. 02

    Set your margin rules

    Open Margin Health, then Margin Rules: your minimum margin, the cost to measure against, what happens on confirmation, and what must never be flagged. Grant the override permission to the people who should have it.

  3. 03

    Review, then enforce

    Product Margins and Pricelist Rules show what is already wrong, worst first. From then on every sales order is checked at the moment someone presses Confirm.

Technical Edge

Arithmetic on data already in your database.

Margin Control reads the same cost field Odoo uses, so its numbers match every other report. It calls no external service and changes no price.

Technical Stack

Checked in the module code and the live Odoo App Store listing, September 2026

Odoo versions
14.0, 15.0, 16.0, 17.0, 18.0, 19.0A separate build for each series, each certified against a real Odoo image of that series before it is listed.
Editions
Community and EnterpriseOn Odoo.sh or self-hosted. Not Odoo Online, which cannot run third-party modules that contain Python.
Depends on
Sales (sale)Which brings in Products. Nothing else to install.
Adds
A Margin Health menuProduct Margins, Pricelist Rules, Recheck Margins, Recheck Pricelist Rules and Margin Rules, plus a margin column on sales order lines.
Permission
One override group"Confirm orders below the margin floor". Without it, a block cannot be bypassed.
Scheduled actions
NoneMargins recompute when a price or cost changes, and on demand from the two Recheck menus.
Reads and writes
Reads prices, costs, supplier prices and pricelist rulesWrites only its own margin fields and, on a warning or an override, a note in the order's message log. It never changes a price.

Pricing

One price, paid once.

Sold on the Odoo App Store under the Odoo Proprietary License (OPL-1). Each Odoo version is sold separately.

Margin Control

USD 49

One-time purchase · OPL-1 · Odoo 14.0 to 19.0

  • Margin rules enforced at order confirmation
  • Report only, warn or block, per company
  • Products priced below cost, worst first
  • Pricelist rules that can never apply
  • Email support from the people who wrote it
View on the Odoo App Store ↗

Custom work

On quote

Scoped with you before any work starts

  • Changes to fit how your margins are run
  • Built by the team that wrote the module
  • Separate from module support
Talk to us

Odoo stores app prices in euros and shows a converted figure at checkout: US$48.81 on 25 September 2026.

Built For

Who this is for

Businesses where salespeople can discount, where cost prices move, or where pricelists have accumulated rules over several years. Any one of those is enough to produce orders that lose money without anyone deciding to sell at a loss.

  • Why enforcement beats reporting. A margin report is a description of money you have already lost. By the time it runs, the order is confirmed, the goods have usually shipped and the invoice is out, so the only remaining options are absorbing it or having an awkward conversation with a customer who did nothing wrong.
  • The last moment it costs nothing. Confirmation is the last moment where the cost of fixing it is zero. That is why the rule belongs there rather than in a dashboard.
  • Groups with several companies. Every rule lives on the company, so each trading entity can run its own floor without interfering with the others.

FAQ

Questions

Can I set the threshold myself?

Yes. The margin rules are yours to set, so the threshold matches what your business actually needs rather than a default somebody else chose. Each company sets a minimum margin percentage, a minimum cash margin per line, and which cost the margin is measured against.

Why enforce at confirmation instead of reporting afterwards?

A margin report describes money already lost. Confirmation is the last moment where the cost of fixing it is zero, which is why the rule belongs there rather than in a dashboard.

Does it block the order, or just warn?

Your choice, per company. Warn lets the order through and writes the breach, with the figures, to the order's message log. Block refuses confirmation until the prices are fixed or someone with the margin override permission confirms it. There is also a report-only mode that never interrupts anyone. A warning after the goods ship is a report, not a control, which is why the check runs at confirmation.

Why would a pricelist rule never apply?

Because another rule matches first and shadows it. That is invisible in the pricelist screen, which is why the audit exists.

Which Odoo versions are supported?

Odoo 14, 15, 16, 17, 18 and 19. Every listed Odoo version is certified on each release by installing the module into a real Odoo image of that series and running the full test suite. A version is only listed once it passes.

Does it work on Odoo Online?

Odoo Online cannot run third-party modules that contain Python, which is Odoo's rule rather than ours. Odoo.sh and self-hosted installs are both fine.

How do I get help?

Email hello@tripsterdevelopers.com with your Odoo version, the module version and what you did. If an order was blocked, the message Odoo showed names each product line that fell short and its margin, which answers most questions immediately.

Does it work on Community as well as Enterprise?

Yes. Odoo 14, 15, 16, 17, 18 or 19, Community or Enterprise. The same build installs on either edition.

How do I install it?

Buy and download the module from its Odoo Apps Store page, place the folder in your addons path, restart Odoo, then update the apps list and install it from the Apps menu. Odoo.sh users add it to the repository branch instead.

Will it survive an Odoo upgrade?

Each listed Odoo version has its own build, and the Odoo Apps Store sells each version separately. When you move to a new major version, install the build for that version; the configuration you have already entered is read by the new build.

Where is my data processed?

Inside your own Odoo instance. The module runs on your server and does its arithmetic on data already in your database, with no external service. We do not host your records and we do not receive a copy of them.

Can I read and adapt the source?

Yes. Odoo modules are distributed as readable Python and XML, so your own developer can review exactly what runs and extend it under the license the module ships with (OPL-1).

What should I send when something is wrong?

Your Odoo version, the module version from the Apps screen, and the exact message Odoo showed. Those three together are usually enough to answer in one reply rather than four.

Do you take feature requests?

Yes, at the same support address. Say what you are trying to achieve rather than the field you want added; it is often already possible, and when it is not, the underlying goal is what shapes the change.

Is there a public changelog?

Not as a separate page. The current version for each Odoo series is shown on the module's Odoo Apps Store page and on the Apps screen in your own database; ask the support address what changed between two versions and you will get a straight answer.

Who builds and maintains these modules?

Tripster Developers, a Shopify Partner and Odoo module publisher based in Auckland, New Zealand. The same team writes the code and answers the support mail.

Miko Apps

Catch the loss before the order is confirmed.

Live on the Odoo App Store, published by Tripster Developers · USD 49 one-time per Odoo version

Miko for Odoo

Other Miko apps for Odoo

Published and maintained by Tripster Developers on the Odoo App Store. See all Odoo apps.

Not on Shopify yet?

Start a free Shopify trial, then add Miko apps when you are ready.

Set up your store in minutes and try it with your own products. Loyalty, wholesale pricing, AI descriptions and the rest of the Miko apps install in one click once your store is live.