DATEV and Tableau integration
DATEV runs accounting for German and Austrian tax advisors and their business clients. Tableau reports on data that lives in the databases it connects to. This connection takes the general ledger and financial summaries you have modeled in a Tableau view and turns them into bookings inside DATEV without re-keying. ml-connector pulls the view as CSV, shapes the rows into the DATEV booking format, and submits them as asynchronous import jobs on the schedule you choose. Because Tableau holds no native invoices or GL accounts and DATEV cannot read posted journals back, the flow is read-from-Tableau, write-to-DATEV by design.
What moves between them
The flow runs from Tableau into DATEV. ml-connector reads the published Tableau view that models your general ledger and financial summaries, pulls it as CSV through the views data endpoint, and maps each row into a DATEV booking line: amount, debit or credit indicator, debit and credit accounts, document date, document number, tax code, and cost centers. Those lines are submitted to DATEV as an EXTF CSV booking batch for finalized postings, or as a DXSO XML job when you want a reviewable booking suggestion in DATEV Unternehmen Online. Supporting PDFs can be uploaded to DUO through the documents API alongside the bookings. Cadence is scheduled, typically aligned to your close calendar, and an extract refresh can be triggered first so the view holds current numbers before it is read. DATEV cannot return posted journals, so nothing is written back into Tableau.
How ml-connector handles it
ml-connector stores both credential sets encrypted. On the Tableau side it accepts the full pod or server URL per customer, signs in with the Personal Access Token to get a session token, stores the returned site LUID for every later URL, sends the token as X-Tableau-Auth, and re-authenticates when a call returns 401, since the session expires after 240 minutes and the PAT itself lapses after 15 days of non-use on Cloud. On the DATEV side it carries the user's OAuth session from the PKCE login, attaches the Bearer access token and the X-DATEV-Client-Id header, and refreshes the 15-minute token using the client id alone. It first looks up the DATEV client id, then fetches the client-specific document types before any upload, because those values differ per client and cannot be hardcoded. Tableau columns are mapped to DATEV accounts, cost centers, and tax codes up front, and because DATEV cannot return its chart of accounts, those account numbers are configured in advance. To avoid reading a stale extract, the connector can POST a data source refresh and poll the returned Tableau job to Success before it pulls the view CSV. Each EXTF file uses a stable deterministic filename so a retry is not rejected as a duplicate, and the CSV is written as NFC-normalized UTF-8 to avoid silent rejection. After submission ml-connector polls the DATEV job with exponential backoff and jitter, and Tableau list and refresh calls back off on an HTTP 429. Tableau webhooks for refresh succeeded or failed carry no signature, so the connector relies on an HTTPS endpoint and a secret URL token rather than an HMAC check. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized professional services group of around 300 staff runs its operational and revenue data in a cloud warehouse and reports on it in Tableau, while its German entity keeps the statutory books in DATEV through an outside tax advisor. Each month an accountant exported revenue and cost summaries from a Tableau dashboard, reformatted them into a DATEV booking layout in a spreadsheet, and handed the file to the advisor, who then keyed the batch into DATEV. The hand-off was slow, the spreadsheet drifted from the Tableau model, and close slipped when the figures did not tie out. With DATEV and Tableau connected, ml-connector refreshes the extract, pulls the same view as CSV on a schedule, maps each line to the agreed DATEV accounts and cost centers, and submits the EXTF batch as an import job the advisor reviews. The manual reformatting step is gone and the books reflect the modeled numbers each period.
What you can do
- Export a modeled GL and cost summary from a Tableau view as CSV and submit the rows into DATEV as EXTF booking batches.
- Post reviewable booking suggestions to DATEV Unternehmen Online as DXSO jobs when a finalized batch is not wanted.
- Map Tableau result columns to DATEV accounts, cost centers, document numbers, and tax codes on every booking line.
- Bridge Tableau's Personal Access Token session and DATEV's interactive OAuth PKCE login, refreshing each as it expires.
- Refresh the Tableau extract first, then poll DATEV import jobs to completion with backoff, deterministic filenames, and a full audit trail.
Questions
- Which direction does data move between DATEV and Tableau?
- Data moves from Tableau into DATEV. ml-connector reads a published Tableau view to pull modeled GL and financial summaries as CSV, then writes them into DATEV as EXTF booking batches or DXSO booking suggestions. Tableau holds no native financial records to receive and DATEV cannot return posted journals, so nothing is written back into Tableau.
- Can ml-connector read finished bookings back from DATEV into Tableau?
- No. DATEV finalized bookings sent to DATEV Rechnungswesen are one-way and write-only, and the chart of accounts is not exposed through the API. For that reason the DATEV account numbers and cost centers are configured in advance and mapped to Tableau columns, rather than read from DATEV at runtime.
- How does the integration handle authentication on each side?
- Tableau signs in with a Personal Access Token to get a 240-minute session token sent as the X-Tableau-Auth header, and ml-connector re-authenticates on a 401 and stores the site LUID the sign-in returns. DATEV uses OAuth 2.0 Authorization Code with PKCE, so a tax advisor or client approves access once, after which ml-connector refreshes the 15-minute access token automatically using the client id. Both credential sets are stored encrypted.
Related integrations
More DATEV integrations
Other systems that connect to Tableau
Connect DATEV and Tableau
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started