Xero Accounting Integration Guide
Connect your Xero organisation in the Mutero Integrations Hub, map tax rates for ZIMRA, auto-fiscalize AUTHORISED sales invoices and allocated credit notes, and get FRN verification links written back to Xero history.
Invoice numbering stubs
XR-{InvoiceNumber} (e.g. XR-INV-0100), and credit notes become XR-CN-{CreditNoteNumber}.Cloud integration (not Desktop credentials)
1. Overview
Connect your Xero organisation from the Mutero Integrations Hub (one-click OAuth). After connect:
- AUTHORISED / PAID ACCREC invoices sync and auto-fiscalize (when enabled).
- ACCRECCREDIT credit notes fiscalize only when allocated to an already-fiscalized Mutero original (ZIMRA RCPT015 / RCPT032).
- After ZIMRA confirm, Mutero posts a history note on the Xero invoice or credit note with the FRN and verification URL.
- Use Sync Now from the Dashboard Integrations Hub to pull recent invoices and credit notes anytime.
- Mutero Desktop lists active cloud integrations (including Xero) on Home for status — connection and settings stay in the web app.
2. Connect Xero
What you need
- Open Integrations Hub.
- Find Xero Accounting and click Connect Xero.
- On the Xero consent screen, select your organisation and authorize Mutero.
- You return to Mutero with the organisation linked. Mutero immediately checks Xero tax rates — if a ~15% sales rate is missing or unmapped, the Hub shows Setup incomplete and Sync stays blocked until you fix it (see Tax rates). Then open Configure for auto-fiscalize and default VFD.
3. Invoice & credit note numbering
| Document | Mutero invoice number | Matched by |
|---|---|---|
| Invoice | XR-INV-0100 | Xero Invoice ID |
| Credit note | XR-CN-0001 | Xero Credit Note ID |
Mutero matches documents by Xero's document ID so Sync Now and real-time updates cannot double-fiscalize the same invoice or credit note.
4. Tax rates in Xero & Mutero mapping
Important — do this before Sync
Tax Mapping translates each Xero tax name on an invoice line into a ZIMRA tax ID. Without a match, Mutero blocks the document — it never invents 15% VAT.
- In Xero, open Settings → Tax rates. Locked defaults are often all 0% (Tax on Sales, Tax Exempt, Tax on Purchases, Sales Tax on Imports) — that is not enough for ZIMRA 15% VAT.
- Click + New Tax Rate and create a sales rate at 15% (recommended name:
VAT on Sales). Optionally addZero Ratedat 0%. You can keepTax Exemptfor exempt sales. - After you connect Xero, Mutero seeds common names automatically. Open Tax Mapping → Xero and map the exact 15% rate Name (or TaxType) to ZIMRA Standard. Map Tax Exempt / Zero Rated to Exempt / Zero Rated as needed. Set an 8-digit Default HS Code on zero-rated / exempt rows (RCPT047 / RCPT048).
- In the Hub, open Configure → Recheck tax until status is ready (Sync unlocks). Then authorise a test invoice in Xero → Sync Now → check Sync Logs.
| Xero rate (typical) | What to do | Mutero / ZIMRA |
|---|---|---|
| Tax on Sales (locked, often 0%) | Do not use as 15% VAT. Create a new 15% sales rate instead. | Fails setup check if only 0% sales rates exist |
| VAT on Sales / 15% (you create) | New tax rate at 15%, apply to sales/revenue lines | Map Name → 1 — Standard |
| Zero Rated / 0% (optional) | Create if you sell zero-rated goods | Map → 2 — Zero Rated + HS code |
| Tax Exempt (locked, 0%) | OK for exempt sales lines if you use this name | Map → 3 — Exempt + HS code |
| Tax on Purchases / Imports | Ignore for Mutero sales fiscalisation | Not used for ACCREC sync |
| Xero TaxType / name (seeded examples) | Rate | ZIMRA Tax ID |
|---|---|---|
| OUTPUT2, VAT on Sales, 15%, VAT 15% | 15% | 1 — Standard |
| ZERORATEDOUTPUT, Zero Rated, 0% | 0% | 2 — Zero Rated |
| EXEMPTOUTPUT, Tax Exempt, Exempt, No VAT | 0% | 3 — Exempt |
Unknown tax codes never default to 15%
Transaction preferences
5. How to issue a credit note
What is a credit note?
A credit note is the opposite of an invoice: it reduces what a customer owes (or refunds money already paid). In fiscalisation terms, ZIMRA already recorded the original sale; the credit note tells ZIMRA that part (or all) of that sale is reversed. Mutero links it to the original fiscal receipt so ZIMRA accepts it.
Example: you invoiced $322 for a service, fiscalised it, then the customer cancels. You issue a $322 credit note against that invoice. In Xero the invoice balance goes to zero; in Mutero/ZIMRA a credit fiscal document is issued against the original FRN.
Create the credit note in Xero (or use Mutero's Issue Credit Note). Do this only after the original invoice already shows an FRN in Mutero.
Easiest option: Mutero web app
What to fill on Xero's “New credit note” screen
Xero has no field labelled “Reason”. Use Reference for that (optional for Mutero — we invent one if blank).
- Contact — same customer as the original invoice.
- Issue date — today is fine.
- Credit note number — leave Xero's auto number (e.g. CN-0006).
- Reference — short why (e.g. “Returned goods”, “Billing error”). Optional; Mutero will use Xero credit note CN-… if empty.
- Currency — USD or ZiG only (same as the fiscalised invoice).
- Tax — match the original (usually Tax exclusive + Tax on Sales).
- Line items — what you are crediting (qty/price/account/tax). Partial credits are fine.
- Less Credit to INV-… at the bottom — must show the credit applied to the fiscalised invoice. Remaining credit should be $0 if you are fully reversing it.
Fastest way in Xero
Create the credit note from the invoice itself so Xero applies it automatically.
- In Xero, open Sales → Invoices.
- Open the invoice you want to credit (usually under Awaiting payment).
- Click the ⋯ menu (top right), then choose Create and apply credit.
- Xero opens a New credit note pre-filled from that invoice. Edit quantities or remove lines if you only need a partial credit.
- Optionally put a short why in Reference (there is no separate Reason field).
- Click Approve (not Save as draft). Xero applies the credit to the invoice — you should see something like Less Credit to INV-….
- In Mutero → Integrations Hub → Xero, click Sync Now. Approving in Xero does not by itself update Mutero unless a Xero webhook delivers the event.
Same steps as Xero’s guide: Add a credit note to a customer's invoice ↗.
Alternative: new credit note, then allocate
- Go to Sales → Sales overview (or Invoices).
- Click the arrow next to New and choose Credit note.
- Enter the contact, lines, tax, and optionally a why in Reference.
- Click Approve, then allocate the credit to the fiscalised invoice when Xero asks (or allocate later from the credit note).
- In Mutero, click Sync Now for Xero.
What happens next
If Sync Logs shows an error
6. Enable auto-fiscalize (real-time)
What this enables
Checklist in Mutero
- Open Integrations Hub and confirm Xero is Connected.
- Click Configure → turn Automated Sync & Fiscalize ON.
- Set a default VFD device on the integration (required so receipts can be queued without Sync Now).
- Complete Tax Mapping for Xero.
- Open a fiscal day on that VFD before go-live.
What gets fiscalized
- Invoices — sales invoices in AUTHORISED or PAID status. Drafts, voided, and deleted are skipped.
- Credit notes — receivable notes allocated to an already-fiscalized
XR-…original. Mutero blocks a second credit when the original is already fully credited. - Numbers use
XR-/XR-CN-stubs (e.g. XeroCN-0005→XR-CN-0005); Sync Logs show progress from queued to success.
Credit note webhooks (separate from invoices)
Mutero's handler already supports CREDITNOTE events. In the Xero Developer Portal, open your app → Webhooks and ensure you subscribe to Credit notes in addition to Invoices. Invoice-only subscriptions explain why invoices auto-fiscalize but credit notes need Sync Now.
Verify it works
- In Xero, authorize (or update) a test sales invoice that is not Draft.
- Within about a minute, open Mutero → Sync Logs (filter platform = Xero) for a new row.
- Confirm a Mutero notification and, after ZIMRA confirm, a History & Notes entry on the Xero invoice with FRN + verification URL.
- If nothing arrives: confirm Auto Fiscalize is on, a default VFD is set, a fiscal day is open, and tax mapping is complete — then try Sync Now.
7. Writeback
After successful ZIMRA submission, Mutero appends a History & Notes entry on the Xero invoice or credit note containing:
- ZIMRA fiscal receipt number (FRN)
- Device ID
- Verification URL
Writeback failures are non-blocking — fiscalization still succeeds.
8. Sync Now & sync logs
Use Sync Now on the Integrations Hub to pull recent AUTHORISED invoices then credit notes. Track outcomes under Sync Logs (filter platform = Xero). Mutero Desktop Home shows when Xero is active on your account but does not run Sync Now.
9. Troubleshooting
- Token expired / re-authorize needed — click Re-authorize Xero under Configure in the Integrations Hub.
- Unlinked credit note — allocate the credit note to the original invoice in Xero, ensure the original is fiscalized, then Sync Now.
- Invoices auto-fiscalize but credit notes do not — in the Xero Developer Portal, add a Credit notes webhook subscription (Invoices alone is not enough). Or use Sync Now.
- Already fully credited — Mutero refuses another credit note when remaining balance is 0. Open the original invoice to see linked credit notes / FRNs.
- Fiscal day closed — open the fiscal day on the default VFD (Dashboard or Desktop) before Sync Now.
- Missing default device — set a default VFD on the Xero integration (Configure) so auto-fiscalize can queue receipts.
- Nothing fiscalized after an invoice change — turn Auto Fiscalize on, set default VFD, open fiscal day, finish Tax Mapping, then check Sync Logs or run Sync Now.
- Unmapped tax blocked — map the Xero tax type under Tax Mapping.