A build-to-order Odoo module that generates ELSTER-compatible XML for the German Umsatzsteuervoranmeldung (UStVa), mapping your Odoo tax lines to the correct Kennziffern for upload. Scoped, built, installed and supported by ECOSIRE — this is not an off-the-shelf download. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.
App manifest
Built around your workflow
A build-to-order Odoo module that generates ELSTER-compatible XML for the German Umsatzsteuervoranmeldung (UStVa), mapping your Odoo tax lines to the correct Kennziffern for upload. Scoped, built, installed and supported by ECOSIRE — this is not an off-the-shelf download.
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 Odoo.
You go live in about 2–4 weeks, with a post-launch support window.
German VAT-registered companies must file a periodic Umsatzsteuervoranmeldung (UStVa) and transmit it through the ELSTER portal, but Odoo core stops at the boundary. Out of the box Odoo can compute a German tax report and give you the totals per tax, yet it has no notion of ELSTER Kennziffern (the numbered fields like 81, 86, 66, 61, 35/36 that the tax authority expects), and it produces no ELSTER-compatible XML you can hand to the portal or an ERiC-based pipeline. Finance teams end up re-keying figures from the Odoo tax report into a separate tool every month — slow, error-prone, and a reconciliation headache when a late invoice shifts a period total.
This is a made-to-order localization module we build, install, and support for your specific chart of accounts and tax configuration. Technically, it introduces a ustva.declaration model (models.Model) representing one filing period, with a compute layer (@api.depends on your account.move / account.tax postings) that aggregates net and tax amounts and maps each Odoo tax to its ELSTER Kennziffer through a configurable mapping model rather than hard-coded IDs — so your bookkeeper controls which tax feeds field 81 vs 86 without a code change. The declaration produces a validated ELSTER XML payload (Elster/UStVa schema, correct Nutzdaten structure, period and Steuernummer/Steuer-ID headers) as a downloadable attachment, plus a human-readable QWeb summary report for internal sign-off before anything is submitted. Access is gated with ir.model.access.csv and record rules so only the accounting team (and, in multi-company setups, the right company) can generate or view a period.
The module ships with a clean __manifest__.py declaring the account dependency, is delivered for your target Odoo major version (17.0, 18.0, or 19.0), and works on both Community and Enterprise — we adapt the tax-report data source to whichever accounting layer your edition exposes. Because generation is deterministic and driven off posted journal entries, re-running a period after a correction simply regenerates the XML from current data; an optional automated action can flag when a locked period has new postings that would change the declaration. The export is also reachable over Odoo's XML-RPC/JSON-RPC API if you want to trigger it from an external filing routine.
Delivery is build-to-order: we start with a short scoping call, confirm your tax mapping and edition, then build, test on a staging copy of your database, and install to production — typically 2-4 weeks from confirmed scope. Pricing starts from $249 (indicative, single-company base scope); multi-company consolidation, additional Kennziffer coverage or Dauerfristverlängerung handling, and migrating historical periods for backfilling increase the quoted scope. You receive a fixed quote after the scoping call — never a surprise invoice.
A German finance team filing UStVa monthly or quarterly that wants to stop re-keying Odoo tax-report totals into a separate ELSTER tool and needs a validated XML straight from posted journal entries.
A tax advisor managing several Odoo-based clients who needs a repeatable, auditable period export with a human-readable summary for review before submission, and per-company scoping for each mandate.
The person who owns the Odoo instance and its tax configuration, wants a clean module with proper access rules and an API trigger, and needs it delivered for their exact edition and Odoo version without core hacks.
Responsible for VAT compliance across more than one German company in one Odoo database, needing per-entity Steuernummer, mapping and record-rule isolation so each entity files its own correct declaration.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Delivery model | Built, installed and supported for your setup | You hire and manage a developer | Instant download, self-install | |
| ELSTER XML output | Validated UStVa XML against your mapping | Depends on the developer's schema knowledge | Generic XML, may not fit your Kennziffern | |
| Kennziffer mapping | Configurable model, set up and signed off with you | Whatever you specify and pay to build | Fixed defaults, hard to adjust | |
| Edition & version fit | Built for your exact 17/18/19, Community or Enterprise | Scoped per engagement | Fixed version list, may lag your upgrade | |
| Access control | `ir.model.access.csv` + record rules scoped to accounting | Only if you specify it | Basic group access | |
| Support & updates | Post-go-live window + optional maintenance | You own all future fixes | Vendor forum / paid ticket, variable | |
| Multi-company | Per-entity Steuernummer & scoping (extended scope) | Buildable at added cost | Often single-company only | |
| Total cost of ownership | From $249 indicative + optional maintenance | Highest — full dev + upkeep | Low upfront, integration effort on you |
No. This is a build-to-order module. We scope it to your tax configuration and Odoo edition, then build, test and install it for you. You are commissioning a productized service, not buying an instant download.
Typically 2-4 weeks from confirmed scope. After the scoping call we agree the tax-to-Kennziffer mapping and your target Odoo version, then build, run UAT on a staging copy, and deploy to production. Larger multi-company or historical-backfill scopes sit at the longer end.
Pricing starts from $249 (indicative, single-company base scope). We confirm requirements on a short scoping call, then send a fixed written quote before any work begins. Drivers like multi-company consolidation, extra Kennziffer coverage, Dauerfristverlängerung handling, or migrating historical periods increase the quoted scope.
Every build includes a post-go-live support window for defect fixes and configuration tweaks. Because ELSTER schemas and Odoo versions change over time, we also offer ongoing maintenance — for example adapting the export when the UStVa schema is updated or when you migrate to a newer Odoo major version — quoted separately.
Yes to both editions. We build for your chosen Odoo 17.0, 18.0 or 19.0 and adapt the tax-report data source to whichever accounting layer your edition exposes. The module declares an explicit `account` dependency in its `__manifest__.py`.
The base scope generates a validated ELSTER-compatible XML payload and a QWeb summary for sign-off; you upload it through the ELSTER portal or your ERiC-based routine. Automated transmission via an external filing pipeline can be wired through the XML-RPC/JSON-RPC trigger as an extended-scope option.
Yes. Mappings live in a configurable model, not hard-coded IDs, so your bookkeeper decides which Odoo tax feeds each Kennziffer (81, 86, 66, 61, and so on) without a code change. We set up the initial mapping with you and hand over a signed-off reconciliation sheet.
A build-to-order Odoo module that generates ELSTER-compatible XML for the German Umsatzsteuervoranmeldung (UStVa), mapping your Odoo tax lines to the correct Kennziffern for upload. Scoped, built, installed and supported by ECOSIRE — this is not an off-the-shelf download.