ml-connector
VismaWalmart Marketplace

Visma and Walmart Marketplace integration

Visma.net ERP runs your accounting and financial management. Walmart Marketplace is where you sell third-party items to Walmart shoppers. Connecting the two keeps your seller inventory in sync with your stock levels and converts every order into accurate accounting entries in Visma without manual re-keying. Order fulfillment moves faster and your books stay accurate across channels.

How Visma works

Visma.net ERP exposes suppliers, customers, invoices, purchase orders, inventory, accounts, dimensions, journal transactions, and ledger data through REST APIs with JSON payloads, documented at https://api.finance.visma.net. Authentication uses OAuth 2.0 via Visma Connect with client credentials grant, and all API calls require the ipp-company-id header to identify the tenant. Visma supports both webhooks (one-time delivery, no automatic retry) and polling via lastModifiedDateTime query parameters, though webhooks require explicit enablement at the company level. Refresh tokens are not issued to service applications, so new tokens must be obtained on expiry. Test clients are rate-limited to 500 calls per hour per company, and PUT operations require ETag headers for optimistic locking.

How Walmart Marketplace works

Walmart Marketplace exposes items, inventory across multiple distribution nodes, orders, returns, refunds, pricing, and reconciliation reports through REST APIs with JSON request and response bodies, plus multipart file upload for bulk feed operations. Authentication uses OAuth 2.0 client credentials, exchanging client ID and secret for a 15-minute bearer token at POST {base}/v3/token. Downstream API calls use the non-standard header WM_SEC.ACCESS_TOKEN instead of the Authorization header, and all requests require WM_SVC.NAME set to Walmart Marketplace plus WM_QOS.CORRELATION_ID (a unique UUID per request). Walmart Marketplace supports webhooks with a 3-retry schedule (5 minutes, 15 minutes, 45 minutes) and also polling via GET on items, orders, and returns. Single-item price updates are throttled at 100 per hour, so bulk price feeds are required for larger updates. Returns for WFS (Walmart Fulfillment Services) items are read-only.

What moves between them

Orders from Walmart Marketplace flow into Visma as customer invoices or journal transactions, mapped to customer accounts and line-item dimensions in Visma. Inventory levels push from Visma back to Walmart Marketplace on a schedule (typically daily or per stock adjustment) to keep on-hand quantities aligned. Pricing updates can flow either direction depending on your setup: Visma source prices may push to Walmart, or Walmart pricing may be pulled for reconciliation reporting. All syncs are logged with full audit trails, and failed records can be replayed after correction.

How ml-connector handles it

ml-connector stores both credential sets encrypted and refreshes the Visma OAuth token when expiry approaches, obtaining a new token via Visma Connect client credentials. For Walmart, it refreshes the 15-minute bearer token before each request batch and presents the required WM_SEC.ACCESS_TOKEN header on every call, plus WM_SVC.NAME and WM_QOS.CORRELATION_ID headers to pass Walmart's validation. Orders are polled from Walmart (no push available for order creation) and mapped to Visma customer dimensions and accounts; inventory syncs bidirectionally using Walmart's inventory list endpoint and Visma's subaccount or item quantity fields. Because Walmart's single-item price updates are throttled at 100 per hour, bulk updates use the Feeds API for efficiency. ml-connector backs off on HTTP 429 responses from either system and retries with exponential jitter. Webhook events from Walmart (order, inventory, pricing) trigger immediate syncs where configured, while Visma webhooks (one-time delivery, no retry) are supplemented with polling to ensure no data is lost. Every record carries a full audit trail and can be replayed if a downstream mapping fails.

A real-world example

A mid-sized goods distributor sells directly to Walmart Marketplace as a third-party seller while running Visma.net ERP for accounting and inventory. Before the integration, the seller operations team manually exported orders from Walmart daily, entered them into Visma as customer invoices, and updated inventory counts by hand after each stock adjustment or fulfillment. Reconciliation was error-prone and month-end took days because orders, inventory, and ledger entries were out of sync. With Visma and Walmart Marketplace connected, every order converts into a Visma journal entry automatically, inventory adjustments in Visma push to Walmart within minutes, and the seller has a single source of truth across both systems. Order fulfillment is faster, and month-end close starts with ledger and inventory already reconciled.

What you can do

  • Convert Walmart orders into Visma customer invoices or journal transactions with line items mapped to Visma accounts and dimensions.
  • Sync inventory levels from Visma to Walmart Marketplace in real-time or on schedule to keep stock quantities aligned across channels.
  • Authenticate Visma via OAuth 2.0 with tenant headers and Walmart Marketplace via OAuth 2.0 with custom header authentication (WM_SEC.ACCESS_TOKEN, WM_SVC.NAME, WM_QOS.CORRELATION_ID).
  • Handle Walmart's 15-minute token expiry, Visma refresh token constraints, and webhook delivery limitations with polling fallback.
  • Maintain a full audit trail on every order, inventory sync, and pricing update, with replay capability for failed records.

Questions

Which direction does data move between Visma and Walmart Marketplace?
Orders move from Walmart into Visma as customer transactions, while inventory levels push from Visma to Walmart to keep stock synchronized. Pricing can flow either direction depending on your configuration. All syncs are logged for audit and can be replayed if a mapping fails.
How does ml-connector handle the different authentication schemes on each system?
Visma uses OAuth 2.0 client credentials with tenant-specific headers; ml-connector refreshes tokens before expiry and includes the required ipp-company-id header on all calls. Walmart Marketplace also uses OAuth 2.0 client credentials but with a 15-minute token expiry and non-standard WM_SEC.ACCESS_TOKEN header plus WM_SVC.NAME and WM_QOS.CORRELATION_ID. ml-connector manages both flows transparently.
What happens if Visma webhooks fail or Walmart hits rate limits?
Visma webhooks have one-time delivery with no automatic retry, so ml-connector supplements them with polling via lastModifiedDateTime to catch any missed events. Walmart rate limits return HTTP 429; ml-connector backs off and retries with exponential jitter. Both systems maintain a full audit trail so failed syncs can be manually replayed after the issue is resolved.

Related integrations

Connect Visma and Walmart Marketplace

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

Get started