ml-connector
Sage 300Walmart Marketplace

Sage 300 and Walmart Marketplace integration

Sage 300 manages inventory, purchasing, and financial records for a mid-market seller. Walmart Marketplace is where you reach millions of buyers. Connecting them keeps your Sage 300 inventory in sync with live Walmart stock levels, automatically receives orders placed on Walmart into Sage 300 as purchase orders or receipts, and posts order confirmations and fulfillment status back to Walmart without manual re-entry. ml-connector handles the very different authentication schemes and the pull-only nature of Sage 300's on-premise API.

How Sage 300 works

Sage 300 is an on-premise ERP hosted on a customer's own Windows IIS server with SQL Server backend. It exposes items, inventory locations, purchase orders, general ledger accounts, and journal batches through REST and OData APIs at a customer-specific URL. Authentication uses HTTP Basic Auth with an API user created in Administrative Services; both username and password must be provided in uppercase with every request. Sage 300 has no webhooks or change-data-capture, so all sync is pull-based via polling with OData filters on transaction dates. The API user must have Web API security group privileges, and IIS must be configured with Anonymous Authentication enabled and Windows Authentication disabled.

How Walmart Marketplace works

Walmart Marketplace exposes items, inventory across ship nodes, orders, returns, and pricing through REST APIs at marketplace.walmartapis.com. Authentication uses OAuth 2.0 client credentials, exchanging Client ID and Client Secret for a Bearer token with a 15-minute expiry. Walmart Marketplace sends webhooks for orders, inventory changes, and returns events with automatic retries at 5, 15, and 45 minutes, and also supports polling the Orders endpoint for the last 180 days. All API calls require WM_SEC.ACCESS_TOKEN header (not the standard Authorization header) and additional headers including WM_SVC.NAME and WM_QOS.CORRELATION_ID. Single-item price updates are heavily throttled, so bulk price feeds are required for large catalogs.

What moves between them

Inventory flows from Sage 300 to Walmart Marketplace on a daily or weekly schedule to keep live Walmart stock levels current with Sage 300's ICItems and ICItemLocationDetails. Walmart orders arrive via Walmart's webhooks or polling and are converted into Sage 300 purchase orders or order receipts for tracking in the purchasing module. Return and refund data flows from Walmart back to Sage 300 as adjustments or credit memos in accounts receivable and inventory. Pricing updates move from Sage 300 to Walmart via the bulk price feed to avoid throttling on single-item updates.

How ml-connector handles it

ml-connector stores Sage 300's uppercase Basic Auth credentials encrypted and includes them in the Authorization header on every Sage 300 request, polling ICItems and inventory on a schedule to detect inventory changes since the last sync. For Walmart, ml-connector stores the OAuth Client Secret encrypted, exchanges it for a Bearer token every 15 minutes before it expires, and receives order and inventory events via webhooks with HMAC signature verification. On the Sage 300 side, it maps Walmart orders to purchase orders using the order's line items and UOM conversions, matches items by SKU to Sage 300 ICItems, and posts receipts into Sage 300's purchase order module. Outbound inventory is batched into Walmart's bulk feed API instead of single-item updates to avoid pricing throttles. All records carry an audit trail, and failed postings to Sage 300's self-hosted endpoint are queued for retry in case of IIS AppPool timeouts or network latency to the customer's infrastructure.

A real-world example

A mid-market wholesale distributor uses Sage 300 for purchasing, inventory, and accounts payable. They sell through Walmart Marketplace as a third-party seller to reach additional buyers beyond their traditional reseller channel. Before the integration, the operations team exported daily Walmart inventory snapshots, manually updated unit quantities in Sage 300, and then re-entered Walmart orders into Sage 300 purchase order batches to track incoming shipments. Every order had to be hand-matched to a Sage 300 vendor and PO, creating delays and errors. With Sage 300 and Walmart Marketplace connected, daily inventory snapshots flow automatically from Sage 300 to Walmart, and Walmart orders convert directly into Sage 300 purchase order receipts, cutting manual data entry by 90 percent and eliminating order-matching delays.

What you can do

  • Sync Sage 300 inventory items and quantities to Walmart Marketplace on a scheduled cadence, keeping live Walmart stock levels current.
  • Receive Walmart orders via webhooks or polling and convert them into Sage 300 purchase order receipts with automatic line-item mapping.
  • Post Walmart returns and refunds into Sage 300 accounts receivable and inventory as adjustments or credit memos.
  • Update Walmart prices from Sage 300 via bulk feed API to avoid single-item update throttles.
  • Authenticate Sage 300 with HTTP Basic Auth over self-hosted IIS and Walmart with OAuth 2.0 token refresh every 15 minutes, with full audit trail on every record.

Questions

How does ml-connector handle Sage 300's on-premise IIS server and HTTP Basic Auth?
ml-connector accepts the customer's Sage 300 IIS server URL and stores the uppercase Basic Auth username and password encrypted. It includes the Authorization header with base64-encoded credentials on every API call. Because Sage 300 has no webhooks, ml-connector polls inventory and purchase orders on a schedule tied to your operational cadence, using OData date filters to fetch only records changed since the last sync.
What happens when Walmart's OAuth token expires after 15 minutes?
ml-connector tracks the token expiry timestamp and exchanges the Client Secret for a new token before the current one expires, so downstream API calls never fail due to token age. It also verifies webhook HMAC signatures using the shared secret, rejecting any tampered or replayed events. If a webhook is dropped after 3 Walmart retries, ml-connector can poll the Orders endpoint to backfill missing orders from the last 180 days.
How are Walmart orders mapped into Sage 300 purchase orders?
ml-connector matches Walmart order SKUs to Sage 300 ICItems by SKU field, converts line quantities to Sage 300 UOM, and creates a purchase order receipt in the purchasing module. The order is tagged with its Walmart purchase order ID for audit trail and reverse lookup. Because Walmart's customer PII is limited to email and shipping address, ml-connector uses shipping address data to populate Sage 300 ship-to locations where available.

Related integrations

Connect Sage 300 and Walmart Marketplace

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

Get started