DATEV and Marketo integration
DATEV runs accounting and tax for German businesses. Marketo runs B2B marketing automation and deal tracking. Connecting the two means a deal that closes in Marketo can become billing data in DATEV without anyone re-keying it. When a Marketo opportunity reaches a closed-won stage, ml-connector reads the deal amount and the related company, then submits an outgoing-invoice document or a DXSO booking suggestion to the matching DATEV client. ml-connector handles the very different APIs and auth on each side and moves the data on a schedule you control.
What moves between them
The flow runs from Marketo into DATEV. ml-connector polls Marketo for opportunities whose stage has moved to closed-won, reads each opportunity's amount and its linked company for the bill-to name and revenue, and submits the result to DATEV as an outgoing-invoice (Rechnungsausgang) document or as a DXSO XML booking suggestion against the correct client. The DATEV clients list is read first so each record is routed to the right consultant and client number. DATEV finalized bookings are write-only and the chart of accounts cannot be read back, so ml-connector never reads ledger entries out of DATEV and never writes marketing data back into Marketo.
How ml-connector handles it
ml-connector stores both credential sets encrypted and runs two different auth bridges: a Marketo client-credentials token that it refreshes before the one-hour expiry, and a DATEV PKCE Authorization Code session whose 15-minute access token is renewed with the refresh token, sending client_id only on refresh. Because neither system pushes events, it polls Marketo on the schedule you set using an updatedAt or lead-changes filter, paging through results with nextPageToken, and parses the success flag and errors array on every HTTP 200 rather than trusting the status code. Each qualifying opportunity is mapped to a DATEV outgoing invoice or DXSO booking suggestion, with the Marketo company name and amount mapped to the bill-to and document fields, and the DATEV client id resolved from the clients API. Document and EXTF uploads are made idempotent by submitting with a stable GUID or deterministic filename so a retry does not double-post, and DATEV import jobs are polled with exponential backoff until they complete or fail. Real edge cases are handled: Marketo opportunities turn read-only when Salesforce or Dynamics CRM sync is enabled, so ml-connector treats them as read sources; Marketo rate-limit error 606 and DATEV's conservative limits both trigger backoff; and DATEV document types are client-specific, so the valid type is fetched per client before upload.
A real-world example
A mid-sized German software vendor with about 120 staff runs DATEV through its Steuerberater for accounting and uses Marketo Engage to manage demand generation and deal tracking. Before the integration, when a subscription deal closed in Marketo the sales team emailed the details to finance, who manually created the outgoing invoice paperwork and handed it to the tax advisor for booking, which delayed invoicing and caused mismatches between the deal amount in Marketo and the figure booked in DATEV. With DATEV and Marketo connected, each closed-won opportunity is read automatically and submitted to DATEV as an outgoing-invoice document or booking suggestion against the right client, so billing starts the same day the deal closes and the booked amount matches the deal without re-keying.
What you can do
- Turn closed-won Marketo opportunities into DATEV outgoing-invoice documents or DXSO booking suggestions automatically.
- Read the related Marketo company and deal amount to fill the DATEV bill-to and document fields.
- Route each record to the correct DATEV client by resolving the consultant and client number from the clients API.
- Bridge Marketo client-credentials tokens and DATEV's interactive PKCE login, refreshing both before they expire.
- Poll Marketo on your schedule and track each DATEV async import job to completion, with retries and a full audit trail.
Questions
- Which direction does data move between DATEV and Marketo?
- The flow is Marketo into DATEV. Closed-won opportunities and their company and amount move from Marketo into DATEV as outgoing-invoice documents or booking suggestions. DATEV finalized bookings are write-only and its chart of accounts cannot be read through the API, so ml-connector does not read ledger entries out of DATEV or write marketing data back into Marketo.
- Can Marketo send accounts payable invoices into DATEV?
- No. Marketo is a marketing automation platform and has no vendor or AP invoice objects. What it does hold is leads, companies, opportunities, and sales persons, so ml-connector uses won opportunities and their account to create outgoing-invoice and booking-suggestion records in DATEV, which is the revenue side rather than the payables side.
- How does the integration handle authentication on both sides without manual token work?
- It runs two auth bridges. For Marketo it mints an OAuth client-credentials Bearer token from your Custom Service and refreshes it before the one-hour expiry, and for DATEV it uses the Authorization Code flow with PKCE, renewing the 15-minute access token with the refresh token and sending client_id only on refresh. Both credential sets are stored encrypted, so once connected the tokens are managed for you.
Related integrations
More DATEV integrations
Other systems that connect to Marketo
Connect DATEV and Marketo
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started