Skip to main content
iVentureTeam

Odoo Accounting / Localization widgets

Accounting and localization widgets carry Odoo's money handling: monetary fields, tax grids, reconciliation lines, payment terms and the country-specific pieces fiscal localizations bolt on.

They are also where version drift bites hardest — amounts, rounding and grid behaviour shift between releases — so every page's version table is worth reading before an upgrade.

39 widgets documented178 uses in Odoo coreVersions 16.0 → 20.0 verified per widget

Every accounting / localization widget, by use in Odoo core

Odoo Accounting / Localization widgets: name, purpose, field types and uses in Odoo core
WidgetWhat it doesField typesUses in core
many2many_tax_tagsmany2many_tax_tags is the tags widget tuned for accounting: identical options, one deliberate change, the dropdown always offers Search More, because tax grids are long and picking the wrong one is a filing error.many2many, one2many35
analytic_distributionThe field that splits a journal item across analytic accounts by percentage is one widget: analytic_distribution. Eight options, a tag-based editor, and a type change in 19 worth knowing about.json22
list_activityThe Next Activity column in Odoo list views, the little clock with a summary next to it, is the list_activity widget. It has no options at all; everything it shows comes from six activity fields it loads for you.one2many21
dynamic_selectionA selection field always offers every value it declares, unless you render it with dynamic_selection, the small account-module widget that shows only the options another field on the record allows. Odoo's e-invoicing localizations run on it.selection19
actionable_errorsThe actionable errors widget turns a computed JSON field into a stack of ranked alert boxes, each with a button that jumps the user straight to the fix.json11
x2many_buttonsThe x2many buttons widget renders a relation as a short row of clickable record buttons. It powers the "this document might be a duplicate of" banner on invoices.many2many, one2many11
char_with_placeholder_fieldA char field that never looks empty: char_with_placeholder_field shows the placeholder as a muted value, so users see the default Odoo will apply before it is applied.char, text7
section_and_note_textOn sale orders and invoices, one widget decides how the description cell edits: section_and_note_text, a tiny dispatcher that reads the line's display_type. The Odoo 20 branch removes it.char, text6
account-tax-totals-fieldThe untaxed, tax and total block at the bottom right of every Odoo invoice is one widget: account-tax-totals-field. It renders a JSON payload, and it quietly lets you type over a computed tax amount.json3
account_type_selectionThe Type dropdown on an Odoo account is not a flat list. The account_type_selection widget buckets every account type under Balance Sheet and Profit & Loss headings so accountants pick from a structured tree instead of a 15 item flat list.selection3
mail_composer_template_selectorThe small three dot Templates button in Odoo's email composer footer is the mail_composer_template_selector widget. It loads your templates first, shared ones second, and quietly hides its management entries when a context key says so.many2one3
product_label_section_and_note_fieldOn an Odoo invoice line the Product column secretly edits two fields at once: the product_id many2one and the line description. The product_label_section_and_note_field widget is what stitches them together, and it also styles section, subsection and note lines.many2one3
account_document_stateGovernment e-invoicing replies rarely fit in a status column. account_document_state renders the selection state and, whenever the record carries a message, adds an info icon whose popover shows the full text with a copy button.selection, many2one2
grouped_view_widgetThe grouped_view_widget renders a read-only, grouped table from a JSON string, and it is how the Accrued Orders wizard shows you the entries it is about to book before you commit.text2
line_open_move_widgetA many2one field whose internal-link arrow does not open the record you expect, on purpose: line_open_move_widget routes analytic lines to the journal item's real business document.many2one2
many2many_tags_journalsThe many2many_tags_journals widget is the Tags field with one accounting-specific trick: when a Multi-ledger group belongs to no company, every journal pill spells out which company it comes from.many2many2
open_move_widgetThe open_move_widget turns the Journal Entry number in an items list into a link that jumps straight to the entry's best business view, an invoice, a payment or the raw journal entry.char2
paymentEvery Paid on line and every Outstanding credits box on an Odoo invoice is one widget: payment, a JSON-driven display with two faces, an info popover, and an Unreconcile button.binary2
product_label_section_and_note_field_o2mThe one2many widget that renders invoice and bill lines in Odoo 19: sections, notes, merged product labels, and a column layout that reconfigures itself depending on document type.one2many2
PaymentWizardCopyClipboardButtonFieldThe Copy button on a payment link, with one addition: it waits for the record to finish updating before it copies. Without that, a fast click copies the previous link.char, text1
account_batch_sending_summaryBefore Odoo sends fifty invoices, it tells you how each one will go out. This widget is the read-only panel that shows that answer, and it reads the value exactly once.json1
account_merge_wizard_lines_one2manyMerging duplicate accounts means reading groups of candidates and ticking the ones to keep. This widget is the sectioned list that makes those groups legible, down to keeping one column deliberately visible.one2many1
account_move_statusbar_securedA padlock next to Posted, green when the entry is hash-secured and orange when it is not. One inherited status bar, three template edits, and an audit story you can see at a glance.selection1
account_payment_register_htmlThe line of text in the Register Payment wizard that offers to pay just the installment instead. It is server-generated HTML with one clickable class, and Odoo 19 threw away the editor it used to run through.html1
account_resequence_widgetRenumbering posted journal entries is not something you want to guess at. This widget draws the before and after list so the wizard can be read before it is run.text1
account_tax_repartition_line_factor_percentTax distributions sometimes have to be a third of something. This widget keeps twelve decimals so the arithmetic survives, then hides the trailing zeros so the screen stays readable.float1
auto_save_res_partnerA child list that saves its parent before letting you add a row. Seven lines of code for a problem that otherwise produces confusing errors on brand new contacts.one2many, many2many1
autosave_many2many_tax_tagsTaxes on a journal entry line are not just a value, they generate other lines. This widget saves the whole entry the moment they change, so the tax lines appear immediately instead of at the end.many2many1
confirm_booleanA switch that stops and asks before it loses data. It only asks in one direction, and once you confirm it saves straight away rather than waiting for the form.boolean1
l10n_in_hsn_autocompleteType three characters and Odoo asks India's GST portal for matching HSN codes. The request goes from the user's browser, not from your server, and that has consequences worth knowing before you deploy it.char, text1
mail_attachmentsThe attachment list on Odoo's invoice send wizard. It knows the difference between a file you added, a file the system generated, and a file that must not be deleted, and it cleans up after itself when you close the wizard.json1
mail_attachments_selectorThe upload control on Odoo's document send wizard. It routes files through the messaging layer rather than creating attachments directly, and every file it adds is marked so it can be cleaned up later.json1
many2many_tags_banksPartner bank accounts rendered as tags, each showing whether outgoing payments are allowed. It also saves the partner behind your back, and there is a good reason for that.many2many, one2many1
many2one_account_accountPicking an account is the most repeated action in Odoo accounting. This widget makes one change to the dropdown: it stops offering Search more unless you typed a number.many2one1
nemhandel_verification_codeSix single character boxes for the code sent by SMS, with focus that moves as you type and a paste handler that fills the rest from wherever you started.char1
open_decimal_precision_buttonA field that is not really a field: a button in a warning panel that throws away your unsaved currency change and sends you to the setting you actually wanted.any1
payment_term_line_idsSixteen lines of code to fix one annoyance: a new payment term line vanishing because the user clicked somewhere else before typing anything.one2many, many2many1
peppol_non_focusable_selectionA selection widget whose entire purpose is to not take focus. One attribute changed in an inherited template, so the Peppol registration form can put the cursor where a user actually types.selection1
receipt_selectorThe small Invoice or Receipt toggle at the top of a journal entry. It rewrites its own labels, filters its own choices, and disappears entirely unless your database has sales receipts turned on.selection1

Each widget page has the usage XML, Studio steps, every developer option, and a per-version compatibility table verified against the shipped Odoo source.

Other widget categories

Need these working in your Odoo?

The team that documented every widget also builds with them — custom views, upgrades and performance work by senior Odoo developers.

Odoo customization services

We use cookies to improve your experience

Essential cookies make the site work; with your permission we also use analytics to improve it. See our cookie policy.