Automation

Auto-Posting Shopify Orders: Manual vs Webhook Automation

June 14, 2026 · 7 min · zrapp.group

To automate Shopify order accounting means this: as soon as an order reaches the right status, the invoice appears in your accounting system on its own—no click, no CSV export, no copy-paste. The difference between manual transfer and real automation is the webhook trigger. This article shows how the mechanics work, which events to use, and where the common traps are.

Key takeaways
  • To automate Shopify order accounting means a webhook triggers the invoice in your accounting system without any clicking.
  • Manual transfer doesn't scale and creates gaps in sequential numbering (a GoBD risk).
  • The right trigger matters: payment (paid) instead of order creation (create) prevents invoices for cancelled or unpaid orders.
  • Webhooks write the invoice ID and number back as a metafield onto the Shopify order, so you see the status right in your store admin.

Manual vs Webhook: What's the difference?

With manual transfer you open an order, check the data and click "create invoice". For a handful of orders a day that's fine. As volume grows it becomes a treadmill, and every forgotten order tears a gap into your bookkeeping.

A webhook is a message Shopify sends automatically to your accounting tool the moment a specific event occurs. You click nothing: the order arrives, Shopify fires the event, and the invoice is created, tagged and archived. That's the USP of true automation over plain export tools.

Which Shopify events drive your accounting?

Not every event makes a good trigger. The most common mistake is creating the invoice at order creation. Then you get invoices for orders that are never paid or cancelled immediately. Trigger on payment instead.

  • orders/paid (order was paid): the ideal trigger for invoice creation.
  • orders/create (new order): useful for preparation, but not for the final invoice.
  • refunds/create (refund): triggers a credit note or cancellation invoice.
  • orders/cancelled (cancellation): prevents or voids an invoice already created.
  • orders/fulfilled (shipped): the right moment for an automatic delivery note.

Tax logic runs automatically too

The webhook doesn't just create a document, it also applies the correct tax rule. This is where good automation separates from simple export scripts: domestic delivery at 19% or 7%, EU B2C above the OSS threshold of €10,000 with the destination country's local rate, or reverse charge on EU B2B with a valid VAT ID at 0%.

Special cases run along too: the small business rule under §19 of the German VAT Act (2025 reform: prior year ≤ €25,000, current year ≤ €100,000) is issued without VAT. Encapsulating tax logic in the trigger saves you the manual mapping and reduces errors in your VAT return.

Metafield writeback: The status returns to your store

A one-way street isn't enough. After posting, the webhook writes the invoice ID, invoice number and status back as a metafield onto the Shopify order. So you see right in the store admin which order is already booked, without switching to your accounting system.

This return channel also prevents duplicate invoices: if an order already carries an invoice ID, the automation skips it on the next run. That's the technical foundation that lets you connect Shopify to sevdesk or connect Shopify to Lexware Office without risking inconsistencies.

GoBD and sequential numbering

The German GoBD require records that are unalterable, sequential and archived in an audit-proof way. Manual transfer endangers exactly that: skip an order or post it twice and you get gaps or duplicates in the number sequence. Webhooks create records deterministically in the order payments arrive.

Mandatory details under § 14 of the German VAT Act (full address, tax number, service date, tax rate) are filled by the automation from Shopify order and customer data. If you also want to create invoices automatically from Shopify and output them as an e-invoice in ZUGFeRD or XRechnung format, you benefit from the same trigger principle.

DACH: Austria and Switzerland accounted for

Selling across the entire DACH region needs automation that knows more than just German tax law. In Austria the small business threshold has been €55,000 gross since the 2025 reform; in Switzerland VAT liability kicks in above CHF 100,000 turnover with rates of 8.1%, 2.6% and 3.8%.

The advantage of a webhook-based system: this country logic is configured once in the trigger and applies automatically to every order. You don't have to decide per order which rate applies. When picking the right tool, our comparison of Shopify accounting apps helps, or take a look at our services.

Frequently asked questions

Which Shopify webhook is best for posting orders?

The orders/paid trigger (payment received). That way invoices are only created for genuinely paid orders, not for cancelled or unpaid ones.

What happens on a cancellation or refund?

The events orders/cancelled and refunds/create automatically trigger a cancellation or credit note, so your sequential numbering stays GoBD-compliant.

Can I see in the Shopify admin whether an order is already booked?

Yes. Via metafield writeback the invoice ID, invoice number and status land back on the order, visible in the store admin, without switching to your accounting system.

zrapp Logo

Automation instead of clicking

zrapp posts your Shopify orders to sevdesk or Lexware Office automatically via webhook—with tax automation and metafield writeback.

Discover zrapp
Related articles
Invoicing
Create Shopify invoices automatically: legally compliant
Accounting
Connect Shopify to sevdesk: book orders automatically
Start a project