Datevz for Craft CMS

Configuration

The practice

SettingWhat it does
Beraternummer / MandantennummerIdentify the practice and client in the header. Env-parseable.
DiktatkürzelTwo characters naming whoever prepared the batch.
HerkunftskennzeichenTwo characters identifying the system the batch came from. RE is conventional for an external system.
Exportiert vonBlank uses the name of whoever runs the export.
WirtschaftsjahrThe month and day the fiscal year starts. Decides the year the postings land in.
Sachkontenlänge4–8. Debtor accounts are this plus one.
Format version13 (125 columns) or 12 (121 columns). Ask the practice if an import is refused.
ZeichensatzWindows-1252, like DATEV's own exports, or UTF-8 with a BOM.
FestschreibungMarks the postings final so DATEV will not allow them to be edited after import.

What gets exported

Order statuses — leave everything unchecked to export every completed order.

Belegdatum — the order date or the payment date. This is also the date the export period filters on, so a batch labelled March does not quietly contain a February order paid in March.

Belegfeld 1 — the order reference, order number, short number or ID. DATEV allows 36 characters from a restricted set; anything else is dropped rather than substituted, because a replacement character would change the document number your accountant matches on.

Buchungstext — an object template rendered against the order, trimmed to 60 characters.

Tax treatment

Sitzland is the country the shop supplies from; blank uses the Commerce store's location address.

Reverse charge treats an EU order carrying a valid VAT ID for its own country as a tax-free intra-community supply. The number comes from the address's Organization Tax ID, which is where Craft 5 keeps it. It is checked for shape, never against VIES: a checkout must not depend on a foreign service being up.

One Stop Shop books EU distance sales to the destination country's own account. It is off by default because a shop that has not registered for OSS should keep charging home VAT. Switching it on without mapping accounts for the countries you actually sell to is reported as a problem before anything can reach a file.

Accounts

Each revenue account has a BU-Schlüssel field beside it. Leave it empty when the account is an Automatikkonto — 8400, 8300, 4400 and 4300 all carry their own tax rate, and passing a BU key alongside one is a conflict rather than a belt-and-braces measure.

SKR03SKR04
Revenue, standard rate84004400
Revenue, reduced rate83004300
Intra-community supply81254125
Export81204120
Discounts granted87004700
Gateway fees49706855
Money (Geldtransit)13601460

Rundungsdifferenzen is deliberately blank. Leave it that way and any order whose postings do not add up to its total is refused; fill it in and differences within the tolerance are booked there instead.

Mapping rules

Rules beat the accounts above. Match a SKU (BOOK-* works), a product type, a category or a shipping method, and send it to an account of its own. First match wins, so put the specific rules first.

Payments

Post payments books each successful transaction against the money account mapped for its gateway. A Geldtransit account (1360 / 1460) is the usual choice, because the money is on its way from the gateway rather than in the bank.

Gateway fees are booked only when the gateway recorded one on the transaction. Nothing is estimated.

Refunds post the money movement and — unless you turn it off — reverse the revenue the way a credit note does. Posting only the money leaves the debtor account permanently out of balance.

Behaviour

Never export an order twice leaves an order that is already in a batch out of the next one. Deleting a batch releases its orders again.

Rundungstoleranz is how far the postings may fall from the order total before the export refuses. Two cents is the default, and it only applies when a rounding account is set.