Moneybird en WooCommerce
Moneybird WooCommerce koppeling
Elke betaalde WooCommerce-order staat als verstuurde factuur met nummer en datum in Moneybird, op het juiste contact, met de betaling er al op geregistreerd. Terugbetalingen worden creditfacturen en betaalde facturen op rekening zetten de order in WooCommerce door. Gebouwd op jouw administratie, en daarna door ons gedraaid en bewaakt.
Wat je tussen Moneybird en WooCommerce koppelt
Moneybird is een boekhoud- en factuurpakket zonder voorraad. Bij deze combinatie gaat het dus om geld: de order wordt een factuur, de betaling wordt een betaling op die factuur, en een terugbetaling wordt een creditfactuur. Aan de Moneybird-kant loopt dat over de REST API op /api/v2/<administratie-id>/, aan de WooCommerce-kant over de REST API v3.
| Stroom | Richting | WooCommerce | Moneybird |
|---|---|---|---|
| Order | naar Moneybird | GET /wc/v3/orders?dp=4 |
sales_invoices of external_sales_invoices |
| Klant | naar Moneybird | customer_id, billing |
contacts, met customer_id |
| Betaling | naar Moneybird | date_paid, transaction_id |
register_payment |
| Terugbetaling | naar Moneybird | orders/<id>/refunds |
duplicate_creditinvoice |
| Betaald op rekening | naar WooCommerce | status processing of completed |
webhook sales_invoice_state_changed_to_paid |
| Factuurnummer | naar WooCommerce | meta_data op de order |
invoice_id na versturen |
De eerste keuze is de route. Een verkoopfactuur maakt Moneybird zelf: nummer, huisstijl, versturen en herinneringen. Een externe verkoopfactuur is een factuur die al ergens anders is gemaakt, bijvoorbeeld door een factuurplugin in WooCommerce, en die Moneybird alleen boekt. De rest van deze pagina gaat uit van de verkoopfactuur, omdat de meeste Moneybird-gebruikers daar hun facturen al mee maken. Hoe een order in andere pakketten landt staat op WooCommerce koppelen aan je boekhoudpakket.
Welk systeem is leidend, per gegeven
| Gegeven | Leidend | Richting | Gedrag |
|---|---|---|---|
| Order, regels, bedragen | WooCommerce | naar Moneybird | één keer, reference als sleutel |
| Factuurnummer en factuurdatum | Moneybird | naar WooCommerce | bij het versturen |
| Btw-tarief per regel | WooCommerce | naar Moneybird als tax_rate_id |
via een tabel naar jouw tarieven |
| Grootboekrekening | Moneybird | vaste tabel in de koppeling | per tarief, land of categorie |
| Contact, adres, btw-nummer | Moneybird na aanmaken | eerste keer uit WooCommerce | wijzigingen naar de controlelijst |
| Betaling bij de checkout | WooCommerce | naar Moneybird | met de transactie-id |
| Betaling op rekening | Moneybird | naar WooCommerce | via de webhook |
| Producten en voorraad | WooCommerce | blijft in WooCommerce | Moneybird heeft geen voorraad |
Wat Moneybird en WooCommerce anders bewaren
Een concept heeft geen nummer en geen datum
Een verkoopfactuur in Moneybird begint als draft. In die staat is invoice_id, het factuurnummer, null. Laat je invoice_date leeg, dan vult Moneybird de datum pas in bij het versturen. Een factuur die als concept blijft staan, heeft dus geen nummer, en de omzet staat niet in de periode waarin de order betaald is.
Dat speelt rond een kwartaalgrens. Een order die op 30 september om 23:50 betaald wordt en als concept binnenkomt, krijgt bij versturen op 2 oktober de datum 2 oktober en valt in het vierde kwartaal. De koppeling zet daarom invoice_date zelf, uit date_paid omgerekend naar Nederlandse tijd, en verstuurt de factuur direct. Met delivery_method Manual krijgt hij een nummer zonder dat Moneybird iets naar de klant mailt. Zie datums en tijdzones.
Een tarief-ID en een vlag per factuur
WooCommerce legt per order vast of de prijzen inclusief btw zijn, in prices_include_tax. Moneybird heeft prices_are_incl_tax op de factuur, en zonder waarde neemt hij de instelling van de workflow. Per regel vraagt Moneybird een tax_rate_id uit /tax_rates; zonder ID kiest hij het standaardtarief van de administratie. Een regel met 9% wordt dan stil 21%. De koppeling stuurt beide altijd mee. Meer in bedragen en btw mappen.
Klanten: een eigen nummer of een gast
Een contact in Moneybird heeft een customer_id: tekst, uniek in de administratie, en automatisch uitgedeeld als je hem leeg laat. Er is een eigen endpoint om op dat nummer te zoeken, contacts/customer_id/<nummer>. De koppeling gebruikt dat voor geregistreerde klanten: WooCommerce-klant 311 wordt customer_id WC-311, en de volgende order vindt hem met één verzoek.
Een gast heeft in WooCommerce customer_id 0. Die zoekt de koppeling met query op e-mailadres en btw-nummer, en alleen bij geen resultaat maakt hij een nieuw contact. Moneybird vraagt daarvoor een niet-lege company_name, firstname of lastname. Adressen passen goed: Moneybird heeft address1 en address2 als vrije regels, net als WooCommerce, dus er hoeft geen huisnummer gesplitst te worden. Het land is in beide een code van twee letters.
Betalingen en de transactie-id
Een betaling op een factuur heeft verplicht payment_date en price, en optioneel transaction_identifier. Daar zet de koppeling de transaction_id van de WooCommerce-order in, de id van de betaalprovider. Met financial_account_id gaat de betaling op de tussenrekening van die provider, zodat de uitbetaling later tegen één rekening wordt afgeletterd en niet tegen 300 losse facturen.
De technische werkelijkheid van deze combinatie
| Onderwerp | WooCommerce | Moneybird |
|---|---|---|
| Limiet op verzoeken | geen gedocumenteerd op wc/v3 |
150 per 5 minuten per IP-adres |
| Per pagina | 10 standaard | 50 standaard, maximaal 100 |
| Wijziging melden | webhook, uit na meer dan 5 mislukte afleveringen | webhook, 10 nieuwe pogingen, Idempotency-Key |
| Toegang | Consumer Key en Secret | OAuth of persoonlijk API-token |
| Id's | gehele getallen | grote getallen, als tekst te lezen |
Nagelezen op 3 oktober 2026 in de documentatie van Moneybird en de WooCommerce REST API.
Vijf verzoeken per order, doorgerekend. Met een verkoopfactuur kost een order: contact zoeken, factuur aanmaken, versturen en betaling registreren. Dat zijn 4 verzoeken, en 5 voor een nieuwe klant. Op een drukke dag met 300 orders, waarvan 120 van nieuwe klanten:
300 orders x 4 verzoeken = 1.200
120 nieuwe contacten = 120
totaal = 1.320 verzoeken
1.320 / 150 per 5 minuten = 8,8 vensters = 44 minuten
Verdeeld over de dag is dat geen probleem. Na een storing met 120 orders in de wachtrij is het 120 x 4 + nieuwe contacten, ruim 500 verzoeken en dus ongeveer 17 minuten inhalen. Boven de grens geeft Moneybird een 429 met Retry-After; de koppeling wacht die tijd af. De limiet telt per IP-adres, dus alles wat vanaf hetzelfde adres met Moneybird praat, deelt die 150.
Grote id's. Moneybird adviseert id's als tekst te lezen, omdat het gehele getallen zijn die groter zijn dan sommige JSON-parsers aankunnen. Een id die als getal wordt ingelezen en afgerond, verwijst naar een ander contact of geen. De koppeling bewaart ze als tekst.
Een betaling op rekening terug naar de shop. Moneybird stuurt een webhook bij sales_invoice_state_changed_to_paid en probeert een mislukte aflevering 10 keer opnieuw, met een Idempotency-Key per push. De koppeling gebruikt die sleutel om een push maar één keer te verwerken en zet de WooCommerce-order dan door naar de volgende status.
Wat een standaardkoppeling hier niet doet
Standaardkoppelingen tussen WooCommerce en Moneybird documenteren hun eigen grenzen:
- Facturen als concept. Ze komen als concept binnen, zodat ze nog aan te passen zijn. In Moneybird betekent dat: geen nummer, geen datum, en iemand moet ze elke dag versturen.
- Betaalproviders via een aparte dienst. De betaling en de uitbetaling van de provider lopen via een losse koppeling of een tussenrekening die je zelf bijhoudt.
- Alleen volledige terugbetalingen, binnen een vaste termijn.
- Geen velden van plugins. Een btw-nummer of inkoopreferentie uit
meta_datagaat niet mee.
Een gebouwde koppeling verstuurt de factuur direct met de juiste datum, registreert de betaling met de transactie-id en zet ook gedeeltelijke terugbetalingen door.
Als het misgaat
| Wat er misgaat | Wat de koppeling doet | Wat je ziet |
|---|---|---|
429 met Retry-After |
wacht de aangegeven tijd, de wachtrij blijft staan | niets, tenzij het aanhoudt |
| 422 bij aanmaken | order naar de controlelijst | de fouten uit de body van Moneybird |
| 401 | alle stromen pauzeren | een melding dat het token ingetrokken is |
Tarief zonder tax_rate_id in de tabel |
order vastgehouden | de order, het tarief en het land |
| Verbinding weg na het aanmaken | eerst find_by_reference op WEB-10482, dan pas opnieuw |
niets, de factuur staat er één keer |
| WooCommerce-webhook uitgeschakeld | de controleronde haalt orders op met modified_after |
een regel in het logboek |
Een order die blijft falen bewaart de koppeling met de oorspronkelijke inhoud, en hij biedt hem opnieuw aan zodra de oorzaak is opgelost. Voor livegang draait hij als dry run tegen een sandbox-administratie van Moneybird: je ziet per order welk contact, welke regels, tarieven en datum de factuur zou krijgen.
Wij hosten en bewaken de koppeling en passen hem aan als Moneybird of WooCommerce iets wijzigt. De systeemkant staat op Moneybird koppeling, de platformkant op WooCommerce koppeling, en alle stromen op koppelingen. Verwante combinaties: WooCommerce SnelStart koppeling en WooCommerce Exact Online koppeling. Vertel hoe je nu factureert en welke betaalprovider je gebruikt.
Veelgestelde vragen
Wordt een order in Moneybird een verkoopfactuur of een externe factuur?
Dat hangt af van wie de factuur maakt. Maakt Moneybird hem, met jouw nummering en huisstijl, dan wordt het een verkoopfactuur (sales_invoices). Maakt een factuurplugin in WooCommerce hem al, dan wordt het een externe verkoopfactuur (external_sales_invoices) met het nummer uit de plugin als reference en eventueel de pdf als bijlage. Twee factuurnummers voor één order wil je niet, dus het is het een of het ander.
Krijgt de klant de factuur van Moneybird of van WooCommerce?
Dat kies je per route. De koppeling verstuurt een verkoopfactuur met delivery_method Email, Peppol of Manual. Bij Manual krijgt de factuur een nummer en datum zonder dat Moneybird iets mailt; de klant krijgt dan alleen de orderbevestiging van WooCommerce. Bij Email stuurt Moneybird de factuur naar het adres van het contact, met een UBL-bestand als je dat wilt.
Wordt de transactie-id van de betaalprovider doorgezet?
Ja. De betaling op de factuur heeft een veld transaction_identifier. De koppeling zet daar de transaction_id van de WooCommerce-order in, dus de id van de betaalprovider. Bij het afletteren van de uitbetaling van die provider zie je in Moneybird welke betaling bij welke order hoort. Zie wat is afletteren.
Kan Moneybird de voorraad in WooCommerce bijwerken?
Nee. De API van Moneybird heeft wel producten, met prijs, btw-tarief en grootboekrekening, maar geen voorraad. Voorraad in WooCommerce komt dan uit WooCommerce zelf of uit een magazijnsysteem. Wil je dat Moneybird de productgegevens levert, dan zet de koppeling product_id op de factuurregel, zodat tarief en grootboekrekening van het product komen.
Hoe gaat een terugbetaling uit WooCommerce naar Moneybird?
Als creditfactuur. Moneybird heeft daarvoor duplicate_creditinvoice, dat van een verkoopfactuur een nieuwe creditfactuur maakt, en register_payment_creditinvoice, dat de twee tegen elkaar wegboekt. Bij een gedeeltelijke terugbetaling past de koppeling de regels van de creditfactuur aan op de bedragen uit de refund in WooCommerce voordat hij hem verstuurt.
Kunnen zakelijke klanten één factuur per maand krijgen?
Ja, als Moneybird de facturen maakt. Een verkoopfactuur kan met sending_scheduled op een datum worden ingepland, en met mergeable voegt Moneybird ingeplande facturen voor hetzelfde contact met dezelfde factuurdatum, valuta en huisstijl samen tot één. Orders op rekening krijgen zo één verzamelfactuur. Zie bestellen op rekening.
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