Odoo integration

How togrant.com talks to Odoo.

No custom module. No Studio fields. No server actions. Just the standard XML-RPC API that ships with every Odoo install since version 8 — used the way the docs say to use it.

What we touch in Odoo

togrant.com syncs into three Odoo models. That's it.

We never write to res.partner, account.move, account.move.line, or anything in the chart of accounts. That's finance's territory.

The three analytic plans

Odoo 17 introduced multi-plan analytic accounting, and that's the mechanism togrant.com leans on. Each plan slices analytic lines by a different axis; combined, they give you per-project + per-donor + per-line-item drill-down.

PlanAxisExample accounts
Plan 1 — Project Which togrant.com project PRJ-001 Civic Voices Uganda
PRJ-002 Civic Voices Burundi
Plan 2 — Donor budget line Which donor category HR
TRV
EQP
IND
Plan 3 — Donor budget detail Which specific budget line 1.1.1.a Project Director
2.1 International flights

A single bill in Odoo can be tagged with one analytic account from each plan. Sum across one axis to get per-project actuals; sum across another to get per-donor-line actuals. Same data, different views.

How we write

Every write goes through an idempotency key shaped like tenant_id:entity_type:entity_id:operation. Before any mutation, we check whether the operation has already succeeded. If it has, we skip and reuse the existing Odoo ID. This means:

my.togrant.com/admin/tenants/acme/odoo
Sync log with idempotency keys, timestamps and per-call response status

The sync log

Every call writes a sync_log row: timestamp, tenant, entity, operation, idempotency key, HTTP status, response size, latency, error message (if any). The log is:

Connection health

A 5-minute cron pings each tenant's Odoo with a no-op call and records the result. The admin dashboard shows a green / amber / red pill per tenant. Red for more than 15 minutes triggers an alert to the support team — usually before the customer notices.

Laptop screen showing financial analytics and time-series graphs

Compatibility

Older Odoo? The three-plan analytic structure landed in Odoo 17. Earlier versions used a single analytic axis, which works for some donor reporting but not for combined per-project + per-donor drill-down. If you're on Odoo 16 or older, we recommend planning an upgrade before deploying togrant.com — let's talk about timing.

What we don't do

To keep the integration boring (in a good way):


Start 30-day free trial Walk through your Odoo setup with us