ml-connector
Sage 300Amazon Seller Central

Sage 300 and Amazon Seller Central integration

Sage 300 runs your ERP for order entry, inventory, and general ledger. Amazon Seller Central manages your product listings, orders, and settlement financials. Connecting them keeps your inventory quantities in agreement, pushes Amazon orders into Sage 300 as sales invoices, and brings your settlement and refund financials into the ledger. ml-connector handles the different authentication schemes and polling cadences on each side, so your finance and inventory teams stay synchronized without manual reconciliation.

How Sage 300 works

Sage 300 is an on-premise ERP system that exposes data through REST and OData APIs running on a customer-hosted IIS server with a SQL Server backend. Key entities include orders, invoices, customers, vendors, inventory items, GL accounts, and journal batches. Authentication uses HTTP Basic Auth with a base64-encoded username and password sent on every request; both must be uppercase. The API user must be created in Administrative Services with the Web API security group assigned. Sage 300 publishes no webhooks or change-data-capture, so data is pulled via OData filters and pagination on a scheduled poll.

How Amazon Seller Central works

Amazon Seller Central exposes orders, inventory, listings, and financial events through the Selling Partner API (SP-API), a REST service available across North America, Europe, and Far East regions. Authentication uses OAuth2 via Login with Amazon, with a refresh token stored once and reused for all calls; access tokens expire after one hour. Key entities include orders, order items, financial event groups and events, shipment and refund events, inventory summaries, and catalog items. Amazon supports push notifications via EventBridge or SQS for order and inventory changes, but financial settlement events and invoice results are read-only and must be polled.

What moves between them

Amazon Seller Central order and financial data flows into Sage 300. New orders are pulled from Amazon on a schedule and mapped to sales invoices in Sage 300, with order lines matching line items and the Amazon order number stored as the sales order reference. Settlement financials (shipment fees, refunds, adjustments) flow from Amazon's financial events into Sage 300 GL, mapped to revenue and expense accounts based on the event type. Inventory quantities from Sage 300 can be pushed to Amazon Seller Central to keep listing availability current. All records carry timestamps so subsequent polls skip previously synced data.

How ml-connector handles it

ml-connector stores the Sage 300 HTTP Basic Auth credentials and the Amazon refresh token encrypted in the database. For Sage 300, it accepts the full IIS application URL per customer and refreshes the Amazon access token before each call to prevent expiry. It polls Amazon's Orders API and Finances API on a configurable schedule (typically daily or per Amazon settlement period), maps the Amazon order structure to Sage 300's order entry and invoice format, and handles the fact that both systems measure inventory and orders but with different definitions: Amazon tracks listing availability while Sage 300 tracks on-hand and allocated stock. For financial events, ml-connector groups Amazon's granular settlement events by type and period, maps them to Sage 300 GL accounts, and posts them as journal batches so the reconciliation trail is clear. Both systems are eventually consistent; ml-connector tracks the last successful read timestamp per entity to avoid duplicate pulls and maintains a full audit log of every record mapped and posted.

A real-world example

A mid-market retailer runs Sage 300 ERP for order management, inventory control, and general ledger, and sells through Amazon Seller Central as their largest sales channel. Before the integration, the finance team exported orders and settlement reports from Amazon every few days and manually entered the sales invoices and fees into Sage 300, spending hours each week reconciling inventory counts between systems and chasing discrepancies when Amazon's available quantity drifted from what Sage 300 showed. After connecting the two systems, new Amazon orders flow automatically into Sage 300 sales invoices each morning, settlement financials post into the GL with full auditability, and inventory quantities from Sage 300 can push to Amazon to keep listings accurate. Month-end reconciliation is faster, the order re-keying step is gone, and the inventory counts stay aligned.

What you can do

  • Automatically pull orders from Amazon Seller Central and post them into Sage 300 as sales invoices, mapped to the correct customers and GL accounts.
  • Sync Amazon settlement financials (shipment fees, refunds, adjustments, service fees) into Sage 300's general ledger on a schedule aligned with your settlement period.
  • Keep Amazon Seller Central inventory listings current by pushing on-hand quantities from Sage 300 inventory items.
  • Store Sage 300 HTTP Basic Auth credentials and Amazon OAuth2 refresh tokens encrypted, and manage token expiry so calls never fail due to stale credentials.
  • Audit every order, financial event, and inventory update with full traceability and the ability to replay any record if a downstream post fails.

Questions

How does the integration map Amazon orders to Sage 300 sales invoices?
ml-connector reads each Amazon order and its line items from the Orders API, maps the order header to a Sage 300 sales invoice with the customer matched by Amazon seller name or a pre-configured mapping, and maps each line item to an invoice line with product code matched from catalog data or a product mapping table. The Amazon order number is stored as the sales order reference for traceability, and the order date becomes the invoice date. Line amounts and totals are taken from Amazon's calculated values.
Which direction does data move, and how often does it sync?
The primary flow is Amazon Seller Central into Sage 300. Orders and settlement financials are pulled from Amazon on a schedule you set (typically daily or aligned to your settlement period), and inventory quantities from Sage 300 can be pushed to Amazon listings to keep availability current. ml-connector polls both systems; it does not rely on push notifications because Amazon's financial settlement events are not available through webhooks and must be polled.
How does ml-connector handle authentication differences between the two systems?
Sage 300 uses HTTP Basic Auth with a base64-encoded username and password, while Amazon uses OAuth2 with a refresh token that yields an access token valid for one hour. ml-connector stores both credential types encrypted in the database, sends the Basic Auth header on every Sage 300 request, and refreshes the Amazon access token before each call to prevent expiry during a request. If Amazon returns a 401, ml-connector re-authenticates and retries.

Related integrations

Connect Sage 300 and Amazon Seller Central

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

Get started