ml-connector
DATEVWalmart Marketplace

DATEV and Walmart Marketplace integration

DATEV runs the books for German and Austrian businesses through their tax advisors. Walmart Marketplace runs a seller's storefront, orders, and payouts on Walmart.com. Connecting the two brings settled marketplace activity into the accounting system without re-keying. After each Walmart settlement, the captured sales, marketplace fees, and refund amounts are turned into booking rows and submitted to DATEV, and the supporting order and credit documents are filed in DATEV Unternehmen Online. ml-connector handles the very different APIs on each side and submits the data on the cadence you set.

How DATEV works

DATEV is not a conventional REST API. It authenticates with OAuth 2.0 Authorization Code plus PKCE through Login mit DATEV, which requires an interactive user session because there is no machine-to-machine flow, and access tokens last 900 seconds with refresh using the client_id only. A small REST surface lists clients and uploads documents to DATEV Unternehmen Online, but actual bookings go through asynchronous file jobs: finalized entries as EXTF CSV to DATEV Rechnungswesen, and booking suggestions as DXSO XML to the cloud. DATEV has no webhooks, so every job is submitted and then polled until complete. The standard chart of accounts cannot be read back through the API, and finalized EXTF bookings are write-only.

How Walmart Marketplace works

Walmart Marketplace exposes items, inventory, orders, returns and refunds, pricing, and reconciliation reports through REST APIs on a single base URL, with bulk work handled by an async feed model. It authenticates with OAuth 2.0 Client Credentials, exchanging Client ID and Client Secret for a Bearer token that is passed in the non-standard WM_SEC.ACCESS_TOKEN header and expires after 15 minutes with no refresh token. The reconciliation report endpoints return settlement amounts, payout dates, marketplace fees, and refund breakdowns and are read-only. Walmart can push events such as new orders, returns, and report-ready notifications by webhook, retrying up to three times. Walmart has no native GL account, vendor, or journal entry objects.

What moves between them

The flow runs one direction, from Walmart Marketplace into DATEV. ml-connector pulls Walmart reconciliation reports after each settlement and converts the captured sales, marketplace fees, refunds, and payouts into EXTF CSV booking rows that are submitted to DATEV Rechnungswesen, each mapped to the GL accounts and cost centers you configure. Order and refund documents are filed as PDFs in DATEV Unternehmen Online against the matching incoming and outgoing invoice document types. A report-ready webhook from Walmart can trigger the pull, and a scheduled poll backfills anything a webhook missed. Walmart is treated as a read-only accounting source, so ml-connector never writes financial entries back into Walmart.

How ml-connector handles it

ml-connector stores both credential sets encrypted. For Walmart it base64-encodes the Client ID and Secret, requests a fresh Bearer token before the 15-minute expiry, and sends it on every call in the WM_SEC.ACCESS_TOKEN header along with the mandatory WM_SVC.NAME and a per-request correlation id. DATEV needs an interactive Login mit DATEV consent from the tax advisor or client to obtain the first tokens, after which ml-connector refreshes the access token with the client_id only. Walmart reconciliation reports are downloaded, and their lines are mapped to DATEV GL accounts and cost centers, which must be set up in advance because DATEV does not expose its chart of accounts through the API. The booking rows are written as a UTF-8 EXTF CSV with precomposed characters and a deterministic filename, then submitted as an async job; DATEV detects duplicate filename and document-type combinations, so a stable filename makes re-submission retry-safe. Because neither side pushes accounting events DATEV can consume, ml-connector polls the EXTF job status with exponential backoff until it completes or fails, and polls Walmart on a schedule for any report a webhook missed. Walmart throttling returns HTTP 429 and DATEV rate limits are conservative, so both are backed off and retried, and every record carries a full audit trail and can be replayed if a submission fails.

A real-world example

A mid-sized German consumer goods brand sells finished products on Walmart.com through Walmart Marketplace while its tax advisor keeps the books in DATEV. Before the integration, a bookkeeper downloaded Walmart settlement reports, manually split each payout into gross sales, marketplace fees, and refunds, and re-keyed those totals into DATEV as a booking batch, then chased differences between the bank deposit and the orders behind it at month-end close. With DATEV and Walmart Marketplace connected, each settlement report is pulled automatically and posted into DATEV as an EXTF booking allocated to the right GL accounts and cost centers, with the order and credit documents filed in DATEV Unternehmen Online. The marketplace fees are recognized, the payouts already tie out, and the monthly re-keying step is gone.

What you can do

  • Post Walmart Marketplace reconciliation reports into DATEV as EXTF CSV bookings after every settlement.
  • Record captured sales, marketplace fees, refunds, and payouts against the GL accounts and cost centers you map.
  • File Walmart order and refund documents as PDFs in DATEV Unternehmen Online against the correct document types.
  • Bridge Walmart's Client Credentials Bearer token and DATEV's interactive PKCE login, refreshing each before expiry.
  • Poll the DATEV job status and Walmart reports on a schedule, with backoff, retries, and a full audit trail on every record.

Questions

Which direction does data move between DATEV and Walmart Marketplace?
Data moves one way, from Walmart Marketplace into DATEV. Walmart reconciliation reports and supporting order and refund documents flow into DATEV as bookings and uploaded files. Walmart reports are read-only and DATEV finalized bookings are write-only, so ml-connector never writes financial entries back into Walmart.
How does the integration bridge the two different authentication methods?
Walmart uses OAuth 2.0 Client Credentials, so ml-connector exchanges the Client ID and Secret for a Bearer token and sends it in the WM_SEC.ACCESS_TOKEN header, refreshing before the 15-minute expiry. DATEV uses OAuth 2.0 Authorization Code with PKCE and needs a one-time interactive Login mit DATEV consent from the tax advisor or client, after which ml-connector refreshes the DATEV token with the client_id only. Both credential sets are stored encrypted.
Why does the integration poll instead of relying on webhooks?
DATEV has no webhooks at all, so every EXTF or DXSO job is submitted and then polled until it reports complete or failed. Walmart can push a report-ready webhook to trigger a pull, but a scheduled poll still backfills anything a webhook missed. ml-connector uses exponential backoff on the DATEV job status because DATEV does not document processing times.

Related integrations

Connect DATEV and Walmart Marketplace

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

Get started