ml-connector
Sage X3Amazon Seller Central

Sage X3 and Amazon Seller Central integration

Sage X3 runs your finance and inventory. Amazon Seller Central runs your Amazon sales channel. Connecting the two keeps your books accurate and your stock levels real. New orders from Amazon flow into Sage X3 as sales orders mapped to the correct GL accounts and cost centers, and shipment and financial settlement events post journals automatically so month-end close is already reconciled.

How Sage X3 works

Sage X3 exposes sales invoices, purchase orders, inventory stock levels, GL accounts, and general ledger entries through REST (api1 legacy or Xtrem GraphQL), and SOAP endpoints. Cloud and on-premise versions both use customer-specific server URLs with no central tenant registry. OAuth2 client credentials (JWT bearer) authenticate GraphQL calls, while REST api1 uses HTTP Basic Authentication. Access tokens expire in 5 minutes, requiring refresh token management. Sage X3 does not support outbound webhooks or push notifications, so records are read by polling with delta detection using updatedDate and modifiedDateTime fields on entities.

How Amazon Seller Central works

Amazon Seller Central exposes orders, shipment events, inventory, and financial settlement through the Selling Partner API (SP-API), a REST service with regional endpoints and sandbox support. OAuth 2.0 via Login with Amazon (LWA) authenticates all calls, with refresh_token grant type for seller-authorized operations and client_credentials for grantless operations. Access tokens expire after 1 hour. Amazon supports push notifications through EventBridge or SQS, but financial settlement events and invoice results are not available via push, so ml-connector polls the Orders API, Finances API, and Reports API. Orders older than 2 years are not returned.

What moves between them

Amazon orders flow into Sage X3 as sales orders and sales invoices mapped to GL accounts matching your Seller Central product categories. Shipment and refund events from Amazon post into Sage X3 as inventory movements and revenue corrections. Financial settlement events and payments flow into Sage X3 as GL postings to cash and revenue accounts, with line items mapped by transaction type. Because Sage X3 does not support push notifications, ml-connector polls Amazon's Finances API and Orders API on a daily schedule or at a cadence you configure, with built-in handling of Amazon's refresh token expiry and the order history cutoff at 2 years.

How ml-connector handles it

ml-connector stores both OAuth2 credential sets encrypted and manages the login flow for both sides: JWT bearer tokens for Sage X3 GraphQL, refresh_token grants for Amazon Seller Central regional endpoints. It accepts the Seller Central region (North America, Europe, or Far East) per customer and routes API calls to the matching base URL. On the Sage X3 side, it uses the customer-specific server URL and folder, handles the 5-minute access token refresh cycle, and maps Amazon order and shipment lines to existing GL accounts and inventory locations. For Amazon, it polls the Finances API for settlement events and refunds, handles the async Reports API workflow (createReport, poll getReport, download from S3), and skips financial events older than 2 years since Amazon does not return them. Every record carries a job ID for deduplication across retries, and both the order mapping and the settlement posting are reversible if a downstream Sage X3 call fails.

A real-world example

A mid-market distributor selling industrial supplies through Amazon FBA also runs Sage X3 for warehouse and finance operations. Orders placed on Amazon Seller Central go to fulfillment centers managed in Sage X3 inventory, but before the integration the finance team received daily settlement reports from Amazon and manually posted them into Sage X3's GL. With Sage X3 and Amazon Seller Central connected, each day's orders flow in as sales invoices, shipments reduce inventory automatically, and settlement payouts post as GL cash receipts allocated to the Amazon sales account. Month-end close starts with sales and cost of goods already matched, and the manual posting step is eliminated.

What you can do

  • Sync Amazon orders into Sage X3 as sales orders and invoices, mapped to GL accounts by product category.
  • Post Amazon shipment events and refunds as Sage X3 inventory movements and revenue corrections.
  • Reconcile Amazon financial settlement into Sage X3 GL postings, with cash deposits and revenue allocation by transaction type.
  • Authenticate Amazon Seller Central via OAuth2 LWA and handle regional endpoints (North America, Europe, Far East).
  • Poll Amazon Finances API and Orders API on a daily schedule, with dedup and replay on retry.

Questions

What records move from Amazon Seller Central to Sage X3?
Orders, shipments, refunds, and financial settlement events. Orders become sales invoices mapped to your GL accounts, shipments reduce inventory and may trigger COGS journal postings, refunds reverse revenue, and settlement deposits post to a cash clearing account. Financial events older than 2 years are not available from Amazon.
How does ml-connector handle Amazon's regional endpoints and OAuth2 refresh tokens?
ml-connector stores the seller's refresh_token encrypted per customer and exchanges it for access tokens on each API call, routing requests to the correct regional endpoint (North America, Europe, or Far East). Access tokens expire after 1 hour, so it refreshes automatically before the token becomes stale and retries any request that returns 401 Unauthorized.
Since Sage X3 has no webhooks, how does the integration stay current?
ml-connector polls the Finances API and Orders API on a schedule you control (typically daily) and uses delta detection to fetch only new or changed records since the last poll. The same poll also triggers Sage X3 to recalculate GL entries and inventory balances, so your ERP and Amazon stay in sync without manual intervention.

Related integrations

Connect Sage X3 and Amazon Seller Central

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

Get started