DATEV and Pipedrive integration
Pipedrive runs your sales pipeline. DATEV holds the books. Connecting the two lets a won deal in Pipedrive become a booking and an invoice document in DATEV without re-keying. When a deal closes, ml-connector reads its customer, value, currency, and products, then submits the matching debtor and revenue booking to DATEV as a file job and uploads the invoice PDF to DATEV Unternehmen Online. It handles the very different APIs on each side and runs on the cadence your accounting team sets.
What moves between them
The flow runs from Pipedrive into DATEV. When a deal reaches won status, ml-connector reads the deal, its organization, and its products from Pipedrive, then writes a debtor record and an outgoing-invoice booking into DATEV as a DXSO XML or EXTF CSV job and uploads the invoice PDF to DATEV Unternehmen Online as a Rechnungsausgang document. Organizations and persons feed DATEV creditor and debtor master data so bookings land on real accounts. DATEV is treated as a write-only accounting sink for finalized bookings, so ml-connector does not pull posted journal entries back into Pipedrive.
How ml-connector handles it
ml-connector stores both credential sets encrypted. On the Pipedrive side it uses OAuth2 or an API token and subscribes to deal webhooks, verifying the HMAC-SHA256 signature on the raw request body and rejecting bad signatures with 401. On the DATEV side it runs the PKCE login flow, keeps the state parameter at least 20 characters, and refreshes the 900-second token by sending only the client id. A won-deal webhook is the trigger; ml-connector resolves Pipedrive custom field hashes to real values, maps deal currency, value, and tax code to the correct SKR debit and credit accounts, and submits the booking as an async job. Because DATEV does not push, it polls the job status endpoint with exponential backoff and jitter until the job completes or fails. Documents are uploaded with a stable GUID so a retry is idempotent, and EXTF filenames are deterministic so DATEV's duplicate check does not reject a safe re-submission. Document types are fetched per client before upload rather than hardcoded, and GL accounts are configured up front because DATEV cannot return the chart of accounts over the API.
A real-world example
A German B2B services firm of about 60 staff runs Pipedrive for sales and uses DATEV through its tax advisor for the books. Before the integration, once a deal was won someone copied the customer name, amount, and tax rate from Pipedrive into a spreadsheet, raised the invoice, and the bookkeeper later keyed the same figures into DATEV, with the invoice PDF emailed around for filing. Mismatched customer names and missed entries surfaced at month-end close. With DATEV and Pipedrive connected, a won deal posts the debtor and revenue booking into DATEV automatically and files the invoice PDF in DATEV Unternehmen Online, so the ledger matches the pipeline and the manual re-keying step is gone.
What you can do
- Turn a won Pipedrive deal into a DATEV outgoing-invoice booking submitted as a DXSO or EXTF file job.
- Upload the invoice PDF to DATEV Unternehmen Online as a Rechnungsausgang document with a stable GUID.
- Keep DATEV debtor master data aligned with Pipedrive organizations and persons.
- Bridge Pipedrive OAuth2 or API-token auth and DATEV's PKCE login, refreshing the 900-second token automatically.
- Trigger on signed Pipedrive webhooks, then poll DATEV async jobs with backoff until they post.
Questions
- Which direction does data move between DATEV and Pipedrive?
- The flow runs from Pipedrive into DATEV. Won deals, organizations, and persons move from Pipedrive into DATEV as bookings, debtor master data, and uploaded invoice documents. Finalized bookings sent to DATEV Rechnungswesen are write-only and cannot be read back, so ml-connector does not pull posted journal entries into Pipedrive.
- How does the integration handle DATEV having no webhooks?
- DATEV does not push events, so after ml-connector submits an EXTF or DXSO file job it polls the DATEV job status endpoint until the job reports complete or failed. It uses exponential backoff with jitter, since DATEV does not publish processing times and asks that its APIs not be polled at high frequency. The Pipedrive side is event-driven, so a won-deal webhook starts the work.
- Can ml-connector look up the right DATEV GL accounts automatically?
- No. DATEV does not return the chart of accounts over the API, so the SKR debit and credit accounts and tax codes are configured up front during setup. ml-connector then maps each Pipedrive deal's currency, value, and tax to those accounts, and fetches the client-specific document types before each upload rather than hardcoding them.
Related integrations
More DATEV integrations
Other systems that connect to Pipedrive
Connect DATEV and Pipedrive
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started