Sage 100 and Walmart Marketplace integration
Sage 100 runs your back-office accounting and inventory. Walmart Marketplace is your seller presence on Walmart.com. Connecting them keeps your inventory in sync across channels, lets orders flow from Walmart into Sage 100 as sales orders and AR transactions, and surfaces returns and refunds without manual re-entry. ml-connector translates between Sage 100 SOAP and Walmart REST, bridges two very different authentication schemes, and respects the polling-only nature of Sage 100 while accepting Walmart push notifications to keep the lag minimal.
What moves between them
Orders and returns flow from Walmart Marketplace into Sage 100. Each Walmart order becomes a Sage 100 sales order, with line items matched to Sage inventory items by SKU. Walmart returns trigger Sage 100 AR credit memos. In the reverse direction, Sage 100 inventory levels sync to Walmart Marketplace to keep actual stock quantities current, and Sage 100 pricing updates push to Walmart for items marked as managed by Sage. Reconciliation reports from Walmart are polled weekly and compared to Sage 100 AR sub-ledgers to flag settlement discrepancies. All syncs are driven by Walmart webhook notifications where they fire and by polling on a schedule (Walmart orders every 5 minutes, Sage inventory every 10 minutes) to catch events that webhooks miss.
How ml-connector handles it
ml-connector stores both credential sets encrypted: the Sage 100 username and password for the SOAP/BOI layer, and the Walmart OAuth client ID and secret. On each cycle it refreshes the Walmart OAuth token (valid 15 minutes) and holds a SOAP session or makes stateless BOI calls to Sage 100 as needed. Orders arrive via Walmart webhook when available; ml-connector validates the webhook signature and re-parses the request, then polls Walmart orders every 5 minutes as a fallback to catch any webhook gaps. Each Walmart order is matched to Sage 100 customers by email or shipping address, SKU lines are looked up in Sage 100 inventory by exact match, and a new sales order is created with the Walmart order number as the external reference. Returns trigger a lookup of the original order and create an AR credit memo in Sage 100. Inventory syncs face a constraint: Sage 100 has no standard bulk inventory endpoint, so ml-connector enumerates the CI_Item table via the BOI layer and constructs the Walmart inventory feed; single-item Walmart price updates hit a 100-per-hour throttle, so ml-connector batches updates into bulk feed operations instead. Both systems rate limit (Sage COM locks on concurrent writes, Walmart gates price and order calls), so ml-connector backs off with exponential jitter and retries. Every record carries a full audit trail: the Walmart order ID and Sage 100 sales order number are cross-referenced in both directions so a downstream failure can be replayed without duplicating data.
A real-world example
A mid-sized consumer goods company runs Sage 100 for accounting and inventory and sells through Walmart Marketplace as a third-party seller. Before integration, the operations team imported Walmart orders twice a day into a CSV, manually matched them to Sage 100 customers and items, and re-entered them into sales orders by hand. Returns required a separate manual process to generate AR credits. Inventory discrepancies were common because the Sage inventory file uploaded to Walmart was refreshed weekly and inevitably grew stale between uploads. With Sage 100 and Walmart Marketplace connected, each Walmart order flows into a Sage sales order in real time, returns become AR credits automatically, and Sage inventory syncs every 10 minutes so stock levels on Walmart stay current. Month-end reconciliation is faster because the AR detail is already in Sage and the Walmart settlement report can be reconciled against actual GL postings without re-keying.
What you can do
- Receive Walmart orders via webhook and create corresponding Sage 100 sales orders, with line items matched to inventory by SKU.
- Process Walmart returns as Sage 100 AR credit memos and track refund status back to Walmart.
- Sync Sage 100 inventory levels to Walmart Marketplace every 10 minutes to keep online stock quantities current.
- Push Sage 100 pricing updates to Walmart using bulk feed operations to bypass single-item throttles.
- Reconcile Walmart settlement reports against Sage 100 AR sub-ledgers and alert on discrepancies, with full audit trails on every order and return.
Questions
- How does ml-connector handle the fact that Sage 100 is on-premises and has no webhooks?
- ml-connector accepts a direct connection to the Sage 100 SOAP endpoint or a local Windows agent that wraps the BOI COM layer, allowing queries directly from the cloud without tunneling. Because Sage 100 has no webhooks, ml-connector polls on a schedule: Walmart orders every 5 minutes, Sage inventory every 10 minutes. Where Walmart supports webhooks, ml-connector listens for push notifications and polls as a fallback to ensure no orders slip through.
- What happens when Walmart single-item price updates hit the 100-per-hour throttle?
- ml-connector detects the throttle (Walmart returns 429), backs off with exponential jitter, and automatically batches pending price updates into a bulk Walmart Feeds operation instead. Bulk feeds bypass the single-item limit, so large price changes are submitted as a single asynchronous feed rather than stalled in a retry loop.
- How are Sage 100 customers matched to Walmart orders if they arrive with only an email address?
- ml-connector looks up the customer by email in Sage 100 AR_Customer, defaulting to a generic Walmart customer code if the email does not match an existing account. For returns and subsequent orders, ml-connector uses the Walmart customer identifier and maintains a cross-reference table so repeat buyers map to the same Sage customer account across multiple orders.
Related integrations
More Sage 100 integrations
Other systems that connect to Walmart Marketplace
Connect Sage 100 and Walmart Marketplace
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started