Skip to main content
UStVa Export für ELSTER Basic — A build-to-order Odoo module that generates ELSTER-compatible XML for the German Umsatzsteuer — 1/1Illustrative preview

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.

What is UStVa Export für ELSTER Basic?

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 $999.00 USD; request a quote for a scoped proposal.

Key Features

`ustva.declaration` model representing a single filing period with state (draft/generated/locked) and period + Steuernummer header fields
Configurable tax-to-Kennziffer mapping model (e.g. 81, 86, 35/36 net and 66, 61 input tax) so mappings change without code edits
Compute layer using `@api.depends` over posted `account.move` / `account.tax` lines to aggregate net and VAT amounts per period
ELSTER-compatible XML generation following the UStVa `Nutzdaten` schema, produced as a downloadable `ir.attachment`
QWeb summary report per declaration for internal review and sign-off before any portal submission
XML schema/structure validation before export so malformed payloads are caught in Odoo, not at the portal
Deterministic regeneration — re-running a corrected period rebuilds the XML from current posted entries
Optional automated action that flags a locked period when new postings would change its totals
`ir.model.access.csv` plus record rules restricting generation and viewing to the accounting team
Multi-company aware: per-company Steuernummer, mapping and record-rule scoping (base scope is single company)
XML-RPC/JSON-RPC endpoint to trigger period generation from an external ERiC/filing pipeline
Reverse-charge and intra-community lines mapped to their correct Kennziffern per your configuration
Delivered for your chosen Odoo 17.0, 18.0 or 19.0 and validated on both Community and Enterprise accounting
Clean `__manifest__.py` with an explicit `account` dependency and no undeclared external requirements

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

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 one working week from confirmed scope. Pricing starts from $999 (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.

What you get

  • Installable module source code built for your Odoo major version (17.0 / 18.0 / 19.0)
  • Installation and configuration on your environment, including tax-to-Kennziffer mapping setup
  • Technical documentation: model reference, mapping configuration, and XML schema notes
  • User guide plus a live training session for your accounting team
  • UAT on a staging copy of your database with a documented rollback plan
  • Post-go-live support window for defect fixes and configuration adjustments
  • Handover of the private git repository with full commit history
  • Signed-off Kennziffer mapping sheet reconciling your Odoo taxes to ELSTER fields

Who this is for

In-house accounting team running Odoo

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.

Fiduciary / Steuerberater serving Odoo clients

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.

Odoo administrator / ERP lead

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.

Finance operations manager at a multi-entity group

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.

How UStVa Export für ELSTER Basic Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Delivery modelBuilt, installed and supported for your setupYou hire and manage a developerInstant download, self-installAlready in Odoo, no VAT export
ELSTER XML outputValidated UStVa XML against your mappingDepends on the developer's schema knowledgeGeneric XML, may not fit your KennziffernNone — totals only, no ELSTER file
Kennziffer mappingConfigurable model, set up and signed off with youWhatever you specify and pay to buildFixed defaults, hard to adjustNo concept of Kennziffern
Edition & version fitBuilt for your exact 17/18/19, Community or EnterpriseScoped per engagementFixed version list, may lag your upgradeShips with the version you run
Access control`ir.model.access.csv` + record rules scoped to accountingOnly if you specify itBasic group accessStandard accounting groups
Support & updatesPost-go-live window + optional maintenanceYou own all future fixesVendor forum / paid ticket, variableOdoo core updates, no UStVa scope
Multi-companyPer-entity Steuernummer & scoping (extended scope)Buildable at added costOften single-company onlyMulti-company accounting, no export
Total cost of ownershipFrom $999 indicative + optional maintenanceHighest — full dev + upkeepLow upfront, integration effort on youIncluded, but doesn't solve the task

Frequently Asked Questions about UStVa Export für ELSTER Basic

Is this an existing app I can download and install today?

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.

How long does delivery take?

Typically one working week 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.

How does pricing and scoping work?

Pricing starts from $999 (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.

What about support and future Odoo updates?

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.

Does it work on Odoo Community and Enterprise, and which versions?

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`.

Does the module submit the return to ELSTER automatically?

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.

Can we control the tax-to-Kennziffer mapping ourselves?

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.

Request a quote

UStVa Export für ELSTER Basic

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.

  • `ustva.declaration` model representing a single filing period with state (draft/generated/locked) and period + Steuernummer header fields
  • Configurable tax-to-Kennziffer mapping model (e.g. 81, 86, 35/36 net and 66, 61 input tax) so mappings change without code edits
  • Compute layer using `@api.depends` over posted `account.move` / `account.tax` lines to aggregate net and VAT amounts per period
  • ELSTER-compatible XML generation following the UStVa `Nutzdaten` schema, produced as a downloadable `ir.attachment`

Request a Quotation

Tell us about your UStVa Export für ELSTER Basic requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.