Skip to main content
E-Commerce
W
s

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.

WooCommercesevDesk

Results & Benefits

90%
Less manual accounting effort
4-6h
Time saved per week
100%
Consistency between shop and accounting
Instant
Invoice dispatch after order received

How it Works

1

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.

2

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.

3

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.

4

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.

5

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.

6

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?
This is the most consequential decision in the project and it depends on the payment method. With prepayment or purchase on account the customer needs the document before paying; with card and wallet payments the incoming payment is the cleaner trigger. We set the rule per payment method and document it.
Why do amounts sometimes differ by a cent?
WooCommerce can calculate tax per line or on the order total, and a proportionally distributed coupon leaves remainder cents. sevDesk recalculates using its own logic. With several tax rates in one order this produces differences of one or two cents. Such orders are held rather than quietly rounded into place.
Are any shop plugins required?
Not for the connection itself; it uses the standard WooCommerce REST API and webhooks. Tax edge cases such as EU rates or capturing a VAT ID depend on whichever plugins the shop already runs. Their field names are identified at project start because they differ from shop to shop.
What happens if an order is edited after invoicing?
It happens regularly, because orders remain editable in the back office. A booked document is never overwritten. Instead a credit note is issued, optionally with a new document, and the change is reported. Without that rule shop and books drift apart permanently and nobody notices until year end.
How reliable are WooCommerce webhooks?
More reliable than their reputation, but dependent on the WordPress installation. On many hosts delivery is tied to the WordPress scheduler and therefore to site traffic, and security or caching plugins block outbound calls. A scheduled reconciliation therefore runs alongside them to pull in whatever was missed.
How do you stop a staging site from issuing real invoices?
This is the most common incident in WordPress projects: a copy of the site is spun up for testing and keeps the production credentials. The shop address is therefore checked against an expected value on every run, and testing runs against a separate sevDesk account.
Who assigns the invoice number?
sevDesk, unless agreed otherwise. If the shop also produces numbers through an invoicing plugin, two number ranges exist for the same transaction and the customer may receive two different documents. Before the build we decide which system issues the document the customer actually sees.
Does it work with WooCommerce Subscriptions?
Yes. Every renewal creates its own order and therefore its own document. What needs deciding is whether revenue should be deferred across the period, for example on annual plans, and how mid-period cancellations are handled. Both are agreements with your tax adviser rather than technical questions.
What does it cost to run and how long does setup take?
A shop with one tax territory, one currency and two or three payment methods is running within a few working days. EU tax rates, reverse charge, multiple currencies or subscriptions push that to one to three weeks. An entry scope starts from 5,000 EUR, with ongoing tool costs of 50 to 200 EUR per month.
What does this integration explicitly not do?
It does not correct a wrong tax class on a product, does not produce the VAT return and does not replace review by your tax adviser. It will not make unstable WordPress hosting stable, does not migrate historical bookkeeping, does not manage stock levels, and is not a certified interface.

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.