ml-connector
Sage 300BigCommerce

Sage 300 and BigCommerce integration

Sage 300 is your on-premise ERP for accounting, purchasing, and inventory. BigCommerce is your online store. Connecting them keeps your general ledger in step with your e-commerce revenue. New orders from BigCommerce flow into Sage 300 automatically, posted to the right GL accounts and dimensions so month-end close starts with accurate revenue numbers. Product inventory updates feed back to BigCommerce so stock levels reflect what Sage 300 reports. ml-connector bridges the two systems and handles the data flow on a schedule you define.

How Sage 300 works

Sage 300 runs on Windows IIS with a SQL Server backend and exposes vendors, purchase orders, invoices, GL accounts, and inventory items through REST and OData endpoints at a customer-hosted URL. Every request authenticates with HTTP Basic Authentication, sending base64-encoded USERNAME:PASSWORD in the Authorization header, where both username and password must be uppercase. Sage 300 has no webhooks or change-data-capture; all sync is pull-based, using OData filters and pagination ($filter, $skip, $top, $orderby) on a poll schedule. The API user must be created in Administrative Services with the Web API security group assigned. Master data endpoints like APVendors, ARCustomers, GLAccounts, and ICItems support GET, POST, PUT, and DELETE. Transaction batches like APInvoiceBatches and GLJournalBatches support GET and POST. Process endpoints like GenerateGLBatch support POST only.

How BigCommerce works

BigCommerce is a cloud e-commerce platform accessed through REST API v3 endpoints at api.bigcommerce.com/stores/{store_hash}/v3/. It exposes orders, customers, products, transactions, refunds, and shipping addresses. Every request authenticates with a static API key delivered in the X-Auth-Token header, generated in the store control panel. BigCommerce pushes events to registered HTTPS webhook endpoints via HTTP POST when orders are created, updated, or archived; when products are created, updated, or deleted; and when customers are created, updated, or deleted. Webhook payloads are stubs containing only the event type and resource ID; ml-connector must call the REST API immediately to fetch full order details. Webhooks auto-deactivate after 90 days of inactivity or approximately 48 hours of delivery failures. The signature on every webhook is HMAC-SHA256 over the raw body with the client secret, Base64-encoded, in the X-BC-Signature header.

What moves between them

The main flow is BigCommerce into Sage 300. When a customer places an order in BigCommerce, the webhook triggers ml-connector to fetch the full order details, map the order total to the appropriate GL account and revenue category in Sage 300, and post a GL journal entry. Customer records from BigCommerce can be synced into Sage 300 as AR customers if desired. Product inventory updates flow from BigCommerce back into Sage 300 so your e-commerce stock levels stay aligned with what your ERP reports. GL entries are posted on a frequency tied to your order volume or a fixed schedule.

How ml-connector handles it

ml-connector stores the Sage 300 credentials (username, password, and instance URL) encrypted and the BigCommerce API key encrypted. It registers a webhook with BigCommerce to receive order, customer, and product events, validates each incoming webhook using the HMAC-SHA256 signature and client secret, and when an order webhook arrives, fetches the full order details from BigCommerce via REST. It then maps the order total to a Sage 300 GL account based on product category or shipping region, prepares a GL journal batch (GLJournalBatches), and POSTs it to Sage 300 using HTTP Basic Auth. Because Sage 300 has no webhooks, ml-connector polls Sage 300 on a configurable cadence to fetch updated GL accounts and customer master data so that posting destinations remain current. If a BigCommerce webhook is received but the corresponding Sage 300 GL account does not exist, the record is queued and retried after the next poll cycle discovers the account. Every order-to-GL posting is logged in the audit trail with the webhook event ID, the Sage 300 journal batch ID, and the timestamp, so any posting can be traced or reversed if needed. Refunds from BigCommerce are posted as negative journal entries into Sage 300.

A real-world example

A mid-market retail company operates a physical warehouse and an online store on BigCommerce, with Sage 300 running accounting and inventory control in-house. Before the integration, the accounting team downloaded BigCommerce order reports daily and manually entered the day's revenue into Sage 300's General Ledger, then at month-end reconciled online sales revenue to the GL to find discrepancies. With Sage 300 and BigCommerce connected, each order automatically posts to the GL with the date, amount, and customer reference captured from the webhook, and inventory updates flow back to BigCommerce so online stock levels match the warehouse count in Sage 300. The accounting team no longer re-keys orders, and month-end close starts with revenue already reconciled.

What you can do

  • Post BigCommerce orders to Sage 300 General Ledger automatically when orders are placed or updated, mapped to the correct GL account by product category or customer region.
  • Sync BigCommerce customers into Sage 300 AR as new online customers, with name, email, and billing address.
  • Receive BigCommerce product inventory updates and validate them against Sage 300 ICItems so your online stock reflects warehouse quantities.
  • Authenticate Sage 300 with HTTP Basic Auth (username and password uppercase) and BigCommerce with static API keys, with both credential sets encrypted at rest.
  • Validate BigCommerce webhooks using HMAC-SHA256 signatures and poll Sage 300 on a schedule to keep GL accounts and customer master data current.

Questions

Which direction does data move between Sage 300 and BigCommerce?
The main flow is BigCommerce into Sage 300. Orders and customer data flow from your online store into Sage 300 General Ledger and AR, while inventory updates flow back from Sage 300 to BigCommerce so your e-commerce stock levels stay accurate. Sage 300 master data (GL accounts, customers, items) is polled regularly to ensure posting destinations remain current.
Does Sage 300's HTTP Basic Auth requirement mean sending passwords with every request?
Yes. Sage 300 requires HTTP Basic Authentication with base64-encoded USERNAME:PASSWORD in the Authorization header on every request, and both username and password must be uppercase. ml-connector stores these credentials encrypted and encodes them for each call.
How does the integration handle BigCommerce webhooks if Sage 300 has no push capability?
ml-connector registers a webhook endpoint with BigCommerce to receive order and customer events in real-time. When an event arrives, ml-connector fetches the full details from BigCommerce, then polls Sage 300 on a configurable cadence to fetch updated GL accounts so posting destinations are always current. If a GL account does not yet exist, the order is queued and retried after the next poll.

Related integrations

Connect Sage 300 and BigCommerce

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

Get started