SYSPRO and Shopify integration
SYSPRO runs manufacturing and distribution. Shopify runs your online storefront and processes orders. Connecting the two keeps your sales ledger current and your inventory levels accurate. Orders placed on Shopify flow into SYSPRO as customer invoices, payment and refund records post to your accounts receivable module, and inventory levels sync from SYSPRO back to Shopify so customers see accurate stock. ml-connector handles the different APIs on each side and moves the data as orders flow through your business.
What moves between them
The main flow runs from Shopify into SYSPRO. When a customer places an order on Shopify, the order/create webhook fires immediately. ml-connector reads the order detail (items, quantities, prices, customer email), looks up the matching SYSPRO customer account and inventory SKUs, and posts a customer invoice into SYSPRO's AR module. When the order is paid, the orders/paid webhook sends payment confirmation, and ml-connector posts an AR receipt. If the order is cancelled or a refund is issued, ml-connector posts the reversal. Inventory levels flow the opposite direction: ml-connector polls SYSPRO inventory balances on a regular schedule and syncs available quantities to Shopify inventory levels so the storefront reflects current stock. Customer records are also kept in sync so Shopify customer emails and addresses match SYSPRO AR accounts.
How ml-connector handles it
ml-connector stores both credential sets encrypted and decrypts the SYSPRO session token on each call, handling token expiry by re-logging in to the Utilities/Logon endpoint. It receives Shopify webhooks at a registered endpoint, validates the X-Shopify-Webhook-Id header signature, and queues the order for posting. Before posting the invoice, it looks up the Shopify product in SYSPRO's inventory by matching SKU or product name, maps the Shopify customer email to an SYSPRO ArCustomer account (creating a new one if needed), and determines the GL account and cost center where the sale should post. SYSPRO session tokens are session-bound and can expire, so ml-connector handles token renewal transparently. Refunds and cancellations are handled by posting offsetting invoice records with negative amounts. Shopify rate limits do not affect the webhook path (Shopify handles queueing), but inventory polling uses exponential backoff to respect rate limits. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-market manufacturer uses SYSPRO ERP for production, procurement, and finance, and runs a Shopify storefront to sell finished goods directly to customers. Before the integration, the sales team exported orders from Shopify twice daily and manually entered them as customer invoices in SYSPRO, then updated inventory balances by hand when stock levels changed. The AR team spent time chasing discrepancies between Shopify payments and the AR ledger. With SYSPRO and Shopify connected, each order posts to the AR ledger automatically, payments are recorded in real time, and inventory levels stay current in both systems. The manual order entry step is gone, and the AR team has visibility into online sales and collections without waiting for reports.
What you can do
- Post Shopify orders as customer invoices into SYSPRO's AR module, allocated to the correct GL account and customer.
- Sync Shopify orders/paid, orders/cancelled, and refunds/create webhooks to SYSPRO as AR receipts and reversals.
- Match Shopify products to SYSPRO inventory SKUs and create SYSPRO customer accounts from Shopify customers if they do not exist.
- Poll SYSPRO inventory balances and sync available quantities to Shopify inventory levels on a regular schedule.
- Authenticate SYSPRO with encrypted session tokens, handling token expiry and renewal, and validate Shopify webhook signatures on every call.
Questions
- Which direction does data move between SYSPRO and Shopify?
- The main flow is Shopify into SYSPRO. Shopify orders, payments, and refunds flow into SYSPRO as customer invoices and AR postings. Inventory levels flow the opposite direction: ml-connector polls SYSPRO inventory balances and syncs them to Shopify so your storefront always shows current stock. Customer records are aligned in both directions.
- How does ml-connector handle SYSPRO session token expiry and the lack of Shopify webhooks on the SYSPRO side?
- SYSPRO session tokens expire when the operator logs off or after a timeout, so ml-connector decrypts and caches the session token and handles expiry by re-logging in to the Utilities/Logon endpoint transparently on the next call. SYSPRO does not push webhooks, so ml-connector polls OData tables by filtering on timestamp fields (PostDate, InvoiceDate) at intervals tied to your operational cadence. Shopify webhooks are real-time, so order and payment events flow immediately.
- What happens if a Shopify product does not have a matching SYSPRO SKU or a Shopify customer does not exist in SYSPRO?
- ml-connector matches Shopify products to SYSPRO inventory items by SKU or product name. If no match is found, the order can be queued for manual review or mapped to a default SKU. For customers, ml-connector creates a new SYSPRO ArCustomer account from the Shopify customer email and name if no account exists. The new account is created in a default customer class and can be refined manually if needed.
Related integrations
More SYSPRO integrations
Other systems that connect to Shopify
Connect SYSPRO and Shopify
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started