FAQ
Short answers to the questions we get most. Something actually broken? Start with troubleshooting instead — this page explains how things are meant to work.
Suppliers & master data
How does PLANA Connect decide which Odoo vendor a Payhawk supplier belongs to?
Each Payhawk supplier is linked to exactly one Odoo vendor, and from then on that link — not the name or the tax ID — decides where an expense lands. For a supplier that is not linked yet, we match in this order: the Odoo reference stored on the Payhawk supplier, then the tax ID against the Odoo VAT, then the exact name. If nothing matches, we create the missing record.
If I correct a supplier on one side, does the other side update?
Odoo is the master record. Edits you make in Odoo to an already-linked vendor — name, tax ID, address, phone, e-mail — are pushed to Payhawk on the next sync. Edits made in Payhawk are not pushed back to Odoo: your ERP stays the source of truth, so a change in Payhawk can never overwrite your accounting data.
Where should I fix a vendor's tax ID?
In Odoo — it is the master record and the correction flows to Payhawk from there. → Sync options
Why must the tax ID include the country prefix?
Because the two systems are compared character for character. Case and spaces are forgiven, a missing prefix is not: B88530076 will not match ESB88530076. When the tax IDs don't match we fall back to matching on the name, and a one-character difference (S.L. vs SL, a trailing space) creates a second vendor instead of a match.
Can I merge or archive duplicate vendors in Odoo?
Tell us before you merge or delete a vendor the connector already knows. Odoo's merge wizard deletes the record it merges away; the link then points at something that no longer exists. The sync now detects that and re-links automatically, but it can only guess — so it is far safer to tell us which record you are keeping. Archiving is safe but the vendor stays linked and keeps receiving expenses; if you want it out of the flow, remove its Vendor flag instead.
Do all my Odoo vendors get pushed to Payhawk?
Yes. Each run handles a batch (Suppliers per run, 200 by default) and the following runs continue where the previous one stopped, so a long vendor list is moved across in portions and nothing is skipped. Clean up duplicates first — otherwise the duplicates get pushed too.
The log says "externalId is already set — skipping". Is that a problem?
It means two Odoo vendors share the same tax ID or name and one of them is already linked. We skip rather than guess, so nothing breaks — but the message repeats every run until you resolve the duplicate in Odoo.
Expenses & bills
Why hasn't my expense imported?
Only expenses that are reviewed ("ready") in Payhawk are imported. Anything still in draft is deliberately left alone — it isn't finished, so it doesn't belong in your books yet. It imports automatically once reviewed.
Why does my bill have no tax, or stay a draft?
Each expense line's tax is matched to an Odoo purchase tax by name. If a tax code cannot be matched with confidence, we leave the line untaxed and the bill stays a draft with a warning instead of posting something wrong. Set the right tax and post it — and tell us, so we can fix the mapping.
Why wasn't the bill posted automatically?
Either Auto-post bills is off, or the bill's tax could not be resolved (see above) — an unresolved tax always keeps the bill as a draft, even with auto-post on. → Sync options
Payments
Where do card payments and reimbursements land?
In a dedicated Payhawk journal in Odoo — one per Payhawk fund account, created automatically. They never post into your real bank journal, so your bank reconciliation stays clean.
Why does my bill say "In Payment" instead of "Paid"?
Because the payment has been registered against the bill — that part is automatic — but the bank movement has not been reconciled with it yet. That last step is Odoo's own bank reconciliation, and Odoo asks you to confirm it by default.
Can the bank movements be matched automatically?
Yes, and it's a setting in your Odoo rather than something we do for you — it is an accounting policy decision, so it stays yours. Go to Accounting → Configuration → Reconciliation Models and enable Auto-validate on "Invoices/Bills Perfect Match". Odoo then reconciles anything that matches exactly (same partner, same amount) on its own, and those bills go straight to Paid. Anything less than a perfect match still waits for you.
Timing
How fast is the sync, and what do webhooks actually do?
Reviewing an expense in Payhawk triggers a sync within seconds — that's the webhook, and it is on by default. A scheduled run also happens regularly as a safety net, and you can always press Run sync now on the company page. → Real-time webhooks
Question not answered here? Send it to us — every question a client asks ends up on this page.