monetary
The Monetary widget renders an amount with the record's currency symbol and precision. Most of its behavior comes from the currency, not the field, and that is where teams get surprised.
Quick summary
monetaryformats a number with the record's currency symbol and the currency's decimal precision.- The currency comes from a
currency_idfield on the same record by default; thecurrency_fieldoption points it elsewhere. - Decimals follow the currency, not the field definition, unless you set the undocumented
field_digitsoption. - While a user is typing, the symbol is hidden by design; it reappears in readonly display.
no_symbolhides the symbol entirely, useful in dense list columns.- On plain float or integer fields it still works, it just needs to be told which currency to use.
- Odoo 20's development branch keeps every option; only parsing internals change.
| Studio name | Monetary |
|---|---|
| Technical name | monetary |
| Field types | monetary, float, integer |
| Views | form, list, kanban |
| Module | web, present in every Odoo database |
| Used in core | 182 occurrences across 27 modules, including point_of_sale, lunch, product, purchase, sale, stock_account |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | Yes, via Odoo Studio (Enterprise) |
| Alternatives | float, percentage, integer, statinfo |
What the Monetary field does
What this means for your team
Setting it up in Odoo Studio (no code)
What Studio cannot do here
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
currency_field | field name | Name of the many2one currency field on the record that drives symbol and precision. Falls back to the field's own currency_field definition, then to currency_id.(default: currency_id) |
no_symbol | boolean | Never show the currency symbol, even in readonly display. |
hide_trailing_zeros | boolean | Trim zeros after the last significant decimal: 1.20 renders as 1.2. |
field_digits | boolean | Use the field definition's decimal precision instead of the currency's. Read in extractProps only; it appears in no options panel or documentation. |
Working examples
Where the symbol and decimals really come from
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Options unchanged in the development branch; parsing internals change. See below. |
| Odoo 19.0 | Verified | Verified against the shipped source and tested on a clean database. |
| Odoo 18.0 | Verified | Same options and behavior. No XML changes needed. |
| Odoo 17.0 | Verified | Same options and behavior. No XML changes needed. |
| Odoo 16.0 | Verified | Same options and behavior. No XML changes needed. |
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| No currency symbol shows | The currency field is not present in the view, so the widget cannot resolve a currency at render time. Add the currency field to the view, invisible if you like. |
| Symbol vanishes while typing | By design: the formatter drops the symbol whenever the field is editable. No fix needed; it returns in readonly display. |
| Wrong number of decimals | Decimals follow the currency's setting, not the field's digits definition. Either change the currency's decimal places, or set field_digits: True to use the field's precision. |
| Amounts differ from what was typed | The value is rounded to the effective precision on save. Raise the currency or decimal-accuracy precision if you need more decimals stored. |
| Widget on a float field shows no symbol | Plain floats carry no currency_field definition, and no currency_id exists on the model. Point the widget at a currency with options="{'currency_field': '...'}". |
Monetary field vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
monetary | Amounts of money anywhere in a view | Currency-aware: symbol, position and decimals come from the currency record |
float | Plain quantities and rates | No currency logic; precision from the field's digits |
percentage | Rates shown to users as percent | Displays and parses 15% while storing 0.15 |
integer | Whole-number counts | No decimals, no currency |
| statinfo | An amount inside a smart button | Button-box display block, not an editable field |
Frequently asked questions
Why does my monetary field show no currency symbol?+
How do I change how many decimals an amount shows?+
Can I use the monetary widget on a float field?+
How do I hide the currency symbol in a list column?+
Why does the symbol disappear when I click into the field?+
Does the monetary widget convert between currencies?+
Multi-currency amounts not displaying right?
Missing symbols, wrong decimals, and cost-versus-price precision are configuration problems with real accounting consequences. We set up multi-currency, decimal accuracy and the views on top of them, for teams on Odoo 16 through 19.
Book a free consultation