receipt_selector
The 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.
| Technical name | receipt_selector |
|---|---|
| Field types | selection |
| Views | form |
| Module | account, present wherever Invoicing or Accounting is installed |
| Used in core | 1 occurrence, the document type at the top of the journal entry form in account |
| Versions | Odoo 20.0, Odoo 19.0 |
| No-code setup | No. It is tied to the journal entry document type and its session-level setting |
| Alternatives | radio, radio_selection_with_filter, selection |
What the receipt selector does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
horizontal | boolean | Inherited from the radio widget and honored, because the widget calls through to the base template. Core passes it so the two choices sit side by side.(default: false) |
The filtering and the labels are hardcoded. The four document types the widget knows about, the two groups it sorts them into and the replacement labels are all written into the source. There is no option to add a third choice or to change what Receipt is called.
Working examples
Why an empty allow-list shows the full selection
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Behavior identical on the development branch; only props and state helpers change. |
| Odoo 19.0 | Verified | First version. Verified against the shipped source. |
| Odoo 18.0 | Not available | Widget does not exist. |
| Odoo 17.0 | Not available | Widget does not exist. |
| Odoo 16.0 | Not available | Widget does not exist. |
Upgrade note. The widget is new in Odoo 19. Earlier versions did not offer this choice on the entry form at all, so there is nothing to migrate; a database upgraded from Odoo 18 gains the toggle with the standard accounting views. Custom journal entry forms that replaced the document type field should adopt the widget to keep the behavior.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| No Invoice or Receipt choice on a customer document | Outgoing documents only offer the receipt option when the database has sales receipts enabled. Enable sales receipts in the accounting settings, then reload the page. |
| The choice disappeared after posting | The core view makes the field read-only outside draft, and the widget renders text when read-only. Expected. Reset to draft if the document type genuinely has to change. |
| A credit note shows no choice | Refund and credit note types are excluded from the radio rendering by the template. Expected. There is no receipt equivalent for those documents. |
| The label says Receipt but the report says something longer | The widget rewrites labels only for the editable radio group; read-only displays and reports use the original selection label. Nothing to fix; this is deliberate. |
| The toggle flickers on load | The sales receipts setting is fetched through a lazy session value after the first render. Harmless. It settles as soon as the value arrives. |
| I want a third document type in the group | The four values and two groups are hardcoded in the widget. Use the plain radio widget, or the survey app's filtered radio widget, which takes its allow-list from a field. |
Receipt selector vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
receipt_selector | Choosing between an invoice and a receipt while a journal entry is still draft | Filters the document type selection to the relevant pair, rewrites their labels, and falls back to plain text |
| radio | Any ordinary short choice list | Shows every value with its declared label and never hides itself |
| radio_selection_with_filter | The same filtering idea driven by data | Takes its allow-list from a field on the record instead of hardcoding values |
| selection | Longer choice lists | Dropdown rendering with no filtering or relabeling |
Frequently asked questions
Why is there no Receipt option on my customer invoices?+
Which document types does it switch between?+
Why does it sometimes show plain text?+
Why does the label say just Receipt?+
Can I reuse it for another selection?+
Invoices, receipts and the accounting behind both
Document types decide which entries Odoo posts and which legal documents you can issue, and the right setup depends on your country and how you take payment. We configure Odoo Accounting and the localization that goes with it, on versions 16 through 19.
Book a free consultation