Sage 300 and Shopify integration
Sage 300 is your on-premise ERP for finance and inventory. Shopify is your online storefront. Connecting them keeps your revenue ledger current: every order placed on Shopify flows into Sage 300's Accounts Receivable as a customer invoice, and your customer master stays in sync across both systems. No manual entry of web orders into your GL, no guessing which Shopify customers already exist in the ERP.
What moves between them
Orders and customers move from Shopify into Sage 300's Accounts Receivable. When a new order is placed or updated on Shopify, ml-connector receives the webhook, creates or updates the matching customer record in Sage 300 if needed, and posts a corresponding invoice into the AR invoice batch using the Shopify order ID and customer data. Refunds on Shopify trigger AR adjustments in Sage 300. The sync runs on a near-real-time cadence via webhook, with polling fallback to catch any missed notifications.
How ml-connector handles it
ml-connector subscribes to Shopify webhooks (orders/create, orders/updated, orders/paid, customers/create, customers/update) and listens on a registered HTTPS endpoint. When a webhook arrives, ml-connector verifies the X-Shopify-Webhook-Id signature to prevent replays. It then builds a Sage 300 customer record from the Shopify customer (name, email, address, phone) and upserts it via Sage 300's ARCustomers endpoint. For the order itself, ml-connector creates a line entry in Sage 300's ARInvoiceBatches, mapping the Shopify product line items to Sage 300 GL accounts (typically a revenue account you specify), and posts it via the batch endpoint. HTTP Basic Authentication is used for every Sage 300 call, with credentials cached and reused across requests to minimize IIS load. The order total, taxes, and shipping are broken down line-by-line into the GL dimensions you have set up. If a Shopify webhook payload is very large (exceeding IIS AppPool limits), ml-connector backs off and retries. Deduplication via Shopify webhook ID ensures the same order never posts twice into the AR ledger.
A real-world example
A specialty retailer operates a Sage 300 ERP on premise for AP, AR, GL, and inventory management across three warehouse locations. They sell online via Shopify and also through a physical showroom. Before the integration, the finance team received daily order exports from Shopify and manually entered each one into Sage 300's AR module, a 30-minute daily task that was error-prone and delayed revenue recognition in the GL. With Sage 300 and Shopify integrated, every Shopify order posts into AR automatically on the day it is placed, the customer is created in Sage 300 if new, and the revenue is recognized immediately in the GL under the correct revenue account. The manual entry task is gone, month-end close is faster, and AR aging reports in Sage 300 now reflect the true online sales picture.
What you can do
- Post Shopify orders into Sage 300 Accounts Receivable automatically when they are placed or updated, mapped to your revenue GL accounts.
- Keep customer master data synchronized between Shopify and Sage 300 ARCustomers, creating new customers in the ERP as they are registered on Shopify.
- Handle Shopify refunds by posting AR adjustment batches into Sage 300, preserving the original order linkage.
- Verify Shopify webhook signatures and deduplicate via webhook ID to prevent duplicate invoices in the AR ledger.
- Manage HTTP Basic Authentication for Sage 300 on every request, handling credential encoding and caching to reduce IIS load.
Questions
- How does ml-connector handle Sage 300 HTTP Basic Authentication?
- Sage 300 requires HTTP Basic Authentication on every request, with credentials base64-encoded in the Authorization header. Both username and password must be uppercase when registered in Sage 300's Administrative Services. ml-connector encodes and sends credentials with each API call and caches them to minimize IIS load and timeout risk.
- Which Shopify events trigger posts into Sage 300?
- ml-connector subscribes to orders/create, orders/updated, orders/paid, and customers/create and customers/update webhooks from Shopify. When any of these events fire, the order or customer data flows into Sage 300 automatically. If a webhook is missed, polling provides a fallback to ensure no order is left out of the AR ledger.
- What happens to Shopify refunds in Sage 300?
- When a refund is issued in Shopify, ml-connector posts an AR adjustment batch into Sage 300, reversing part or all of the original order total and preserving the linkage to the source Shopify order. The GL credit is applied to the same revenue account that received the original order.
Related integrations
More Sage 300 integrations
Other systems that connect to Shopify
Connect Sage 300 and Shopify
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started