Odoo accounting integration: Exact Online, Yuki, Twinfield

Short answer: for Exact Online and Twinfield there are ready-made Odoo connectors on the Odoo Apps store, and Odoo has a built-in sync with Silverfin. For Yuki you only find partial modules (vendor bills or file exports), and for SnelStart, AFAS and Billit we found no Odoo app at all, so you need a custom integration or you move the bookkeeping into Odoo itself. Off-the-shelf connectors cost a few hundred to about a thousand dollars; a custom Odoo accounting integration typically takes 6 to 20 developer days. Below: what exists per package, what syncs in which direction, where it breaks, and how to choose.
Why companies connect Odoo to a separate accounting package
Odoo has its own Accounting app, so why connect it to anything? Usually because the accountant works in Exact Online, Yuki or Twinfield and has fifty other clients there. Moving them is not an option, so Odoo handles sales, stock and invoicing, and the ledger lives in the accountant's package. The integration's job is simple to describe: get every customer, invoice, credit note and vendor bill from Odoo into the accounting package exactly once, with the right ledger account and VAT code, and ideally get payment status back.
One technical precondition first: Odoo's external API is only available on the Custom plan, not on One App Free or Standard, according to Odoo's pricing page. Any connector that talks to Odoo from outside needs that plan (or Odoo.sh / on-premise).
Which connectors exist, per accounting package
We checked the Odoo Apps store and vendor sites in October 2026. Prices are as shown on the store, excluding VAT.
| Package | Market | Odoo connector we found | What syncs | Direction |
|---|---|---|---|---|
| Exact Online | NL, BE | Exact Online Connector by Callista (€708/year Standard, €948/year Advanced); Exact Online Connector by Mainframe Monkey (about $1,060, Enterprise only) | Contacts, sales invoices, vendor bills, documents; payments (Callista Advanced); VAT codes and journals fetched (Mainframe Monkey) | Mostly Odoo to Exact; payments back to Odoo |
| Twinfield | NL | Twinfield Connector by ERP2XL ($329.84 one-off, Odoo 20); Twinfield Integration by Radical Fanatics (about $950, Enterprise, Odoo 16/17) | Invoices, vendor bills, credit notes, customers, suppliers; payment status (ERP2XL); chart of accounts and taxes (Fanatics) | ERP2XL one-way plus payment status; Fanatics two-way |
| Yuki | NL, BE | Only partial: a Yuki vendor bill uploader by Bundo Tech ($54.79, Odoo 17) and a file export module by Pokutsoft (Exact XML, Yuki CSV, WinBooks, Sage, XAF) | Vendor bills with PDF/XML; or journal export files you upload yourself | Odoo to Yuki |
| SnelStart | NL | None found | Custom via SnelStart's "Maatwerk" API key | Your choice |
| AFAS Profit | NL | None found | Custom via AFAS App Connector (GetConnectors / UpdateConnectors) | Your choice |
| Silverfin | BE | Built-in Odoo integration (documented by Odoo) | Bookkeeping data for the accountant's year-end work | Odoo to Silverfin |
| Billit | BE | None found on the Odoo store | Custom via Billit's REST API, or let Odoo send Peppol itself | Your choice |
Two cautions. Neither Exact connector page says explicitly that it supports an Exact Online Belgium administration; Callista is a Belgian company, but ask them before you buy. And store listings change per Odoo version, so check that the module exists for the version you run (Odoo 17, 18, 19 or 20).
What the APIs on the other side look like
- Exact Online: REST with OAuth. Third-party documentation lists 60 calls per minute and 5,000 per day per app per division, higher on Exact Online Premium. Hit the limit and you get HTTP 429. The connector also needs HTTPS on your Odoo side.
- Yuki: SOAP only, with a WebserviceAccessKey per administration. Default limit is 1,000 calls per day per domain, with paid add-ons for 5,000 or 10,000. Journal entries must balance or they are refused.
- Twinfield: certified connectors exist (ERP2XL says it is certified by Wolters Kluwer), which is usually the faster route.
- SnelStart: you create a "Maatwerk" connection key per administration in SnelStart Web (Koppelingen). It is not available during the free trial, and generating a new key kills the old one.
- AFAS Profit: REST or SOAP through an App Connector token. You define your own GetConnectors and UpdateConnectors; one call can be at most 75 MB.
- Billit: REST with OAuth 2.0, 60 requests per minute, credentials issued by Billit support, sandbox first.
- Odoo itself: the new JSON-2 API uses bearer API keys. Odoo's docs say the old XML-RPC and JSON-RPC endpoints are scheduled for removal in Odoo 22 (Odoo Online 21.1). So a connector built today should use JSON-2 and someone must own key rotation.
Where Odoo accounting integrations break
- VAT codes. Odoo taxes and Exact, Yuki or Twinfield VAT codes are not the same list. Reverse charge, intra-EU supplies, 0% export and the Belgian 6/12/21% rates all need an explicit mapping. One unmapped tax and the invoice lands in the wrong VAT box, or the API refuses it.
- Rounding. Odoo can round per line or globally; your accounting package may recalculate. A one-cent difference makes a journal entry unbalanced, and Yuki rejects unbalanced entries.
- Duplicate relations. The same customer gets created twice because one record has a VAT number with spaces and the other without. Good connectors match on VAT or Chamber of Commerce / enterprise number (ERP2XL describes exactly this) and store the external ID in Odoo.
- The error queue nobody reads. Every connector has failures: closed periods, a blocked relation, an expired token. Callista shows a sync queue with a retry button. That only helps if someone checks it weekly.
- Edits after posting. An invoice changed or cancelled in Odoo after it was synced. Decide up front: credit note in Odoo, never edit.
- Peppol, in Belgium. Since 1 January 2026, Belgian B2B invoices between VAT-registered companies must be structured e-invoices (Peppol BIS 3.0 is the standard route). The tolerance period ended on 31 March 2026; Deloitte reports enforcement from 1 April 2026 with fines up to €5,000. If both Odoo and Billit (or Exact) can send Peppol, decide which one sends, or a customer receives the same invoice twice.
The Netherlands is not there yet: the Dutch cabinet announced in September 2026 that B2B e-invoicing should become mandatory from 1 July 2030. That is a plan, not law, but it means a new integration should already handle structured invoices (UBL) rather than only PDFs.
When to use Odoo's own accounting instead
Before you pay for any integration, ask whether you need the second package at all. Odoo Accounting has Belgian and Dutch localisations, and Odoo's documentation lists itself as a Peppol access point and SMP, free to register, including in Community, for both sending and receiving. Your accountant can still work in Silverfin via the built-in Odoo sync.
Use Odoo's own accounting when your accountant is fine working in Odoo (many are, especially in Belgium), you have one or two companies, and you want Peppol handled in one place. Keep the separate package when the accountant refuses, when the group consolidates in Exact or AFAS, or when payroll and HR already run in AFAS and the ledger has to stay next to it. That trade-off is the same one we describe in build it or buy it: integration is a recurring cost, not a one-off.
Off-the-shelf connector or custom integration?
| Off-the-shelf connector | Custom integration | |
|---|---|---|
| Available for | Exact Online, Twinfield, Silverfin | Any package with an API, incl. Yuki, SnelStart, AFAS, Billit |
| Cost | About $330 one-off to €948/year | 6 to 20 developer days, plus maintenance |
| Time to live | Days | 3 to 6 weeks |
| Fits your process | You adapt to the module | Built around your journals, VAT cases and approvals |
| Edge cases (multi-company, analytic, projects) | Sometimes missing (Mainframe Monkey: no multi-company yet) | Built if you need them |
| Odoo upgrades | Depends on the vendor publishing a new version | You (or we) update it |
| Ownership | Licence | Your code, in your repository |
Our honest default: if a maintained connector exists for your package and Odoo version, try it first. Install it on a staging database, sync one month of real invoices, and let the accountant check VAT returns and open items. Build custom only when that test fails or the package has no connector.
What a custom Odoo accounting integration costs
We work on actual time: a senior developer at $575/day, a lead developer at $795/day (excl. VAT). Realistic ranges, based on the work involved:
- One direction, invoices and contacts (Odoo to SnelStart, AFAS or Yuki): mapping workshop with your accountant (1 day), connector module with VAT and ledger mapping (3 to 5 days), error queue, logging and alerts (1 to 2 days), test month and go-live (1 to 2 days). 6 to 10 days, roughly $3,500 to $6,500.
- Two directions (payments and open items back into Odoo, credit notes, vendor bills with PDFs, multi-company or Peppol coordination): 12 to 20 days, roughly $7,000 to $13,000.
What pushes it up: many VAT scenarios (cross-border, reverse charge), several companies or administrations, a historic data migration, and SOAP APIs like Yuki that take longer to build and test. What keeps it down: one company, one currency, a clean chart of accounts. After go-live you need someone to watch the error queue and update the module when Odoo or the accounting package changes its API; a monthly subscription from $550 for 8 hours covers that. See how we scope and report on project work.
How we build it
- Mapping first. A table of every Odoo tax, journal and account against the target codes, signed off by your accountant before we write code.
- A queue, not live calls. Each invoice becomes a job with a status. Jobs respect the API limits (60 per minute for Exact and Billit, a daily budget for Yuki) and batch where the API allows it.
- Retries with backoff. HTTP 429 and timeouts are retried automatically; validation errors (closed period, unknown VAT code) are not, and go to a list a human resolves.
- Idempotency. The external ID is stored on the Odoo record, so a retry never creates a second invoice or relation.
- Logging and monitoring. Every request and response is logged; you get an alert when jobs fail or tokens are about to expire.
- Odoo upgrade-proof. JSON-2 API on the Odoo side, not the RPC endpoints Odoo is removing.
When to call a professional
Do it yourself when a store connector exists, your setup is one company with standard VAT, and the staging test passes. Call someone when invoices land in the wrong VAT box, the accountant spends hours fixing duplicates, your Belgian customers say they did not receive a Peppol invoice, or the package you use simply has no connector. Those problems compound every month you leave them.
Want a second opinion on connector versus custom, or a fixed scope for your integration? Look at our Odoo integration service or send us your setup: Odoo version, accounting package, number of companies and invoices per month. We reply with what we would do and roughly how many days it takes.
Frequently asked questions
Is there an Odoo Exact Online integration?
Yes. The Odoo Apps store lists an Exact Online Connector by Callista (€708 or €948 per year) and one by Mainframe Monkey (Enterprise only). Both push contacts and invoices from Odoo to Exact; payments can come back.
Does Odoo connect to Yuki?
Only partially. We found a module that uploads vendor bills to Yuki and one that exports journal files for Yuki, but no full two-way sync. For automatic invoice and payment sync you need a custom integration against Yuki's SOAP API.
Do I need the Odoo Custom plan for an integration?
If the connector talks to Odoo through the external API, yes: Odoo's pricing page lists external API access on the Custom plan only. Modules installed inside Odoo.sh or on-premise work differently, so check with the vendor.
Is Peppol mandatory in Belgium?
Yes. Since 1 January 2026 B2B invoices between Belgian VAT-registered companies must be structured e-invoices, with Peppol as the standard route. The tolerance period ended on 31 March 2026.
How much does a custom Odoo accounting integration cost?
Typically 6 to 10 developer days for a one-way invoice and contact sync, and 12 to 20 days for two-way sync with payments, at $575 to $795 per day. Maintenance comes on top.
Related articles

Best Software Development Companies in Thailand (2026): A Buyer's Shortlist
Nine software development companies in Thailand compared on public facts: location, team, services, prices and what each is best for. Written by WDDW.


Outsourcing Software Development to Thailand: Models, Costs and How to Choose (2026)
How outsourcing software development to Thailand works for European companies: the four ways of working, real prices in euro, and what to check first.


.NET vs. Java in 2026: Here we go again
.NET 10 vs Java 25 in October 2026: versions, support dates, concurrency, memory, frameworks, and rules of thumb for choosing a platform.

