To connect WooCommerce or PrestaShop to your ERP using n8n you need three pieces: a webhook that leaves the store when the order is confirmed, an n8n workflow that maps the fields to the ERP’s format, and error handling with retries. Syncing the store with an accounting ERP is the most common use case we see from people asking about n8n. Dedicated SaaS connectors for that ERP usually carry a recurring monthly fee; a self-hosted n8n with the same logic only costs the VPS. Here’s the practical guide.
Why does n8n usually win here?
Dedicated SaaS connectors (WooCommerce to QuickBooks, PrestaShop to Xero, etc.) do one thing well and nothing else. If you need to vary the behaviour (filter orders by condition, map custom fields, send the same order to two systems), you hit the connector’s limits and end up paying for them to add your case.
With n8n you get the native webhook endpoint, arbitrary data manipulation, branching, exponential retry and logging yourself. The price is you have to build it, but once built it adapts to whatever you ask without going through an external roadmap.
Base setup: n8n on a VPS
Self-hosted n8n installs with Docker Compose on any reasonable VPS. The official guide covers the detail; the essentials:
- VPS with Docker and docker-compose installed.
- A docker-compose file with n8n + postgres as the database (not SQLite in production).
- A subdomain with SSL pointing to the VPS, certificate via certbot or panel.
- Environment variables: admin user, password, public domain, timezone.
- Automatic backup of the postgres volume (n8n stores workflows and credentials there).
Common trap: forgetting the backup. n8n stores all state in postgres. If that volume is lost, you lose every workflow and credential. Daily backup minimum, off the VPS.
Webhook from the store on order confirmation
Both WooCommerce and PrestaShop can fire a webhook when an order is confirmed. In WooCommerce it’s under Settings > Advanced > Webhooks; in PrestaShop it’s done via a module or a code hook.
The webhook must be sent to an n8n endpoint you create as the first step of the workflow. n8n gives you a unique URL per workflow. Paste that URL into the store’s webhook configuration and choose the “order completed” event or equivalent.
Quick validation: complete a test order in the store and check that n8n receives the payload. If it doesn’t arrive, verify the VPS is reachable from the webhook’s public URL (firewall, SSL, DNS).
Workflow for QuickBooks
QuickBooks Online has a documented REST API. The basic workflow:
- Webhook trigger from the store.
- A function to map the fields: order → QuickBooks invoice. Map order ID, customer data, line items, taxes, total.
- HTTP request to the QuickBooks API to create the invoice. OAuth token stored as a credential in n8n.
- QuickBooks responds with the created invoice ID.
- HTTP request back to the store to save the QuickBooks invoice ID on the order (meta field).
- On error: notification to Slack or email with detail.
For QuickBooks specifically, the fields that most often break the mapping are: new vs existing customers (you must check first), order-level vs line-level discounts, and non-standard tax codes.
Workflow for Xero
Xero has a modern REST API but a strict OAuth 2.0 flow and tenant model. The workflow can be:
- Webhook trigger.
- Field mapper. For Xero, the account codes, tax rates and the contact ID are critical: get them wrong and Xero rejects the invoice with an unhelpful message.
- HTTP request to Xero, including the tenant ID header. Token refresh handled by n8n’s credential.
- Confirmation and recording of the invoice number Xero assigns.
- Error handling with exponential retry (Xero rate-limits under load).
For Xero, check first whether the connected app has the right scopes enabled; missing scopes are the most common silent failure.
Workflow for Zoho Books or file-based ERPs
Zoho Books has an API similar in spirit to the above. Some older or local ERPs are less API-friendly: it’s common for the ERP to have an import folder (FTP or local) where it picks up XML or CSV files with pending orders. The workflow adapts:
- Webhook trigger.
- Mapper to XML/CSV in the exact format the ERP expects.
- Upload to FTP or write to an accessible local folder.
- Log entry to debug errors.
The ERP then processes that folder in its internal cron. Latency is higher (minutes to hours) but the flow is robust and doesn’t depend on the API.
Error handling: retry and notification
Every ERP-sync workflow must account for failures. Three non-negotiables:
- Exponential retry. If the ERP API fails, don’t retry immediately: 1 minute, 5 minutes, 15 minutes, 1 hour, 6 hours. n8n supports this natively in the HTTP node.
- Notify a human. After N failed retries, message Slack, email or WhatsApp the person responsible. Better to learn of a failure late than not at all.
- Persistent queue. If the ERP is down for hours, pending orders can’t be lost. n8n keeps the queue in postgres while it retries.
The shortcut: the Zeyvro n8n Connector module
The Zeyvro n8n Connector module for PrestaShop 8 handles the store side (WooCommerce version coming soon): a webhook with robust authentication (HMAC signature), a normalised payload with all the order data in a consistent format, filtering options in the store before data leaves, and integrated logging with resend.
When it pays off: if your team doesn’t want to build the webhook endpoint from scratch, especially in PrestaShop where native configuration is more limited. When it doesn’t: if you already have infrastructure that exposes orders in the right format.
When neither the module nor the manual setup pays off
If your monthly volume is very low (under 50 orders a month), investing in automating the sync doesn’t pay off versus doing it by hand or with a weekly export. n8n makes sense when the flow is frequent enough that manual errors and time spent become an operational problem.
If you want to understand the differences between tools first, read the n8n vs Zapier vs Make comparison. If your integration with a specific ERP is getting stuck, email us at hola@zeyvro.com with the context.
Frequently asked questions
Can I connect PrestaShop to QuickBooks without coding?
Yes. With n8n you build the flow by dragging nodes (webhook → mapper → HTTP to the QuickBooks API). The “coding” reduces to field mapping, done with expressions rather than code.
Which ERP is easiest to integrate with n8n?
Those with a documented REST API, like QuickBooks, Xero or Zoho Books, are the most direct. Older or on-premise ERPs are more work: they often need an intermediate webservice or FTP/CSV folder import.
What happens if the ERP is down when an order comes in?
A well-built workflow uses exponential retry and a persistent queue: n8n stores the order in its database and retries until the ERP responds, losing none.
Do I need a module or is the store’s webservice enough?
For WooCommerce, native webhooks may be enough. For PrestaShop, native configuration is more limited and a connector module saves building the endpoint and authentication by hand.