Naar de inhoud

Odoo en je andere pakketten

Odoo koppeling: laat je andere pakketten zelf met Odoo praten

Odoo koppeling: de Nederlandstalige documentatie van Odoo 19 met de pagina Integraties

2028

Odoo 22 schrapt XML-RPC en JSON-RPC in najaar 2028, Odoo Online al in winter 2027

Webshop, bank, planning en boekhouder die gegevens uitwisselen met Odoo, gebouwd op de JSON-2 API van Odoo 19 en met de sleutel van jouw eigen database.

Overtypen tussen Odoo en de rest

Een Odoo koppeling laat Odoo gegevens uitwisselen met de andere software in je bedrijf, zonder dat iemand ze overtypt. Een bestelling uit de webshop wordt een verkooporder, een getekende offerte wordt een factuur, een betaling op de bank sluit die factuur af en de voorraad zakt mee.

In een kmo staat Odoo zelden alleen. Er draait een webshop naast, een planningstool, een boekhouder die in een eigen pakket werkt, een bank en vaak nog een oude Excel met klanten die niemand durfde op te ruimen. Elke plek waar die pakketten elkaar niet kennen, is een plek waar iemand kopieert en plakt, en waar fouten binnensluipen die pas bij de btw-aangifte opvallen.

Hoe je Odoo koppelt, hangt af van drie dingen: welk Odoo-abonnement je hebt, waar je database draait en welke kant het initiatief neemt. Daarover gaat deze pagina, met wat de officiƫle documentatie van Odoo 19 er vandaag over zegt, de routes naast elkaar en de plekken waar koppelingen in de praktijk breken.

Odoo in het midden van je pakketten

Logboek van de koppeling

  1. 09:02

    Website → naar Odoores.partner/create

    Nieuwe klant uit het offerteformulier

    āœ“ gelukt
  2. 09:02

    Website → naar Odoosale.order/create

    Offerte met drie lijnen voor die klant

    āœ“ gelukt
  3. 09:15

    Planning ← uit Odoostock.quant/search_read

    Voorraad van de artikelen op de werkbon

    āœ“ gelukt
  4. 11:40

    Planning → naar Odooaccount.move/create

    Factuur na de afgewerkte werkbon

    āœ• geweigerd
  5. 11:52

    Planning → naar Odooaccount.move/create

    Dezelfde factuur, na de correctie

    āœ“ gelukt
  6. 12:00

    Website ← uit Odooaccount.move/search_read

    Factuurstatus voor het klantportaal

    āœ“ gelukt

De deur

POST /json/2/<model>/<methode>Authorization: bearer <API-sleutel>

  • De sleutel hoort bij een aparte gebruiker voor de koppeling, met alleen de rechten die ze nodig heeft. De rechten en regels van die gebruiker gelden voor elke call.
  • Een sleutel heeft een vervaldatum, hoogstens drie maanden. Wij vernieuwen hem voor hij afloopt.
  • De oudere XML-RPC- en JSON-RPC-routes verdwijnen in Odoo 22. Wij bouwen op JSON-2.

11:40, de factuur wordt geweigerd

Het btw-tarief op lijn 2 bestaat niet in deze Odoo. Odoo antwoordt met een foutcode en een JSON-foutobject met de melding.

Wat Odoo doet

Elke call loopt in een eigen transactie. Bij een fout draait Odoo hem volledig terug: er staat geen halve factuur in je boeken.

Wat de koppeling doet

De fout gaat met de melding van Odoo in het logboek, de factuur wacht in een wachtrij en de boekhouder krijgt een bericht. Na de correctie gaat dezelfde call opnieuw.

Calls kun je niet samen in een transactie zetten. Daarom schrijft de koppeling eerst de klant, dan de offerte, en controleert ze elke stap.

Voorbeeld met verzonnen namen en tijden, gebaseerd op de openbare API-documentatie van Odoo 19. Wij zijn geen Odoo-partner.

De JSON-2 API in Odoo 19

Sinds versie 19 heeft Odoo een nieuwe externe API: de External JSON-2 API. Een koppeling stuurt een POST naar `/json/2/<model>/<methode>`, met een API-sleutel als bearer-token in de header. Een klant opzoeken is een call op het model `res.partner`; een verkooporder bevestigen is de methode `action_confirm` op `sale.order`, die eerst controleert of de order klopt.

Drie regels uit de documentatie bepalen hoe je zo een koppeling bouwt:

  • Elke call is een eigen transactieTwee calls na elkaar delen geen databasetransactie. Wie eerst zoekt en daarna leest, kan tussendoor een record kwijtspelen dat een collega net verwijderde. Daarom kies je methodes die het in een keer doen, zoals `search_read`.
  • De API volgt de gewone rechtenWat de gebruiker achter de sleutel niet mag, mag de koppeling ook niet. Odoo raadt voor een integratie een aparte botgebruiker aan, met alleen de rechten die de koppeling nodig heeft. Lekt de sleutel, dan blijft de schade beperkt tot wat die bot mocht.
  • Elke database heeft een eigen `/doc`-paginaDaar staan de modellen, velden en methodes van precies jouw installatie, ook die van extra modules en eigen velden.

De API-sleutel maak je in je voorkeuren, onder Accountbeveiliging. Je geeft hem een omschrijving en een looptijd. Een sleutel leeft hooguit drie maanden: een koppeling die jaren moet draaien, krijgt dus minstens elk kwartaal een nieuwe sleutel. Odoo toont de sleutel een keer, bij het aanmaken, en daarna nooit meer.

Oude RPC tegenover JSON-2

Veel bestaande koppelingen draaien nog op de oude API. Odoo heeft er een einddatum op gezet.

Adres
XML-RPC en JSON-RPC/xmlrpc, /xmlrpc/2 en /jsonrpc
External JSON-2 API/json/2/ gevolgd door model en methode
Aanmelden
XML-RPC en JSON-RPCDatabase, login en wachtwoord via de common-service
External JSON-2 APIAPI-sleutel als bearer-token in de header
Status
XML-RPC en JSON-RPCAfgeschreven: weg in Odoo 22 (najaar 2028) en in Odoo Online 21.1 (winter 2027)
External JSON-2 APINieuw sinds Odoo 19
Documentatie
XML-RPC en JSON-RPCAlgemene referentie
External JSON-2 APIEen eigen /doc-pagina per database, met jouw modellen en velden
Wat je nu doet
XML-RPC en JSON-RPCHerschrijven voor je database de grens haalt
External JSON-2 APINieuwe koppelingen meteen hierop bouwen

Draait je koppeling vandaag op XML-RPC of JSON-RPC, plan de overstap nu. Op Odoo Online valt de oude weg al weg met versie 21.1, in de winter van 2027, en een koppeling die stilvalt merk je pas als de orders niet meer binnenkomen.

Drie routes naar een gekoppelde Odoo

Niet elke koppeling vraagt code. Kijk eerst wat er al bestaat, en pas dan wat er gebouwd moet worden.

RoutePast alsWat je nodig hebtWaar het knelt
Ingebouwde integratie of module uit Odoo AppsOdoo de koppeling zelf aanbiedt: betaalproviders, de bank, verzenders zoals bpost of SendcloudVoor ingebouwde integraties je abonnement; voor een module uit de Apps Store Odoo.sh of een eigen serverOdoo Online draait geen modules uit de Apps Store en geen eigen modules
Workflow in Zapier, Make of n8nEen eenvoudige stroom in een richting, met weinig regelsHet Custom-abonnement voor de externe API, plus een account bij de toolLogica verspreid over klikken, en foutmeldingen in een mailbox die niemand leest
Eigen koppeling op de JSON-2 APIMeerdere stromen in twee richtingen, eigen regels of veel volumeCustom-abonnement, botgebruiker en API-sleutel van jouw databaseBouw vooraf, sleutelrotatie en een test bij elke Odoo-upgrade
Export en import met bestandenEen stroom die een keer per week of maand mag lopenEen vaste export uit het andere pakket en de importfunctie van OdooIemand moet eraan denken, en fouten zie je pas achteraf

De tweede rij lijkt de goedkoopste, en voor een eenvoudige stroom is hij dat ook. Zapier heeft een app voor Odoo CRM; in Make en n8n bouw je de stroom op de API. Welke van de drie past, lees je in Make, Zapier of n8n. Zodra een stroom beslissingen moet nemen (welke klant is dezelfde, welke btw hoort bij welk land), wordt een workflow een programma dat niemand als programma beheert.

Voor een hele invoering, met de keuze tussen Odoo Online, Odoo.sh en een eigen server, lees je Odoo implementeren. Twijfel je nog of Odoo het juiste pakket is, dan helpen Exact Online of Odoo en Odoo of Business Central je kiezen.

Welke gegevens welke kant op gaan

Een koppeling begint niet bij de techniek maar bij een lijst: welke gegevens bestaan in twee pakketten, en welk pakket is per gegeven de baas.

GegevenBron van waarheidRichtingWaar het misgaat
Klanten en contactpersonenOdoo, tenzij een apart CRM leidtTwee richtingen, met een vaste sleutel zoals het btw-nummerDubbele klanten door een tikfout of een tweede e-mailadres
Offertes en verkoopordersOdooVan de webshop of configurator naar OdooEen order die binnenkomt voor de klant bestaat
FacturenOdoo Boekhouding of het pakket van je boekhouderEen richting, nooit terug overschrijvenBtw-codes die in beide pakketten anders heten
BetalingenDe bankVan de bank naar OdooEen betaling met een verkeerde mededeling blijft openstaan
VoorraadOdoo VoorraadVan Odoo naar de webshopTwee kanalen verkopen hetzelfde laatste stuk
Afspraken en boekingenDe agenda of het boekingsplatformNaar Odoo, als taak of als orderEen gewijzigde boeking die als nieuwe binnenkomt

De kolom bron van waarheid is de belangrijkste beslissing van de hele koppeling. Per gegeven is een pakket de baas; de andere kant leest of stelt voor. Wie twee pakketten laat schrijven in hetzelfde veld, krijgt een koppeling die zichzelf overschrijft en een boekhouder die niet meer weet welke versie klopt.

Twee gegevens verdienen extra aandacht. Voorraad wil snel zijn: wie een uur wacht, verkoopt wat er niet meer is. Voor een webshop met weinig marge is dat een reden om voorraad als eerste stroom te bouwen, en meer over die keuze staat bij voorraadbeheer software. Facturen naar Belgische bedrijven gaan sinds 2026 als e-factuur over Peppol. Kijk eerst of je pakket dat zelf doet voor je het in een koppeling stopt, en lees facturen automatisch verwerken voor de inkomende kant.

Vijf plekken waar het breekt

  1. Dubbele klanten

    De webshop maakt een klant aan met een e-mailadres, de boekhouder met een btw-nummer en de verkoper met een gsm-nummer. Zonder vaste sleutel worden dat drie klanten in Odoo. Kies per stroom een sleutel, zoek eerst met search_read en maak pas een klant aan als er echt niets is. Een eenmalige opkuis vooraf scheelt maanden gedoe achteraf.

  2. Btw-codes en fiscale posities

    Odoo zet btw om met fiscale posities: een regel die de belasting en de rekening van een product aanpast voor een klant in het buitenland of een medecontractant. Een koppeling die zelf een btw-percentage meestuurt, gaat daar langs en maakt facturen die je boekhouder moet corrigeren. Laat Odoo de btw bepalen en stuur alleen de klant en het product.

  3. Een sleutel die verloopt

    Een API-sleutel leeft hooguit drie maanden. Wie dat vergeet, heeft een koppeling die op een dinsdagochtend zonder waarschuwing stopt. Zet de vervaldatum in een agenda, maak de nieuwe sleutel voor de oude verloopt, controleer dat alles op de nieuwe draait en trek pas dan de oude in.

  4. Rechten van de botgebruiker

    Een botgebruiker met te weinig rechten krijgt een foutmelding; een bot met beheerdersrechten kan alles lezen wat er in je database staat. Geef hem alleen de modellen die de koppeling nodig heeft, en zet zijn wachtwoord leeg zodat niemand ermee kan inloggen. Leg in een verwerkersovereenkomst vast wie welke gegevens ziet.

  5. Een upgrade van Odoo

    Bij een nieuwe versie kunnen velden en methodes veranderen, en de overstap van de oude RPC naar JSON-2 is daar het grootste voorbeeld van. Test de koppeling op een kopie van de database voor je de echte upgradet, en hou bij welke velden ze gebruikt, zodat je weet wat je moet nakijken.

Hoe we een koppeling met Odoo opzetten

  1. Gesprek en een vaste prijsWe overlopen welke stromen er zijn, wie per gegeven de bron van waarheid is en welk Odoo-abonnement je hebt. Daarna krijg je een vaste prijs voor de hele koppeling, met het onderhoud apart erbij.
  2. Een botgebruiker in jouw databaseJij maakt de botgebruiker en de API-sleutel aan, of we doen het samen. De sleutel blijft van jou: hij staat niet in de code en je trekt hem op elk moment in.
  3. Bouwen op een kopieWe bouwen tegen een testdatabase of een kopie, nooit eerst op je echte klanten. Elke stroom krijgt een sleutel om dubbels te herkennen, zoals het btw-nummer of het e-mailadres.
  4. Een logboek en een weg terugElke call komt in een logboek: wat er binnenkwam, wat de koppeling deed en wat Odoo antwoordde. Loopt er iets mis, dan zie je welk record het was en stuur je het opnieuw. Een nieuwe versie van de koppeling kan terug naar de vorige.
  5. Meldingen en de volgende sleutelKomt er een dag niets binnen terwijl er wel orders zijn, dan krijgt iemand een melding. De vervaldatum van de sleutel staat in de agenda, met de stappen om hem te vervangen.

Bewijs uit ander werk, en de buurpagina's

Een koppeling is software die met software praat, en dat doen onze platformen elke dag. Het beheerplatform van Business Centrum leest de bestaande Excel in en geeft een rapport van wat het overnam; we testten dat op hun echte bestand met 309 werkgevers en 971 werknemers. Het transportplatform van DA Logistics maakt een bundel voor de boekhouder en verstuurt veertien soorten mails. Elke release gaat er live in 2 tot 6 seconden, met een backup, een snapshot en een weg terug.

Koppel je meer dan Odoo, dan staan de andere pakketten op een eigen pagina: de Exact Online koppeling, de Teamleader koppeling, de Robaws koppeling en de Business Central koppeling. Het algemene verhaal, met alle routes en een rekenvoorbeeld van uren overtypen tegen de bouw, staat bij koppeling laten maken.

Wordt de vraag groter dan een koppeling, omdat Odoo een stuk van je werk niet dekt, lees dan Odoo of software op maat en ERP op maat. Koppelingen bouwen we binnen AI en automatisatie; groeit het uit tot een eigen platform, dan is het software op maat.

AI automatisatie

Hoe VBS je hiermee helpt

We laten mails, offertes, documenten en opvolging zichzelf doen, ingebouwd in de manier waarop je nu werkt.

  • Een flow per taak, van formulier tot bevestiging
  • Een mens keurt goed wat ertoe doet
  • Draait op AWS, met logboek en melding als iets faalt

Hoe we dat aanpakken, lees je bij AI automatisatie.

Welke stroom wil je eerst uit handen geven?

Stuur ons welke pakketten naast Odoo draaien, welk abonnement je hebt en wat er vandaag overgetypt wordt. Na een gesprek krijg je de route die past en een vaste prijs, met het onderhoud erbij.

Optioneel, als je liever gebeld wordt.

Wat wil je bereiken, en wat staat er al?

We gebruiken je gegevens alleen om je te antwoorden.