ml-connector
Sage 50Walmart Marketplace

Sage 50 and Walmart Marketplace integration

Sage 50 holds your accounting records and inventory; Walmart Marketplace is where you sell to millions of buyers. Connecting the two keeps your Marketplace stock aligned with your true inventory in Sage 50, and routes incoming orders back into Sage 50 automatically so your accounting and fulfillment stay current. ml-connector runs on the Windows machine where Sage 50 is installed and handles the very different access patterns on each side: the Sage SDK for local reads and writes on one end, OAuth2 and REST calls to Walmart on the other.

How Sage 50 works

Sage 50 exposes inventory items, customers, sales orders, and general ledger accounts through a Windows SDK (.NET in the US edition, COM/ActiveX in the UK edition). The SDK runs on the same Windows machine where Sage 50 is installed and requires Windows-local username and password authentication against the Sage 50 user database, along with the full path to the company data folder. Sage 50 has no webhooks or remote API, so integration is polling only: records are read by date range (TransactionDate, LastModifiedDate, or AuditTrail scans) and typically polled at 5- to 15-minute intervals for near-real-time flow.

How Walmart Marketplace works

Walmart Marketplace exposes inventory, orders, pricing, and settlement data through REST APIs at https://marketplace.walmartapis.com. Access uses OAuth 2.0 Client Credentials: exchange a Client ID and Client Secret for a Bearer access token, which expires after 15 minutes and must be refreshed on each set of calls. API calls carry a non-standard WM_SEC.ACCESS_TOKEN header and require unique WM_QOS.CORRELATION_ID headers per request. Marketplace supports both webhooks (order, inventory, pricing events with retry intervals of 5, 15, and 45 minutes) and polling via REST GET operations.

What moves between them

Items and inventory flow from Sage 50 to Walmart Marketplace: inventory items are mapped from Sage 50 to SKUs, and stock quantities from Sage 50 inventory flow to Marketplace inventory levels across shipment nodes. Orders flow from Marketplace into Sage 50: purchase orders from Marketplace are created as sales orders in Sage 50, including line items, quantities, and customer details. Settlement and payout data flow from Marketplace back to Sage 50 as general journal entries for reconciliation. Sync runs on a polling schedule (5 to 15 minutes for orders, hourly for inventory and pricing) because Sage 50 has no push capability.

How ml-connector handles it

ml-connector runs as a scheduled Windows process on the machine where Sage 50 is installed. It maintains the Sage 50 SDK connection using Windows-local credentials and the company data folder path, and it refreshes the Walmart OAuth2 token every 12 minutes (before the 15-minute expiry) to avoid stale tokens during poll cycles. On each cycle, it queries Sage 50 by date range for new or modified items and inventory, maps them to Walmart SKUs and inventory levels, and bulk-uploads them via Marketplace feeds (avoiding the single-item price throttle of 100 updates per hour). Incoming Marketplace orders are polled, validated against Sage 50 customer records, and created as sales orders; the integration tracks order IDs and status changes to avoid duplicates. Settlement reports are read from Marketplace weekly and posted to Sage 50 as reconciliation journal entries. Because Sage 50 SDK access is exclusive (only one user or process can access the company files at a time), ml-connector coordinates with any interactive Sage 50 session by scheduling syncs during off-peak hours or accepting manual pause controls. Every record is audited and failed syncs can be replayed.

A real-world example

A small to mid-sized retailer sells both through their own website and as a third-party seller on Walmart Marketplace, managing inventory and orders in Sage 50. Before the integration, the team manually updated Marketplace inventory by exporting stock counts from Sage 50 every morning and re-uploading them to Marketplace, and they hand-entered every Marketplace order into Sage 50 at day-end. Walmart orders often conflicted with web orders for the same stock, leading to overselling and cancellations. With Sage 50 and Walmart Marketplace connected, inventory moves automatically from Sage 50 to Marketplace as customers buy, stock overages appear in real-time, and all orders--Marketplace, web, and walk-in--feed into one Sage 50 sales pipeline. Month-end reconciliation includes actual payout data from Marketplace, eliminating separate bank feeds and manual correlation.

What you can do

  • Map inventory items in Sage 50 to Walmart Marketplace SKUs and sync stock quantities to Marketplace inventory across multiple shipment nodes.
  • Automatically create sales orders in Sage 50 from incoming Walmart Marketplace orders, including customer name, address, and line items.
  • Post Walmart settlement and payout data to Sage 50 general journal for monthly reconciliation.
  • Refresh OAuth 2.0 tokens before expiry and poll Sage 50 and Marketplace on a schedule that fits your business hours.
  • Track order status changes and prevent duplicate orders with full audit trail and replay on sync failure.

Questions

How does ml-connector handle the exclusive access requirement of the Sage 50 SDK?
Sage 50 SDK requires that only one user or process access the company files at a time. ml-connector schedules syncs during off-peak hours (e.g. early morning or evening) to avoid conflict with interactive Sage 50 sessions, and it supports manual pause controls so you can stop syncs if someone needs to log in interactively. A longer exclusive lock is logged and retried on the next cycle.
Why does ml-connector need to run on the same Windows machine as Sage 50?
Sage 50 exposes no remote API or cloud interface; the SDK is Windows-only and requires direct access to the company data files on the local machine or LAN. ml-connector runs as a scheduled process on that Windows machine, reading and writing Sage 50 records via the SDK, and making outbound HTTPS calls to Walmart Marketplace in parallel.
How are Walmart orders created in Sage 50, and what prevents duplicates?
Each Marketplace order is polled and matched to a Sage 50 customer by email or shipping address. ml-connector creates a sales order in Sage 50 with the order ID as a reference, and it tracks which Marketplace orders have already been synced. On subsequent polls, the same order ID is matched to the existing Sage 50 sales order, so re-polling does not create duplicates.

Related integrations

Connect Sage 50 and Walmart Marketplace

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

Get started