Datevz for Craft CMS

For Craft Commerce 5 · Germany

The file your Steuerberater asked for

Your tax practice wants a Buchungsstapel — a DATEV-Format CSV, one line per booking, that imports straight into DATEV Rechnungswesen. Datevz writes it from your Commerce orders, with the German VAT already worked out, and shows you every posting before the file exists.

Datevz

One order, one posting

€100 of goods at 19%, as it lands in the file. Gross against the debtor in Soll, revenue in Gegenkonto, Belegdatum as TTMM. The direction lives in the Soll/Haben column — Umsatz is never signed, because a negative one is a rejected import.

csv
Umsatz  S/H  WKZ  Konto  Gegenkonto  BU  Belegdatum  Belegfeld 1
119,00  "S"  EUR   1400        8400          1503        "RE-1042"

# The revenue account is an Automatikkonto — it carries its own tax
# rate, so the BU-Schlüssel column stays empty. Passing a BU key
# alongside one is a conflict, not extra safety.

What it does

The whole job, from a completed order to a file the practice can import — and a refusal, by name, when something would import wrong.

Preview before the file exists

See every posting a period would produce, grouped by order, with each problem sitting under the order that caused it.

  • The preview and the export run the same code
  • No second implementation that could drift

German VAT, decided per order

Domestic, EU distance sale under One Stop Shop, reverse charge on a valid VAT ID, or an export outside the EU — read from where the goods went and who bought them.

  • VAT IDs checked for all 27 member states
  • Never calls VIES — no outbound requests at all

SKR03 and SKR04 presets

Fill the whole chart of accounts from one button, then change whatever your practice does differently. A preset never overwrites a number you have already set.

Reconciles to the cent

Everything is done in integer cents, and no batch is written until each order's postings add back up to its total. A weighted split gives back exactly what it was given.

  • A cent of inclusive-tax rounding can go to a rounding account
  • Anything larger stops the export and names the order

Debtors, collective or personal

Book every receivable to one account, or allocate a personal account per customer from a range you choose — keyed to the customer and falling back to their email, so a guest who later registers keeps one number.

  • Numbers are allocated once and never reused
  • Export them as a Debitoren/Kreditoren master-data file

Payments, fees and refunds

Each successful transaction books against the money account for its gateway. A refund puts the money back and reverses the revenue the way a credit note does — posting only the money leaves the debtor account out of balance.

  • Gateway fees only when the gateway recorded one — nothing estimated

A batch archive you can prove

Every file is stored whole with a sha256 of the delivered bytes. Months later you can show that the copy the practice holds is the copy Datevz produced.

  • An exported order stays out of the next batch
  • Delete a batch and its orders are released again

Runs on a cron, fails loudly

Export a month from the command line, write the file where your backups are, and let a dry run exit non-zero when it finds problems — so a scheduled batch tells you instead of mailing a broken file.

Refuses, rather than guesses

A DATEV import is not a good place to find out about a mapping mistake. Each of these stops the export and names the order — and still shows you every other order in the batch.

text
ERROR   The orders fall in 2 different fiscal years. Export one year at a time.
        → Belegdatum carries only a day and a month; the year comes from the
          header. Half the batch would book into the wrong year, silently.

ERROR   [RE-1042] No account is mapped for Kaffeebohnen at 7%.

ERROR   [RE-1088] The postings come to 118,99 but the order total is 119,00.

WARNING [RE-1103] Booked as Export, but the order carries 19,00 of tax.
        → Not Datevz's to fix. Your tax zones and the destination disagree.

Questions

Hand your practice the file they asked for

$99, one edition, everything in it. Renewal is $79 a year for updates, and the plugin keeps working when it lapses.