| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Point of Sale (point_of_sale) • Discuss (mail) • Inventory (stock) |
| Lines of code | 49 |
| Technical Name |
pos_account_per_terminal |
| License | LGPL-3 |
| Website | https://www.edara.ps |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Point of Sale (point_of_sale) • Discuss (mail) • Inventory (stock) |
| Lines of code | 49 |
| Technical Name |
pos_account_per_terminal |
| License | LGPL-3 |
| Website | https://www.edara.ps |
PoS Sale Account per Terminal
Give every Point of Sale terminal its own revenue account. POS session sales follow the Default Income Account of each terminal's Orders journal — configured in one place, with zero extra screens.
Why this module exists
Standard Odoo decides POS revenue accounts from the product — so the journal you assign to a terminal never actually drives its revenue. This module fixes that.
✕ Standard Odoo behavior
At session close, the revenue account comes from the product (or its category). Since products almost always have an income account, every terminal posts to the same account and the POS journal's Default Income Account is ignored.
✓ With this module
At session close, all revenue lines are rewritten to the Default Income Account of the terminal's Orders journal. Each terminal points to its own journal, so each terminal posts to its own revenue account.
The result
Configure the income account once on each journal — the module does the rest at every session close.
One thing to get right
Use the Orders journal, not the Invoices journal.
In POS Settings → Accounting → Default Journals there are two
journals. POS session revenue uses the Orders
journal (journal_id). Set the Default Income Account
there — not on the Invoices journal (invoice_journal_id),
which only affects customer invoices.
| Setting | Field | Used for |
|---|---|---|
| Orders | journal_id | POS session journal entries (drives session revenue) |
| Invoices | invoice_journal_id | Customer invoices created from POS |
Setup in three steps
Give each terminal its own Orders journal
Point of Sale → Configuration → Settings → (select terminal) → Accounting → Default Journals → Orders. Two terminals sharing one journal cannot post to different accounts.
Set the Default Income Account on each Orders journal
Accounting → Configuration → Journals → (open the journal) → Journal Entries tab → Default Income Account.
Close a session
Revenue posts to that terminal's journal income account. Confirm in the session's Journal Items, or in the server log.
What you get
Revenue per terminal
Each POS terminal records sales to its own dedicated GL account.
Zero new screens
Configured entirely on standard journals. No extra fields to learn.
Enterprise-safe
Wraps the session-close flow after the entry is built — robust against the Enterprise POS pipeline.
Clean entries
Only income lines are changed. Receivable, tax, and payment lines are untouched.
Transparent logging
Every session close logs exactly what it did — easy to verify and audit.
Safe to remove
Uninstalling restores standard behavior. Past entries are never altered.
Verify it worked
Each session close writes one clear log line.
Please log in to comment on this module