Configuration check
The connector ships a self-service configuration check that validates the setup and reports exactly what is wrong — so most onboarding issues are caught without contacting support.
Settings → Payhawk → Sync Log → “Run Configuration Check”. It opens a report with one line per check, colour-coded OK / Warning / Error.
What it validates
| Check | What it means |
|---|---|
| API key | A key is set for the active mode (Sandbox/Production). |
| Payhawk account | The key authenticates and an account is resolved. |
| Instance binding | The Payhawk group’s odoo_internal_data → instance_id matches this Odoo instance (see below). |
| Taxes — type | Only purchase taxes are selected (Payhawk is spend management). |
| Taxes — duplicate code | No two selected taxes share the same name → Payhawk rejects duplicate codes. |
| Taxes — mapping | Each selected tax matches a Payhawk tax-rate code (catches EN/ES translation mismatches). |
| Currencies | Every Payhawk fund-account currency exists and is active in Odoo. |
| Supplier external IDs | No Payhawk supplier carries a stale external id from another Odoo instance. |
| Bills / Fund journals | A purchase journal exists; PHWK/PSND fund journals are present. |
| Chart of accounts / Webhooks | Expense accounts available; webhook secret set when enabled. |
Required configuration
- API key — per mode. Sandbox and Production keys are stored separately.
- Group ID + Group Key — required when the Payhawk account belongs to a group (most partner/sandbox accounts do). Without them, creating the integration’s custom field returns
403 Forbiddenand the whole sync aborts. Set both in Settings → Payhawk. - Odoo instance binding — on the first sync the connector writes this Odoo’s instance id into the Payhawk group custom field
odoo_internal_data → instance_id(anti cross-instance corruption guard). On a shared sandbox group a previous Odoo may already own it; the check then reports a mismatch. Fix: editodoo_internal_data → instance_idin the Payhawk group UI to the instance id shown by the check. - Taxes — select only purchase taxes, and make sure each selected tax has a unique name (the name becomes the Payhawk code; duplicates →
400 duplicate_code). - Departments → Teams — needs team-create permission in Payhawk. If the account/key can’t create teams (
403 /teams), turn off Sync Departments.
Reset supplier external IDs
When suppliers were previously synced from a different Odoo instance (e.g. a shared sandbox), their Payhawk external ids point at the wrong partner and won’t update. A one-time maintenance action clears them so the next sync re-links by VAT/name.
It lives in developer mode (Settings → Payhawk → Sync Log → Reset Supplier External IDs) — intentionally hidden so it cannot be triggered by accident. After running it, start a normal sync.
WARNING
This rewrites every Payhawk supplier’s external id. Use it only for the stale-id case above.