SKAT Z-report + moms rapport — the daily close in plain English.

Every Danish repair shop produces (or should produce) a Z-report every trading day. Every month or quarter that Z-report series rolls up into a moms rapport that goes to SKAT. Here's what each one has to contain, what SKAT does with it, and how to make it a one-click action instead of a Sunday evening.

tl;dr

The Z-report is your daily sales close: total turnover, VAT split by rate, payment-method breakdown, invoice-number range for the day. Produced once per trading day, never altered afterward. The moms rapport is the monthly (or quarterly) VAT return built from the sum of those Z-reports. SKAT reconciles them against each other. A good POS automates both; a spreadsheet-based close hides errors that only surface at inspection.

What a Z-report actually is

Z-reports date back to electronic cash registers from the 1980s, when the "Z key" told the register to print the final totals for the day and reset the daily counters. The word has stuck even though no one is pressing a mechanical key any more. The job it does is unchanged: produce an unalterable, line-by-line summary of a trading day's sales activity.

The Danish Bookkeeping Act and VAT Act don't name "Z-report" specifically — they require complete, chronological, documented bookkeeping. In practice, SKAT inspectors expect to see a daily Z-report series as the proof. Running a POS that doesn't produce one creates a gap in your documentation that you'll have to explain, and the burden is on you.

What goes in a Danish repair-shop Z-report

At a minimum, every day's Z-report needs the following, broken down and totalled:

Example — single-branch repair shop, mixed VAT

Z-report for 2 October 2026 · Branch "PCIT Service · Rødovre"

LineDKK
Standard-rate sales (25% VAT)repair labour + new parts12,400
  Ex-VAT9,920
  VAT 25%2,480
Brugtmoms sales2 refurb phones7,000
  Gross margin2,800
  Brugtmoms (20% of margin)560
Total gross turnover19,400
Dankortvia SumUp14,200
MobilePay3,100
Cash2,100
Transaction count34
Voids0
Refunds0
Invoice range2026-1041 → 2026-1074
VAT owed from todaynormal + brugtmoms3,040

Produced once, immutable, retained for 5 years (per bogføringsloven §12 — see the bogføringslov guide). That's the baseline. A good POS does this automatically at end-of-day; a bad one asks you to do it manually, which is where errors creep in.

From daily Z-reports to the monthly moms rapport

The moms rapport is Denmark's VAT return — filed to SKAT via TastSelv Erhverv, either monthly or quarterly depending on turnover. It summarises the VAT activity for the period: output VAT collected on sales, input VAT paid on purchases, and the net VAT owed to (or refundable from) SKAT.

The construction is straightforward if your Z-reports are clean:

  1. Sum the standard-rate output VAT across every Z-report in the period.
  2. Sum the brugtmoms output VAT across every Z-report in the period, as a separate line.
  3. Pull input VAT from your purchase ledger (deductible VAT on parts, overhead, equipment).
  4. Net VAT owed = output VAT (standard + brugtmoms) − input VAT.
  5. File through TastSelv Erhverv. Pay via bank transfer or the SKAT payment link.

Filing frequency by turnover

Most independent repair shops sit well under 5 million DKK and file quarterly. Growing chains or busy multi-branch operators sometimes cross into monthly in year 2 or 3. New businesses default to quarterly for the first year.

How SKAT uses the two together

Inspectors reconcile the moms rapport against the daily Z-report series. If the quarterly moms rapport says 85,000 DKK of output VAT, the sum of every Z-report's VAT lines in that quarter should also be 85,000 DKK. When it doesn't match, SKAT has questions.

Common reconciliation failures:

SKAT inspector shortcut: they pick a random trading day. Ask for the Z-report. Pull the invoice numbers. Verify the invoice range is complete (bogføringslov §§4-5). Verify the day's VAT matches the moms rapport proportion for the period. Three minutes, one day, one data point — and if any piece doesn't line up, the inspection widens.

Exporting to your accountant

The four Danish accounting products a repair shop is most likely to run — e-conomic, Dinero, Billy and Uniconta — all import a daily Z-report feed and build the moms rapport for you from the general ledger. The practical requirement is that your POS exports the Z-report in a format one of them can ingest without you re-typing anything.

a1RepairFlow handles all four natively. The daily Z-report posts automatically to the accounting system, with the brugtmoms line correctly flagged. The moms rapport is then produced by the accounting side using data your POS already provided — your accountant files it with one click.

Common Z-report mistakes

Running two POS tills without a merged Z-report

If a shop has two tills — one at the counter, one on a tablet for the tech bench — each till produces its own Z-report. That's fine as long as they merge into a single branch-level daily close. If they stay separate, your invoice sequence has to be branch-shared (so you don't issue invoice 1001 from both tills on the same day). The moms rapport should pull from the merged branch total, not the two individual tills.

Z-reporting over midnight

A long-hours shop that stays open past midnight needs a decision: does the trading day cut at midnight, or at the actual close? Both are valid, but it must be consistent. The Z-report date must match the invoice-sequence date, must match the payment-processor reconciliation date. Mixing conventions over a weekend is the classic source of a reconciliation mismatch nobody can trace.

Credit notes dated to the original invoice period

If a customer disputes an invoice from June and you issue a credit note in August, the credit note goes in August's Z-report — not June's. The accounting-side moms rapport handles the period-shift separately. Backdating the credit to June breaks both the invoice sequence and the Z-report series.

Cash variance ignored

Cash drawer at close is 2,087 DKK, your Z-report says it should be 2,100 DKK. That 13 DKK discrepancy is normal (bad counting, rounding on cash payments, a missed sale). What's not normal: letting it accumulate silently. Over a year, 10 DKK a day becomes 3,650 DKK, which SKAT will treat as suspected unreported revenue. Log the variance on every Z-report, no matter how small.

How a1RepairFlow does the daily close

The 5-minute checklist

  1. Every trading day produces a Z-report, automatically or by habit.
  2. Z-reports are immutable once produced (no manual edits after the fact).
  3. VAT is split by rate — standard, brugtmoms, zero-rated — as separate lines.
  4. Payment-method totals reconcile to the daily payout from each terminal/provider.
  5. The daily invoice range is gap-free; cancelled invoices stay in-sequence as cancellations.
  6. Cash variance is logged every day, not ignored.
  7. Monthly or quarterly moms rapport ties exactly to the sum of the Z-reports in the period.

The daily close in one click.

Automatic Z-reports, correct VAT splits, direct accounting export. 14-day Pro-tier free trial, no credit card.

Start free trial →