Skip to main content

Commerce

ERPNext Shopify Integration: Sync Orders, Stock & Invoices (2026)

Sync Shopify with ERPNext: orders in, stock out, invoices in ERPNext, via Frappe's Ecommerce Integrations app or n8n, and Shopify's 2026 app change.

Updated 14 Oct 20268 min readBy ManojFirst published 20 Jul 2026

You connect Shopify to ERPNext so orders, customers, stock and invoices live in one system instead of two. There are two working paths: Frappe's Ecommerce Integrations app, or your own webhook flow through n8n. This guide walks both, and covers the change Shopify made on 1 January 2026 to how new apps get API access. If you are still deciding whether to keep Shopify at all, read why businesses leave Shopify first: connecting it is usually cheaper than replacing it.

Short answer

ERPNext syncs with Shopify through Frappe's Ecommerce Integrations app. It pulls Shopify orders into ERPNext as Sales Orders, creates missing customers and items, can raise the Sales Invoice when Shopify marks the order paid and the Delivery Note when it ships, and pushes ERPNext stock levels back to Shopify on a schedule. For rules the app's settings can't express, an n8n webhook flow is the flexible alternative.

I lead ERPNext and Frappe implementations at MithTech, a team of Frappe specialists in Bengaluru. Shopify is the storefront we are most often asked to connect to ERPNext: D2C brands start on it for the shop, then outgrow its back office once GST invoicing, several warehouses and purchase planning come in. Honest take: the app handles the common case well, but Shopify's January 2026 change to custom apps means many older setup guides no longer match what you see in the Shopify admin.

Which ERPNext Shopify connector should you use in 2026?

Use Frappe's Ecommerce Integrations app by default. The older standalone erpnext_shopify app is deprecated and its features moved into Ecommerce Integrations, which is maintained on GitHub and supports current ERPNext versions. Build an n8n flow only when your mapping rules outgrow the app's settings.

OptionSuitsSync directionCustom logic
Ecommerce Integrations appOne Shopify store, standard order and stock syncOrders in, stock outLimited, set in Shopify Settings
n8n webhook flowUnusual mapping, several stores, conditional rulesWhatever you buildFull control
Third-party paid connectorsTeams that want a vendor-supported productVendor-definedVendor-defined

The app covers most single-store setups. n8n earns its place with rules like "sync COD orders only after confirmation" or "split one Shopify order across two ERPNext warehouses", which a settings screen can't express. If the question is the whole stack, the open-source Shopify alternative post covers when to keep Shopify and when to move the storefront too. If the shop could run on ERPNext itself with one catalogue, Commera, BWH Tech's open-source app, puts the store on ERPNext with nothing copied between systems.

Skimmable summary: default to the Ecommerce Integrations app; use n8n when your mapping rules get complex.

What actually syncs between Shopify and ERPNext?

Orders come from Shopify into ERPNext as Sales Orders, and the app creates any missing customer or item from the order. Stock goes the other way: a scheduled job pushes ERPNext quantities to Shopify, with each ERPNext warehouse mapped to a Shopify location. Invoices and delivery notes are ERPNext documents.

Orders → Sales Orders

Each Shopify order becomes an ERPNext Sales Order. Missing customers and items are created from the order data.

Stock → Shopify

ERPNext holds the stock figure. A scheduled job pushes quantities to the mapped Shopify locations; Frappe's docs suggest every 30 to 60 minutes.

Invoices and delivery notes in ERPNext

Switch on the options and the app creates the Sales Invoice when Shopify marks an order paid, and the Delivery Note when it ships. Your GST setup and HSN codes live here.

Items to Shopify

New ERPNext items can be uploaded to Shopify, as drafts unless you choose otherwise, so you don't keep two product masters by hand.

The app does not push finished tax invoices back to the Shopify order. For an Indian seller that is usually right: the GST invoice belongs in ERPNext, not in Shopify, which does not create a GST-compliant bill.

A scheduled job checks on an interval and sends only changed stock; webhooks vs polling plots that check against a webhook for each change.

Between two runs, Shopify's count can lag ERPNext's, and a second channel can take the last unit before the sync lands; eventual consistency in stock compares four designs.

Skimmable summary: orders and customers come in, stock goes out on a schedule, and invoices and delivery notes are made in ERPNext.

How do you set up the Shopify connector step by step?

Setup has two halves: get API access from Shopify, then fill in Shopify Settings in ERPNext. The Shopify half changed on 1 January 2026. Merchants can no longer create new legacy custom apps from the admin's Develop apps page; apps created before then, and their tokens, keep working. New apps are created in Shopify's Dev Dashboard, which gives you a Client ID and secret to exchange for an access token instead of showing a token on screen.

1

Install the Ecommerce Integrations app

On Frappe Cloud, install it from the Marketplace. On a self-hosted bench, run bench get-app ecommerce_integrations, then bench --site <site> install-app ecommerce_integrations and bench migrate. Check it appears in your installed apps.

2

Create or reuse the Shopify app

If the store already has a legacy custom app from before 1 January 2026, you can keep using it. Otherwise go to Settings → Apps → Develop apps and follow the link to build the app in the Dev Dashboard. Name it something like "ERPNext Sync".

3

Grant Admin API scopes

Give the app read and write access to orders, products, inventory and customers, for example read_orders, write_orders and the product and inventory scopes, so both directions of the sync work.

4

Get the access token and secret

A legacy custom app shows its Admin API access token once, when you install it: copy it then, or you will have to reinstall. A Dev Dashboard app gives you a Client ID and secret, which you exchange for an access token through Shopify's token endpoint. Keep both values out of shared documents.

5

Fill in Shopify Settings in ERPNext

Enter the shop URL, the access token and the shared secret. Set the company, default warehouse, customer group and naming series, map ERPNext warehouses to Shopify locations, and map each Shopify tax line to an ERPNext tax account.

6

Test with one real order

Place a small test order in Shopify. Check that a Sales Order appears in ERPNext with the right customer, items, warehouse and taxes. Then change a stock quantity in ERPNext and check it reaches Shopify after the next sync.

Skimmable summary: reuse a pre-2026 custom app or build one in the Dev Dashboard, grant order, product and inventory scopes, get the token, then map company, warehouses and tax accounts in ERPNext.

When should you use n8n instead of the connector?

Choose n8n when your rules are too specific for a settings screen: conditional syncing, custom field mapping, several stores into one ERPNext, or enriching an order before it lands. n8n listens to a Shopify webhook such as orders/create, reshapes the payload, then calls the ERPNext REST API to create exactly the document you want.

A typical n8n flow:

1

Webhook trigger

Add a Shopify webhook for orders/create (and orders/paid if you only act on paid orders) pointing at an n8n Webhook node. Shopify expects a quick 200 response, so keep the first node fast.

2

Transform and map

Use n8n nodes to reshape the order: map SKUs to ERPNext item codes, pick the warehouse, apply your tax template and fill any custom fields.

3

Create the ERPNext document

Call the ERPNext REST API with an API key and secret to create the Sales Order (or a draft Sales Invoice, if that is your flow). Log failures so nothing is lost silently.

n8n is open source and self-hostable, like ERPNext. For authentication, the REST endpoints and idempotency, see the ERPNext and n8n integration guide. For B2B and headless builds, the Medusa.js vs Shopify Plus for B2B comparison is the companion read.

Each extra flow in an ERPNext Shopify integration is one more link to keep. When Shopify is one of several systems that must reach ERPNext, point-to-point vs a hub counts the links and shows what a hub costs.

Skimmable summary: use n8n when you need conditional logic, custom mapping or several stores.

How does GST invoicing work once orders sync?

GST invoicing stays in ERPNext, where your tax templates, HSN codes, place of supply and e-invoicing sit. The Shopify order comes in as a Sales Order, and the Sales Invoice is raised from it, by the app when payment is marked or by your team. In India, GST, e-invoicing and e-way bills in ERPNext come through the India Compliance app (Resilient Tech's, installed alongside ERPNext).

Shopify sends tax as one combined line; it can't hold separate CGST and SGST lines. So decide how the Shopify tax maps to your ERPNext accounts and templates, and have your CA check one intra-state and one inter-state invoice before go-live. Keeping invoicing in ERPNext also gives one audit trail across Shopify, counter and B2B sales, instead of one per platform.

Skimmable summary: orders sync in, and the GST invoice is raised in ERPNext, where India Compliance handles GST and e-invoicing.

Frequently asked questions

+

Is the old ERPNext Shopify app still usable?

The original erpnext_shopify app is deprecated. Its features moved into Frappe's Ecommerce Integrations app, which is maintained. For any new setup, install Ecommerce Integrations.

+

Does the connector create GST invoices in Shopify?

No. It pulls Shopify orders into ERPNext as Sales Orders and keeps stock in sync; it does not push tax invoices back to Shopify. The GST invoice is raised in ERPNext, where your tax templates, HSN codes and e-invoicing are set up.

+

What changed with Shopify apps in January 2026?

From 1 January 2026, merchants can't create new legacy custom apps in the Shopify admin; existing ones keep working. New apps are built in Shopify's Dev Dashboard, which issues a Client ID and secret that you exchange for an access token. Check that your ERPNext connector version accepts a token obtained this way before you rely on it.

+

Can I sync inventory in real time?

Not with the app's default setup. Stock goes from ERPNext to Shopify on a scheduled job whose frequency you set in minutes; Frappe's docs suggest 30 to 60. If you need a store event to trigger an update straight away, a webhook-driven n8n flow gives you that control.

+

Does ERPNext charge per user like Shopify apps do?

No. ERPNext is open source under GPLv3, with no licence fee and no seat fee. Your costs are hosting and implementation. Shopify and paid connectors charge subscriptions; check each vendor's own pricing page.

+

Can I connect more than one Shopify store?

Not through one copy of the app: its Shopify Settings hold one shop per ERPNext site. To bring several stores into one ERPNext, use an n8n flow with per-store mapping, or a paid connector that supports it.

See an online order run through ERPNext on the order demo, or read how ERPNext fits the rest of your operation.

Your next step

Want your Shopify store wired into ERPNext cleanly?

See it live

Low stock reorders itself

Stock dips below minimum, suppliers quote in their portal, and the chosen one gets the order.

You end with a purchase order sent · 4 screens · about 6 min

No sign-up, no card, no account.

Next step · Commerce

Now see what a store you own would look like

How we build and run Medusa storefronts and B2B portals connected to ERPNext, and when staying on a hosted platform is the better call.

Comments & ratings

No comments yet. Start a new discussion.

0

Manoj · Published on 20 July 2026

Worked with us? Leave a Google review

Questions about this? Talk to the team.

Book a 30-minute Google Meet, WhatsApp us, or send a message. The engineer who works on this replies.

Send us a message
Your details go to our team's CRM and are used only to reply.