ml-connector
SYSPROBigCommerce

SYSPRO and BigCommerce integration

SYSPRO runs your manufacturing and distribution finance. BigCommerce runs your online store. Connecting the two keeps your sales and your accounts receivable in agreement. Orders placed on BigCommerce flow into SYSPRO as customer invoices, matched to the correct customer record and GL account, without manual entry. ml-connector bridges the different authentication schemes and sync models so the order data lands in your ERP on a schedule you control.

How SYSPRO works

SYSPRO Adaptive ERP exposes customers, invoices, GL accounts, products, and warehouse inventory through three API layers: e.net Business Objects (REST and SOAP, read and write), OData (REST, read-only with HTTP Basic Auth), and Workflow Service (REST and SOAP, limited). Each customer supplies their own server URL and credentials; SYSPRO publishes no shared hostname. The system has no webhook capability, so connector applications must poll the OData layer with timestamp filters on PostDate or InvoiceDate, typically every 5 to 15 minutes for financial data. Session tokens expire on timeout, and large XML payloads are best sent over SOAP instead of REST due to URL length limits.

How BigCommerce works

BigCommerce exposes orders, customers, products, and inventory through a cloud REST API with store-level API key authentication via the X-Auth-Token header. The platform pushes order, customer, product, and inventory changes as webhook events to a registered HTTPS endpoint, with a HMAC-SHA256 signature on each payload. Webhooks retry on failure over approximately 48 hours with increasing backoff, and auto-deactivate after 90 days of inactivity or sustained delivery failures. Each webhook registration takes up to 1 minute to activate, and the endpoint must use HTTPS; self-signed certificates are rejected. Webhook payloads contain only a stub (type and ID), so the connector must call the REST API immediately to fetch full details.

What moves between them

Orders flow from BigCommerce into SYSPRO. When an order is placed on BigCommerce, ml-connector receives the webhook event, looks up the customer record in SYSPRO via OData polling, and posts the order as an AR invoice in SYSPRO mapped to that customer and to the correct GL revenue account. Customer profile changes on BigCommerce (name, address, email) are also synced into SYSPRO customer records. The flow is one-way; SYSPRO invoices do not push back to BigCommerce. Product and pricing updates are managed separately and do not flow through this integration.

How ml-connector handles it

ml-connector maintains two credential sets: the SYSPRO server URL and session token (refreshed on each poll cycle), and the BigCommerce store hash and API key. It registers a webhook listener with BigCommerce for order/created and customer/updated events, validates each incoming webhook signature using HMAC-SHA256 and the client secret, and extracts the order and customer IDs from the webhook stub. On receipt, it calls the BigCommerce REST API to fetch the full order details. In parallel, it polls SYSPRO OData to retrieve the matching customer record; if the customer does not exist in SYSPRO, it creates a new ArCustomer record using e.net Business Objects (which supports writes). Once the customer is confirmed or created, ml-connector posts the order as an ApInvoice in SYSPRO with line items mapped to the product SKUs and a total amount posted to a configurable GL revenue account. Address changes are synced back into the ArCustomer address fields. Because BigCommerce webhooks are fire-and-forget stubs, ml-connector must query the REST API immediately and idempotently (all calls carry a unique job ID to prevent duplicate posting if the webhook is retried). SYSPRO session tokens are renewed at the start of each poll cycle and stored until timeout. Rate limits on BigCommerce (450 requests per 30 seconds for Pro plan) are respected with adaptive backoff.

A real-world example

A mid-sized home furnishings manufacturer runs SYSPRO for production, inventory, and order fulfillment, and BigCommerce as their direct-to-consumer e-commerce site. Before the integration, orders placed on BigCommerce were exported manually each morning, and the sales team spent 30 minutes entering each order into SYSPRO as an AR invoice to trigger fulfillment. Duplicate orders were common, and revenue posting was delayed. With SYSPRO and BigCommerce connected, each order syncs automatically into SYSPRO as an invoice the moment it is placed, the customer record is created or updated if needed, and fulfillment picks are triggered immediately. The revenue account is reconciled daily without manual entry, and duplicate orders are prevented by idempotent posting.

What you can do

  • Receive BigCommerce orders on webhooks and post them into SYSPRO as AR invoices with one-click mapping to customer and GL revenue accounts.
  • Create or update SYSPRO customer records when new customers sign up on BigCommerce, keeping the ERP customer file in sync with your store.
  • Map BigCommerce order totals and line items to SYSPRO product codes and GL accounts, eliminating manual re-keying.
  • Validate BigCommerce webhook signatures with HMAC-SHA256 and handle message retries with idempotent posting to prevent duplicate invoices.
  • Poll SYSPRO OData and refresh session tokens on a schedule you control, with a full audit trail on every order and customer record posted.

Questions

Which direction does data move between SYSPRO and BigCommerce?
Orders and customers flow from BigCommerce into SYSPRO. When a customer places an order on BigCommerce, ml-connector posts it into SYSPRO as an AR invoice and creates or updates the corresponding customer record. SYSPRO does not push data back to BigCommerce; the integration is one-way at the order level, though customer profile changes are two-way.
How does ml-connector handle BigCommerce webhooks if they only send a stub?
BigCommerce webhooks include only the event type and record ID. ml-connector validates the webhook signature with HMAC-SHA256, extracts the order or customer ID from the stub, and immediately calls the BigCommerce REST API to fetch the full order details (customer name, address, items, total). This happens synchronously so each webhook triggers one complete order post into SYSPRO.
What happens if a customer on BigCommerce does not exist in SYSPRO yet?
ml-connector polls SYSPRO OData to look up the customer by email or name. If the customer is not found, it uses e.net Business Objects to create a new ArCustomer record with the address and contact details from BigCommerce, then posts the order against that customer. Subsequent orders from that customer match to the existing SYSPRO record without re-creation.

Related integrations

Connect SYSPRO and BigCommerce

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started