A build-to-order ERPNext app that turns your GL Entries, invoices and payments into DATEV-conformant export files your tax advisor can import without rework. Includes SKR03/SKR04 account mapping, document (Belege) link export, period locking and controlled re-export of corrections. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $499.00 USD; request a quote for a scoped proposal.
Illustrative previewA build-to-order ERPNext app that turns your GL Entries,
invoices and payments into DATEV-conformant export files your tax advisor can import without rework. Includes SKR03/SKR04 account mapping, document (Belege) link export, period locking and controlled re-export of corrections.
No DIY setup — a working app, built, installed and supported by ECOSIRE.
Start with a one-time build price. We scope it with you at kickoff.
ECOSIRE builds, configures and installs it on your ERPNext.
You go live in about 2–4 weeks, with a post-launch support window.
German accounting has a handover problem that ERPNext does not solve out of the box. Your Steuerberater works in DATEV, expects a monthly EXTF buchungsstapel with the exact header line, the exact column order, Windows-1252 encoding and semicolon separators, plus a matching Belege archive so every booking has its document. ERPNext gives you an accurate General Ledger, a Chart of Accounts you designed yourself, and CSV/Excel exports from the report view — none of which DATEV will accept. The usual result is a bookkeeper re-keying or hand-massaging spreadsheets every month, corrections that nobody can trace back to the originating Sales Invoice, and an advisor charging for cleanup work that should never have existed.
What we build is a proper Frappe app — its own repository, its own module, installable with bench get-app and bench --site … install-app — not a pile of loose customizations that vanish on the next migration. At its centre is a DATEV Export DocType that takes a company, a fiscal period and a target format, reads submitted GL Entries through the Frappe ORM, and writes a DATEV-conformant file: the EXTF header carrying Berater, Mandant, WJ-Beginn, Sachkontenlänge and the period bounds, then one row per booking with Umsatz, Soll/Haben-Kennzeichen, Konto, Gegenkonto, BU-Schlüssel, Belegdatum, Belegfeld 1 and Buchungstext, encoded and quoted the way DATEV's import expects. Amounts are always written positive with an explicit S/H indicator, because a signed amount is the single most common reason an import is rejected.
Account mapping is the part that decides whether the export is usable. A DATEV Account Mapping DocType maps each ERPNext Account onto its SKR03 or SKR04 counterpart, with per-mapping tax handling so that a 19% domestic sale, a 7% reduced-rate sale, a reverse-charge EU service and a non-taxable transfer each carry the correct BU-Schlüssel rather than being flattened into one bucket. Debtor and creditor accounts are resolved to Personenkonten from a configurable numeric range, so a Customer or Supplier lands on a stable ledger number instead of a name string. Mappings are validated before an export ever runs: a scheduled job and a pre-export check both surface unmapped accounts, missing tax keys and out-of-range personal accounts as a blocking report, so you find the gap while you can still fix it rather than after your advisor has bounced the file.
Around the export sits the workflow your advisor's month actually follows. Belege export bundles the File attachments behind each booking — the Sales Invoice PDF, the scanned Purchase Invoice — into a DATEV Belegtransfer package with a document.xml index that links each document back to its booking, so the advisor sees the paperwork next to the row. A DATEV Export Period record locks a period once it has been handed over: a hooks.py doc event on Journal Entry, Sales Invoice, Purchase Invoice and Payment Entry refuses submission or cancellation into a locked period, which is what stops a "small correction" from silently invalidating a file already sitting in your advisor's system. When something genuinely must change, a controlled re-export produces a new numbered Stapel for that period, records what changed against the prior export, and leaves an audit trail on the DATEV Export document instead of overwriting history. Permissions are wired to role profiles — an Accounts User can prepare and review, only an Accounts Manager can lock a period or authorise a re-export — and a whitelisted method plus the standard Frappe REST API let a scheduler event or an external process trigger and fetch the monthly export unattended.
Delivery is build-to-order. You request a quotation, we run a scoping call to confirm your SKR variant, your tax scenarios, whether Belege transfer is in play and what your advisor's Berater/Mandant numbers are, and we write that into a fixed scope. Typical delivery is 2-4 weeks from confirmed scope, targeting your Frappe/ERPNext version (v15 or v16). We build against a copy of your Chart of Accounts, hand you the app on a staging site for UAT with a real month of your own data, produce a sample file your Steuerberater can test-import before go-live, then install on production with a rollback path. You receive the full source in a git repository you own, install and configuration documentation, a user guide, a training session, and a post-go-live support window for defects.
Owns the monthly close and the relationship with the Steuerberater. Needs a repeatable export that leaves nothing to re-key, tax keys that survive an audit, and a hard stop that prevents anyone from posting into a period already handed over.
Does the actual work today: exporting from the ERPNext GL report, reshaping columns in Excel, chasing missing invoice PDFs. Needs one button, a clear exceptions list before the run, and the document archive produced alongside the file rather than assembled by hand.
Cares only that the file imports cleanly into DATEV, that account numbers match SKR03 or SKR04, that tax keys are right, and that any correction arrives as a new traceable Stapel instead of a silently amended file.
Evaluates whether this stays maintainable. Wants a proper Frappe app in its own repository rather than site-level customizations, doc events and scheduler hooks documented, permissions on role profiles, and clean behaviour through `bench migrate` and version upgrades.
| Criterion | ECOSIRE | Custom Build | Competitor | ERPNext Native |
|---|---|---|---|---|
| DATEV file conformance | EXTF header, column order, Windows-1252 encoding and S/H indicators built to what DATEV import actually accepts, proven with a test import before go-live | Achievable, but the format details are learned the expensive way — usually after the advisor bounces the first two files | Often a generic CSV exporter labelled DATEV; header and encoding details vary by author | General Ledger report exports to CSV/Excel only; no DATEV format exists in ERPNext core |
| SKR03 / SKR04 account mapping | Dedicated mapping DocType loaded from your live Chart of Accounts, with bulk import and validation for unmapped accounts | Frequently a hardcoded dictionary in a server script that only its author can safely edit | Usually a fixed standard-chart assumption that breaks the moment your chart is customised | No concept of an external chart mapping; your ERPNext account numbers are all there is |
| Tax keys (BU-Schlüssel) | Per-mapping tax handling covering domestic rates, reverse charge and intra-community cases, validated before export | Typically one blanket rule that works until the first EU service invoice appears | Basic domestic rates commonly covered; edge cases often left to manual correction | Tax templates exist but carry no DATEV tax key equivalent |
| Belege / document transfer | Belegtransfer package built from File attachments with a document.xml index tying each file to its booking | Rarely attempted; usually left as a manual folder of PDFs sent separately | Uncommon — most marketplace exporters cover bookings only | Attachments live on the document and are not exported anywhere |
| Period locking | Export Period record enforced by doc events on Journal Entry, Sales and Purchase Invoice and Payment Entry, with manager-only unlock | Depends whether the developer thought of it; often added after the first painful incident | Typically absent; the exporter reads data but does not police it | Fiscal year and period closing exist but are not tied to what was handed to your advisor |
| Corrections and re-export | Authorised re-export creates a new numbered Stapel with a recorded reason and diff against the prior file | Usually re-running the same script and overwriting, with no trace of what changed | Re-run supported; provenance of the change generally not tracked | You would re-export the report and reconcile by eye |
| Maintainability and ownership | Versioned Frappe app in a git repository you own, surviving bench migrate, with docs on hooks, scheduler events and endpoints | Often server scripts and client scripts inside the site, fragile across upgrades and tied to one developer | Maintained by the vendor on their roadmap; changes for your chart or advisor may not be possible | Nothing to maintain, because nothing exists to do the job |
| Fit to your advisor's actual routine | Scoped against your Berater/Mandant numbers, SKR variant and tax scenarios, with an optional handover session with your Steuerberater | Fits exactly, if the requirements were captured correctly the first time | Fits the average German ERPNext user; your advisor's specifics are your problem | Not applicable |
No — this is build-to-order, not an instant download. You request a quotation, we run a short scoping call to confirm your SKR variant, tax scenarios, Belege requirements and advisor numbers, and we fix the scope in writing. Typical delivery is 2-4 weeks from confirmed scope, including UAT on a staging site with your own data before we touch production. If your requirements are unusually broad (several companies, non-standard chart, heavy custom tax handling) we tell you the longer estimate at scoping rather than after the fact.
Both. The `DATEV Account Mapping` DocType is chart-agnostic: it maps your existing ERPNext Accounts onto the target DATEV account numbers, and we load the SKR03 or SKR04 baseline during setup. Companies that have customised their chart are the normal case, not the exception — we build the mapping against your live Chart of Accounts during delivery and hand you a maintainable table you can extend yourself when you add accounts later.
The period is locked by a `DATEV Export Period` record, and doc events on Journal Entry, Sales Invoice, Purchase Invoice and Payment Entry block submission or cancellation into it. To make a change, an Accounts Manager authorises a re-export with a recorded reason; the app produces a new numbered Stapel for that period and stores a diff against the previous export. Your advisor gets a traceable correction, and your ERPNext audit trail shows exactly who changed what and why.
Both, if Belege transfer is in your scope. The app collects the File attachments behind each booking — invoice PDFs, scanned supplier documents — into a DATEV Belegtransfer package with a `document.xml` index that links each file to its booking row, and `Belegfeld 1` carries the source document reference so the row and the paperwork always line up. If you only need the buchungsstapel, we scope it out and the price reflects that.
Delivery includes a post-go-live support window for defects in the delivered scope, and we supervise your first live month-end run. After that window, support and version-compatibility work (for example moving from v15 to v16, or adapting to a DATEV format revision) is available as an ongoing agreement or on a per-request basis. You own the git repository either way, so you are never locked out of your own code.
It is delivered as a proper Frappe app with its own repository, module, DocTypes, fixtures and `hooks.py` — not site-level customizations or scattered server scripts that get overwritten. That is exactly what makes it survive `bench migrate` and ERPNext point releases. Major version jumps still deserve a check; we build against your stated target (v15 or v16) and can quote a compatibility pass when you plan an upgrade.
Yes. The export runs behind a whitelisted method reachable through the standard Frappe REST API, and a scheduler event can run the mapping validation ahead of month-end and email the exceptions list to your accounting team. Whether the export itself runs unattended or stays a deliberate human action is a policy decision — most finance teams prefer to review the exceptions report, then run the export themselves before the period is locked.

A build-to-order 2Checkout (Verifone) payment integration for ERPNext, giving global digital-goods sellers card acceptance, 45+ local payment methods, multi-currency checkout, and reconciled invoices. ECOSIRE scopes, builds, installs, and supports it on your ERPNext v15/v16 instance.

A build-to-order ERPNext application for anonymous 360-degree reviews — configurable peer, manager, report and self rater groups, weighted competency scoring, and aggregated gap-analysis and heatmap reports. ECOSIRE scopes, builds, installs and supports it on your Frappe/ERPNext v15/v16 instance.

A build-to-order ERPNext app that detects abandoned webshop and POS carts, then runs multi-channel WhatsApp, email, and SMS recovery and win-back sequences with dynamic cart content and coupon injection. ECOSIRE scopes, builds, installs, and supports it for your v15/v16 instance.

A build-to-order ERPNext app for running B2B account-based campaigns: define target-account lists, sequence outreach calls, auto-distribute them to agents, and score account engagement across every contact. ECOSIRE designs, builds, installs and supports it after you confirm scope.
A build-to-order ERPNext app that turns your GL Entries, invoices and payments into DATEV-conformant export files your tax advisor can import without rework. Includes SKR03/SKR04 account mapping, document (Belege) link export, period locking and controlled re-export of corrections.