Connect WooCommerce to sevDesk: Automated Invoicing
WooCommerce orders become contacts, invoices and credit notes in sevDesk. This page documents the reference architecture: which order fields and tax classes are evaluated, why the triggering order status is the single most consequential decision in the project, and which cases around coupons, partial refunds and reverse charge break most often.
Results & Benefits
How it Works
Receive the Order
The webhook announces a new or changed order. Event identifier and order number are stored before anything else happens. WooCommerce fires update events very frequently, including on every note and status transition, so without that lock one order produces several invoices.
Re-read the Order
Processing reloads the order over the REST API with line items, tax lines, shipping, fees, coupons and refunds. That way any edit made in the shop back office between trigger and processing is taken into account rather than quietly lost.
Apply the Status Rule
Payment method and status together decide whether an invoice, a credit note or nothing is created. Cancelled and failed orders produce no document. Orders that move from paid to cancelled after a document was already booked go onto the clarification list instead of being silently reversed.
Match the Contact
Lookup runs against the WooCommerce customer reference stored in sevDesk, falling back to the normalised email address. Guest checkouts without an account are the normal case and the most common source of duplicates. Billing and shipping addresses are carried across separately, because they are allowed to differ.
Create and Verify the Document
The invoice or credit note is created with all line items, shipping, fees and tax lines; sevDesk assigns the document number. The order number is written as a reference. Net, tax and gross totals are then checked against the order before the document is finalised.
Payment Matching and Monitoring
Once the shop reports the order as paid, the document is marked paid in sevDesk or matched against the payment transaction. A daily reconciliation counts orders against documents and reports every gap to a named person, not into a log file nobody opens.
Use Cases
Choosing the Triggering Order Status
WooCommerce uses processing, on-hold, completed, cancelled, refunded and failed. With card payments processing already means paid; with bank transfer on-hold means unpaid. Which status produces which document is defined per payment method. A single rule for all methods either issues invoices too early or delivers them too late.
Mapping Tax Classes Properly
Every line carries a tax class and a calculated tax line. Reduced rate, standard rate and tax-exempt supplies map to the matching tax rule and revenue account in sevDesk, separated by whether SKR03 or SKR04 is in use. A product with the wrong tax class otherwise books incorrectly, quietly, for months.
Coupons and Rounding Differences
WooCommerce distributes a percentage coupon proportionally across line items. With more than one tax rate in an order this leaves remainder cents, and the sum of line-level tax drifts from tax calculated on the order total. The integration compares both totals and holds the order rather than issuing an invoice with a different gross amount.
Partial Refunds as Their Own Document
WooCommerce records refunds as separate objects carrying the affected line items and amounts. Those become a credit note in sevDesk. An invoice that has already been booked is not edited retroactively. Where only shipping is refunded, the credit note follows the shipping tax rate rather than the goods rate.
Reverse Charge Living in a Plugin Field
The VAT ID for intra-community B2B supplies does not come from the WooCommerce core data model but from an extra field belonging to whichever tax plugin the shop runs. Which meta key that is gets identified once per shop and documented. After a plugin change it is the first thing to re-verify.
Delivery Despite WordPress
On many installations WooCommerce webhooks are processed through the WordPress scheduler, which ties delivery to site traffic, caching plugins and host availability. A scheduled reconciliation over the REST API therefore runs alongside them and picks up any order that never produced a document.
Frequently Asked Questions
Which order status should trigger the invoice?
Why do amounts sometimes differ by a cent?
Are any shop plugins required?
What happens if an order is edited after invoicing?
How reliable are WooCommerce webhooks?
How do you stop a staging site from issuing real invoices?
Who assigns the invoice number?
Does it work with WooCommerce Subscriptions?
What does it cost to run and how long does setup take?
What does this integration explicitly not do?
Connect WooCommerce + sevDesk?
We set up your integration — tailored to your processes. First, five minutes to check whether the process is worth automating at all.