Odoo & Mutero Desktop
Connect LAN or self-hosted Odoo Accounting to Mutero Desktop — find credentials, configure ZIMRA tax rates, validate the installation, and fiscalise posted invoices and credit notes with OD- numbering and chatter writeback. For Odoo Online / Odoo.sh, prefer the Odoo Cloud Hub connector.
Prefer Odoo Cloud for Odoo Online
ODC- stubs). Use this Desktop guide when Odoo is only reachable on a private LAN / VPN from the Windows PC.Local agent — credentials stay on this PC
http://127.0.0.1:18989. Odoo URL, database, username, and API key are stored encrypted on the Windows PC only. Mutero Cloud never receives your Odoo password or API key. Keep Mutero running (window or system tray) whenever you use Odoo with Mutero.1Environments: Odoo Online (cloud) vs self-hosted (local)
Mutero talks to Odoo over JSON-RPC (/jsonrpc). The same Desktop connector works for both deployment types — only the URL and how you find the database name differ.
Odoo Online / Odoo.sh (cloud)
- URL looks like
https://mycompany.odoo.com(or your custom domain on Odoo.sh). - Database name is usually the subdomain (e.g.
mycompany) — confirm on the database selector / login page. - Requires HTTPS reachable from the PC running Mutero Desktop.
Self-hosted / on-premise
- URL is your server base, e.g.
https://odoo.internal.localorhttp://192.168.1.50:8069. - Database name is the PostgreSQL database you select at login (often shown in the Manage Databases screen).
- Mutero Desktop must reach that host from the same network (no cloud tunnel required).
Not the same as Mutero Cloud vs Desktop
2Choose your starting path
Path A — Mutero Desktop is already installed
- Skip the download section below.
- Sign in (if needed) → select your VFD → open a fiscal day.
- Jump to Where to find Odoo credentials, then Connect Odoo, Tax rates, and Validate setup.
Path B — First-time Mutero Desktop install
- Download and install Mutero Desktop (next section).
- Sign in with browser and select one VFD device.
- Continue with credentials → connect → taxes → Validate setup.
3Download & install Mutero Desktop
Mutero Desktop for Windows
Automated Windows setup file (`Mutero-Setup.exe`). No terminal commands required.
- Download and launch
Mutero-Setup.exeon a Windows PC that can reach your Odoo URL. - Choose Theme Mode (Dark, Light, or System) during setup.
- Launch Mutero Desktop → Sign in with browser.
- Select one active VFD and open a fiscal day before fiscalising.
4Where to find each Odoo credential
Mutero Desktop → Settings → Odoo — Field Guide
| Field | Where to find it |
|---|---|
| Odoo URL | Browser address bar while logged into Odoo — scheme + host only, no path. Examples: https://mycompany.odoo.com, https://odoo.example.com, http://192.168.1.50:8069. Do not include /web or /odoo. |
| Database | On Odoo Online: usually the subdomain (e.g. mycompany). On self-hosted: the DB name on the login / Manage Databases screen. Multi-DB servers show a database dropdown at login — copy that exact name. |
| Username | The Odoo login email or login used for Accounting (e.g. admin@company.com). Must have rights to read posted customer invoices and post chatter notes. |
| API key | Preferred over passwords (Odoo 14+). In Odoo: open your avatar → Preferences (or My Profile) → Account Security → New API Key. Copy the key once — Odoo will not show it again. Paste into Mutero Desktop; it is stored with Electron safeStorage. |
Password fallback
5Connect Odoo in Mutero Desktop
- Open Mutero Desktop → Settings → Odoo.
- Enter URL, Database, Username, and API key from the field guide above.
- Click Save, then Test connection (auth + posted invoice count).
- Enable the listener and leave Auto-fiscalise on (recommended).
- Click Validate setup (see below) before go-live.
Credentials stay on this PC
6Set up tax rates in Odoo (ZIMRA FDMS)
Create the three standard ZIMRA tax entries in Odoo under Accounting → Configuration → Taxes (or Invoicing → Configuration → Taxes). Use Sales tax scope. Do not use compound / multi-group taxes for ZIMRA VAT.
Recommended Odoo tax rates
| Tax Name | Amount | Tax Scope | ZIMRA mapping |
|---|---|---|---|
| VAT 15% or Tax 15% | 15% | Sales | Standard Rate (Tax ID 1) |
| Zero Rated or Zero-Rated | 0% | Sales | Zero Rated (Tax ID 2) |
| Exempt or Tax Exempt | 0% | Sales | Exempt (Tax ID 3) |
Mutero resolves known labels and clear rates (0 / ~15) automatically. Custom names must be mapped under Tax Mapping. Unknown taxes never silently become 15%.
Mutero Tax Mapping (cloud) + Desktop sync
- Open Dashboard → VFD → Settings → Tax Mapping.
- Platform =
odoo. Map each Odoo tax name (exact spelling) to ZIMRA tax ID 1 / 2 / 3. - For Zero Rated and Exempt rows, set an 8-digit HS code default (RCPT047 / RCPT048).
- In Mutero Desktop → Settings → Odoo, click Sync tax mappings (or run Validate setup, which refreshes mappings automatically).
Unknown Odoo tax names never default to 15%
BLOCKED. Fix the Odoo tax name or add a Tax Mapping row, then Sync tax mappings and Sync now.Invoice preferences tip
Apply the correct sales tax on every invoice line in Odoo. Prefer tax-exclusive pricing unless your catalog is tax-inclusive. Partners with a VAT/TIN populate ZIMRA buyerData (RCPT043). Currency must be USD or ZiG.
7Validate installation
After connecting, click Validate setup in Mutero Desktop → Settings → Odoo. This goes beyond Test connection and checks:
- Credentials configured + JSON-RPC authentication
- Mutero Desktop signed in and a VFD device selected
- Listener enabled (warning if off)
- Active Odoo sales taxes discovered on
account.tax - Each tax resolves to ZIMRA (known label or Tax Mapping)
- Coverage for Standard 15%, Zero Rated, and Exempt
- 8-digit HS defaults on zero-rated / exempt mappings
- Tax mappings refreshed from Mutero Cloud
Results show as ready, needs attention, or not ready, with per-check OK / WARN / FAIL lines and any unmapped tax names listed for Tax Mapping.
When to re-validate
8. How the listener works
While the listener is enabled, the agent polls Odoo about every 45 seconds for posted account.move records:
out_invoice→ fiscal invoiceout_refund→ ZIMRA credit note against the original
Use Sync now for an immediate pull. Drafts are ignored — only posted customer invoices and refunds are fiscalised.
9. Invoice numbering (OD-)
Mutero prefixes Odoo document names so the source is visible in Invoices and the Queue:
| Odoo document | Mutero number |
|---|---|
| INV/2026/0001 | OD-INV/2026/0001 |
| RINV/2026/0001 | OD-CN-RINV/2026/0001 |
10. How to issue a credit note
Easiest option: Mutero web app
Create the credit note in Odoo from the fiscalised customer invoice. Mutero Desktop will pick it up after you post it.
Steps in Odoo
- Open the original posted customer invoice (already fiscalised in Mutero).
- Use Add Credit Note / reverse it so Odoo links the refund to that invoice.
- Add a short reason in the narration / reference.
- Post the credit note (drafts are ignored).
If it is skipped
11. ZIMRA writeback
After a successful fiscal sync, Mutero posts a chatter note on the Odoo move with the Mutero invoice number, fiscal receipt number (when available), and verification URL.
Troubleshooting
- Auth failed — confirm URL (no trailing path), exact database name, username, and API key. Prefer API keys on Odoo 14+.
- Wrong database — multi-DB servers often fail auth with a cryptic RPC error; re-check the Manage Databases name.
- Validate setup FAIL on taxes — create VAT 15% / Zero Rated / Exempt in Odoo, map custom names in Tax Mapping, Sync tax mappings, then Validate again.
- Nothing queued — only posted customer invoices/refunds are pulled. Check listener enabled + fiscal day open.
- BLOCKED (tax / HS) — map the Odoo tax or add an 8-digit HS for zero-rated / exempt lines.
- Offline — items stay in the Desktop Queue as PENDING and drain when Mutero Cloud is reachable again.
- Credit note skipped — the refund must reference the original (
reversed_entry_id), and that original must already be fiscalised asOD-….