WooCommerce en boekhouding
WooCommerce koppeling met je boekhoudpakket
Een WooCommerce koppeling met je boekhoudpakket zet elke order als boeking of factuur in Exact Online, Moneybird, e-Boekhouden, SnelStart, Twinfield of Yuki, met de juiste btw-code, debiteur en grootboekrekening. Wat er landt en hoe snel hangt af van het pakket: van 150 verzoeken per 5 minuten tot 5.000 per dag.
Wat je tussen WooCommerce en je boekhoudpakket koppelt
De richting is bijna overal dezelfde: orders, terugbetalingen en betalingen gaan van WooCommerce naar de boekhouding. Wat er in het pakket ontstaat verschilt per pakket en soms per abonnement.
| Pakket | Wat een order wordt | Voorraad uit de API |
|---|---|---|
| Exact Online | verkoopboeking, verkoopfactuur, of verkooporder op Handel | alleen Handel en Productie |
| SnelStart | factuur of order, afhankelijk van het pakket | voorraadbeheer vanaf inControle, API-details niet openbaar |
| Moneybird | externe verkoopfactuur (external_sales_invoices) |
geen voorraad in de API |
| e-Boekhouden.nl | factuur (/v1/invoice) of mutatie (/v1/mutation) |
vlag inStockManagement op een artikel, geen endpoint voor aantallen |
| Twinfield | transactie of factuur via de XML-webservice processxml |
niet in de gelezen documentatie |
| Yuki | verkoopfactuur via XML (ProcessSalesInvoices) |
niet in de webservice voor verkoop |
SnelStart verdeelt de functies over pakketten: inZicht noemt het zelf het pakket "voor orderbeheer", inControle het pakket "voor controle over voorraden en bestellingen". Bij Exact Online staat in de API-documentatie bij elke resource in welk pakket hij werkt; de uitwerking voor WooCommerce staat op WooCommerce Exact Online koppeling. Heb je een ERP in plaats van een boekhoudpakket, kijk dan op WooCommerce AFAS koppeling.
Welk systeem is leidend, per gegeven
| Gegeven | Leidend | Richting | Gedrag |
|---|---|---|---|
| Order, regels, bedragen, btw-bedragen | WooCommerce | naar het pakket | één keer, met het ordernummer als referentie |
| Btw-code en grootboekrekening | het pakket | vaste tabel in de koppeling | per tarief, land en soort regel |
| Debiteur | het pakket | zoeken, anders aanmaken | bestaande gegevens niet overschreven |
| Factuurnummer | de factuurplugin of het pakket | afgesproken per shop | nooit uit allebei |
| Betaling | WooCommerce en de betaalprovider | naar het pakket | op de openstaande post |
| Terugbetaling | WooCommerce, orders/<id>/refunds |
naar het pakket | creditfactuur of creditboeking |
Wat WooCommerce en een boekhoudpakket anders bewaren
Een tarief tegenover een btw-code
WooCommerce geeft elke orderregel een tax_class en zet de toegepaste tarieven in tax_lines, met een rate_code zoals NL-BTW-1. Elk pakket wil iets anders. Exact Online vraagt een code uit de eigen administratie. e-Boekhouden heeft vaste codes: HOOG_VERK_21, LAAG_VERK_9, VERL_VERK voor verlegd en AFST_VERK voor afstandsverkoop binnen de EU. Moneybird vraagt het ID van een tarief uit /tax_rates, en dat ID verschilt per administratie.
Het gevaarlijke deel is wat er gebeurt als de koppeling een veld leeg laat. Moneybird gebruikt dan het standaardtarief van de administratie, dus een regel met 9% wordt stil een regel met 21%. e-Boekhouden vraagt de btw-code verplicht, maar rekent zonder inExVat met bedragen exclusief btw. Een prijs van € 24,20 inclusief btw die als exclusief binnenkomt, wordt € 24,20 x 1,21 = € 29,28 op de factuur. De koppeling stuurt daarom altijd zowel de code als de vlag voor inclusief of exclusief mee. Meer in bedragen en btw mappen.
Twee decimalen tegenover het tarief
De REST API van WooCommerce rondt bedragen standaard af op 2 decimalen. Btw van € 0,8673 wordt € 0,87, en een pakket dat het percentage terugrekent uit de bedragen vindt 21,07% in plaats van 21%. De koppeling vraagt orders op met dp=4 en kiest de code uit het tarief, niet uit een teruggerekend percentage.
Verzendkosten en toeslagen
Verzendkosten staan in WooCommerce in shipping_lines, toeslagen zoals een betaaltoeslag in fee_lines. In de meeste pakketten worden ze een eigen factuurregel met een eigen grootboekrekening. Welk tarief verzendkosten krijgen in een order met zowel 9% als 21%, leg je één keer vast met je boekhouder. De koppeling past die regel op elke order toe en zet het resultaat als aparte regels in het pakket. Zie btw voor webshops.
Grootboekrekeningen per regel
e-Boekhouden vraagt per factuurregel een ledgerId, Exact Online bij een verkoopboeking een GLAccount, Moneybird optioneel een ledger_account_id. WooCommerce kent geen grootboek. De koppeling kiest de rekening uit een tabel per tarief, per land en, als je dat wilt, per productcategorie. Een factuur in e-Boekhouden heeft hooguit 500 regels.
De technische werkelijkheid per pakket
| Pakket | API en toegang | Limiet | Per pagina |
|---|---|---|---|
| Exact Online | REST, OAuth 2.0 | 60 per minuut, 5.000 per dag | 60, sync 1.000 |
| Moneybird | REST, OAuth of persoonlijk token | 150 per 5 minuten per IP-adres | 50, maximaal 100 |
| e-Boekhouden.nl | REST, API-token naar sessietoken | niet gedocumenteerd | 100, maximaal 2.000 |
| Twinfield | SOAP met XML, OpenID Connect | in credits: 1.000 per minuut per IP-adres, 500 per klant en administratie; ongecertificeerde koppelingen 5% daarvan | 1.000 regels per boeking |
| Yuki | SOAP, API-sleutel naar sessie-ID | 1.000 aanroepen per dag per domein, uit te breiden tot 5.000 of 10.000 | n.v.t. |
De gegevens komen uit de documentatie van Moneybird, e-Boekhouden, Exact Online, Twinfield en Yuki (sinds september 2026 Nmbrs Accounting), nagelezen op 3 oktober 2026. SnelStart publiceert zijn B2B-API via een ontwikkelaarsportaal waarvoor je je eerst registreert; limieten staan niet op de openbare pagina's en zijn hier daarom niet vermeld.
Moneybird doorgerekend. 150 verzoeken per 5 minuten is 30 per minuut. Een order kost 3 verzoeken: contact zoeken, factuur aanmaken, betaling registreren. Bij 400 orders per dag is dat 1.200 verzoeken, 40 minuten rekentijd verspreid over de dag. Na een storing van 4 uur met 120 orders in de wachtrij duurt het inhalen 360 / 30 = 12 minuten. De limiet telt per IP-adres, dus elke koppeling die vanaf hetzelfde adres met Moneybird praat, deelt die 150. Boven de grens komt een 429 met Retry-After; de koppeling wacht die tijd af.
Tokens die verlopen. Twinfield geeft bij de authorization code flow een access token van 3.600 seconden en een refresh token met de scope offline_access. Elk SOAP-verzoek draagt naast het token de CompanyCode, en het adres van het cluster komt uit het token. e-Boekhouden geeft op POST /v1/session een sessietoken met een expiresIn; het API-token zelf zie je één keer, bij het aanmaken. Exact Online geeft een access token van 600 seconden. De koppeling ververst elk token voordat het verloopt, vanuit één proces.
Webhooks. Moneybird en Exact Online versturen webhooks, WooCommerce ook. De WooCommerce-webhook loopt via wp-cron en gaat uit na vijf mislukte afleveringen op rij, dus de koppeling haalt daarnaast elk uur gewijzigde orders op met modified_after. Zie WooCommerce REST API koppelen.
Wat een standaardkoppeling hier niet doet
Standaardkoppelingen tussen WooCommerce en boekhoudpakketten documenteren hun eigen grenzen. Deze komen terug bij meerdere aanbieders:
- Alles als concept. Facturen en boekingen komen als concept binnen, omdat wijzigen achteraf in het pakket lastig is. Iemand moet ze daarna nog verwerken.
- Eén kostenplaats en één magazijn per koppeling, vast ingesteld.
- Artikelnummers inkorten of verlengen. Voor SnelStart vraagt een standaardkoppeling het artikelnummerveld van 10 cijfers op te hogen naar 25 tekens, omdat hij eigen artikelen voor verzendkosten en kortingen aanmaakt.
- Alleen volledige terugbetalingen, binnen 30 dagen.
- Geen velden van plugins. Vrije velden op de order worden niet gelezen.
Een gebouwde koppeling zet facturen definitief als je dat wilt, met de grootboekrekeningen, kostenplaatsen en btw-codes van jouw administratie, en verwerkt ook gedeeltelijke terugbetalingen.
Als het misgaat
| Wat er misgaat | Wat de koppeling doet | Wat je ziet |
|---|---|---|
| Tarief zonder code in de tabel | order naar de controlelijst | de order, het tarief en het land |
| 429 van het pakket | wachten op Retry-After of het volgende venster |
niets, tenzij het aanhoudt |
| Factuurnummer bestaat al | order vastgehouden, geen tweede nummer | de order en het nummer |
| Token ingetrokken in het pakket | alle stromen pauzeren | een verzoek om opnieuw toegang te geven |
| Totaal van de regels wijkt af van het ordertotaal | order naar de controlelijst | het verschil in centen |
Voordat een order wordt aangeboden, telt de koppeling de regels, verzendkosten en toeslagen op en vergelijkt die met het ordertotaal in WooCommerce. Een verschil van 1 cent door afronding wordt een afrondingsregel; een groter verschil gaat naar de controlelijst. Voor livegang draait de koppeling als dry run: je ziet per order welke regels, codes en rekeningen er in je pakket zouden komen.
Wij hosten en bewaken de koppeling en passen hem aan als je pakket of WooCommerce iets wijzigt. De platformkant staat op WooCommerce koppeling, de orderstroom op orders, klanten en verzending, en het overzicht op koppelingen. Per pakket: Exact Online koppeling, SnelStart koppeling, Moneybird koppeling, e-Boekhouden koppeling, Twinfield koppeling en Yuki koppeling. Vertel welk pakket je gebruikt en hoe je orders nu boekt.
Veelgestelde vragen
Welk boekhoudpakket werkt het best met WooCommerce?
Elk pakket op deze pagina heeft een API waarmee een order als factuur of boeking binnenkomt. Het verschil zit in wat er daarna kan. Exact Online Handel en Productie geven via de API voorraad per artikel terug aan de shop, net als een ERP zoals AFAS. In de API's van Moneybird en e-Boekhouden staat geen endpoint voor voorraadaantallen; daar boekt de koppeling de verkoop en de betaling.
Moet elke order een eigen debiteur worden?
Niet per se. Zakelijke klanten krijgen een eigen debiteur met btw-nummer, zodat facturen en openstaande posten per klant kloppen. Particulieren kunnen op één verzameldebiteur. De koppeling zoekt eerst op klantnummer, dan op e-mail en btw-nummer, en maakt pas daarna een nieuwe debiteur aan.
Komt het factuurnummer uit WooCommerce of uit het boekhoudpakket?
Uit één van de twee, en dat leg je vast. WooCommerce maakt zelf geen factuurnummers; die komen van een plugin en staan in meta_data op de order. Gebruik je zo'n plugin, dan neemt de koppeling dat nummer over, in e-Boekhouden in invoiceNumber (maximaal 50 tekens, eindigend op een cijfer). Zonder plugin geeft het pakket het nummer uit en schrijft de koppeling het terug bij de order.
Hoe komen betalingen van Mollie in de boekhouding?
Als betaling op de openstaande post van de factuur. De koppeling zoekt die post op het factuurnummer of de referentie. Bij Yuki kan een zoekactie op factuurnummer volgens de documentatie meer dan één post opleveren; daar zoekt de koppeling op het ID dat hij bij het aanmaken heeft bewaard. Zie wat is afletteren.
Kan ik later van boekhoudpakket wisselen?
Ja. De WooCommerce-kant blijft hetzelfde: orders, terugbetalingen en klanten via de REST API. Aan de pakketkant verandert de vertaaltabel voor btw-codes, grootboekrekeningen en debiteuren. Orders die al in het oude pakket staan worden niet opnieuw geboekt; de koppeling begint in het nieuwe pakket vanaf een afgesproken datum.
Vertel wat je nodig hebt
Vertel welke systemen je gebruikt en wat je wilt verbeteren. Je krijgt binnen één werkdag een persoonlijk antwoord. We helpen je de werkzaamheden helder te krijgen en spreken de prijs en planning af voordat je iets toezegt.
- Je weet de prijs en de doorlooptijd voordat je iets toezegt
- Wij zoeken uit welke koppeling het werk uit handen neemt
- Wij verzorgen de bouw, hosting, bewaking en het onderhoud
- Je team krijgt minder overtypwerk en minder uitzoekwerk