Billing guide

Exports

Accounting exports and reports

Exports are immutable local snapshots of merchant-scoped posting resources. Creating an export records the exact posting IDs in the export resource and creates separate file resources; postings are not mutated. Preview and export requests therefore do not change invoice or ledger truth.

The checked-in Frisbii schema names six formats: Datev, Lexware, BillwerkSap, DatevExtf, Ewe, and Pons. This implementation enables only DatevExtf. The other names return FormatUnsupported; they are not generic CSV files carrying a misleading vendor label.

DATEV EXTF requires explicit merchant settings for DatevConsultant, DatevClient, FirstMonthInFiscalYear, account mappings and complete postings. Output uses a DATEV EXTF identifier/header, semicolon-separated quoted fields, CRLF and Windows-1252. It remains a local compatibility implementation until an import test against the currently licensed DATEV format and the intended accounting workflow succeeds. DATEV documents the DATEV-Format as structured posting and master data exchange and the Buchungsdatenservice as transport for those files: DATEV accounting:extf-files.

The Buchungsstapel rows use DATEV’s positional core layout, not a selectable-column shortcut: amount, debit/credit marker, currency, exchange rate, base amount, base currency, account, contra-account, BU key, document date, document fields 1 and 2, cash discount, and booking text. Unused positions remain empty so later values never shift left. The EXTF administration row has 31 positions and identifies interface 700, data category 21, Buchungsstapel, format version 13. The implementation emits only the documented variable 14-field core and no optional KOST, EU-tax, document-link, or newer extension fields.

DATEV marks amount, debit/credit, account, contra-account and document date as mandatory. This implementation additionally requires an ISO currency and rejects fractional precision beyond two decimal places, account values outside the documented numeric width, document field 1 above the published width, booking text above 60 characters, and batches crossing a fiscal-year boundary. Invoice-engine postings currently have no automatic account/contra-account assignment; exports of those rows fail with ExportPostingInvalid until explicit accountant-approved mappings populate both accounts and the mandatory DebitCredit value (S or H). The amount sign is never used to guess which side the mapped account belongs to. Text is accepted only when it is free of control and newline characters and exactly representable in Windows-1252; the exporter never replaces characters silently. It never guesses an SKR account, booking direction, or tax key.

Authoritative DATEV sources:

Reports snapshot persisted source resources into JSON, JSON Lines or CSV. Implemented report types are Invoices, Orders, Contracts, and TransactionsFiltered. Other official enum values fail with ReportUnsupported until their business meaning is implemented. Direct downloads return the stored immutable bytes. Download-link endpoints require signed download tokens; without it they fail rather than returning unsigned bearer URLs.

Tax/account mappings and fiscal-year settings are merchant configuration. No export calls DATEV, Lexware, SAP, EWE, Pons, a payment provider, or another production system.

Export the payment log as CSV

  1. Open Logs → Zahlungstransaktionen.

  2. Select Von and Bis einschließlich, optionally choose a status and Vorautorisierungen ausblenden, then click Filtern.

  3. Click CSV exportieren. The report detail shows the selected period, language and row count.

  4. Use Download to retrieve the saved file. It is also listed under Reporting.

The export includes all matching payments, independently of the displayed page, up to 10,000 rows and 10 MiB. Larger exports require a narrower period. Saved files remain unchanged when payment data subsequently changes. Repeating a request with the same idempotency key returns the same report; changing its filters requires a new key. Creation, replay and failure are recorded with the merchant administrator and request ID.

The captured German Frisbii format has 19 columns, UTF-8 without BOM, semicolon separators, CRLF records and decimal commas. Filtering uses the payment creation time and the merchant’s local calendar days. The CSV columns Timestamp and ConfirmedAt use the status and confirmation times in UTC. Amounts remain numeric; text cells receive CSV quoting and formula protection, including quoted multiline diagnostics.

This explicit administrator export includes the current status’s canonical error code, provider error code and provider message. It reads individual bounded fields. The ordinary log view keeps its existing restricted projection.

This workflow requires a merchant administrator session and also works for a read-only imported account because it creates a derived report. Its filter metadata is private to the application; it does not extend the generic public ReportingParametersDTO, and API credentials cannot retrieve these administrator export artifacts.

Export the order log as CSV

Open Logs → Bestellungen, set both dates and any search, status or type filters, then apply Filtern. CSV exportieren creates a saved report containing every matching order, up to the same 10,000-row and 10-MiB limits. Open its report detail and select Download.

The observed German order format has 23 columns. Timestamp is the order creation time in UTC; Amount is the net order total. Contact and address columns come from the stored order’s customer snapshot. Provider and method come from its recorded contract fields. Missing optional values remain empty, and malformed or oversized canonical fields stop the export with a validation error.

Order and payment CSV use the same authenticated, idempotent and immutable report handling while retaining separate formats and metadata. Existing payment reports remain downloadable without conversion after the shared implementation change.

Export the refund log as CSV

Open Logs → Erstattungen, apply Von and Bis einschließlich together and optionally narrow the transaction search or status before selecting CSV exportieren. The saved report contains all matching refunds independently of the visible page, up to 5,000 rows and 10 MiB. A larger result requires a narrower period.

The captured source format contains exactly TimeStamp, PaymentTransactionId, Amount and Status in that order. It uses UTF-8 without BOM, semicolons and CRLF. TimeStamp is rendered in UTC, the amount uses a decimal comma and the canonical status remains Succeeded or Failed. For qualified imported payments, the CSV restores the original source payment ID; it never substitutes the deterministic local imported ID. Missing, foreign, unqualified or ambiguous payment identities stop the export.

Refund CSV uses the same immutable, administrator-only report handling as payment and order CSV. Both currently applied dates are required. The private refund marker distinguishes it from the other local CSV formats; mixed markers fail integrity verification. The stored technical report type remains the pinned TransactionsFiltered enum because the pinned report schema contains no refund-specific value. This is a local storage choice and does not claim a source report-type mapping. No refund, payment or provider operation is executed.

An API client with write scope can create a separate public CSV snapshot:

POST /api/v1/paymenttransactions/downloadlink?dateFrom=2026-09-01T00%3A00%3A00Z&dateTo=2026-10-01T00%3A00%3A00Z&excludePreauth=true
Authorization: Bearer ACCESS_TOKEN
Idempotency-Key: payment-export-september-2026
Accept: application/json

No request body is required. A successful response is 201 with Url and Expiry. GET that URL before its five-minute expiry to download the saved CSV. Treat the URL as a bearer credential. The bytes remain unchanged if the source payments change later; altered snapshots invalidate their existing links.

Both timestamps are required: dateFrom includes the boundary and dateTo excludes it. Selection uses canonical payment creation time, including timezone offsets and fractional seconds. Optional status uses the documented payment status enum; excludePreauth defaults to false. Nonempty search currently returns 422 because its matching semantics remain unverified.

This local public profile contains 17 columns through ErrorCode, excluding private provider error codes and messages. It uses UTF-8, semicolons, CRLF and German decimal notation with spreadsheet formula protection. It is not a claim of identical Frisbii public-export formatting and does not grant access to the separate administrator CSV reports.

Limits are 10,000 matching rows and 10 MiB of output; larger selections fail without truncation. An empty selection creates a header-only CSV. An ImportOnly merchant receives 409 for this API snapshot creation operation. No payment or provider action occurs.

Retry with the same idempotency key and identical query after a transport error. Replay returns the original response, including its original expiry. To create a new snapshot and link after expiry, use a new key. Reusing a key with changed filters returns a conflict.

Manage reusable PDF attachments

Open Einstellungen → Anhänge and choose Anhang hinzufügen. Enter an internal name of at most 25 characters, select one PDF of at most 500 KiB (512,000 bytes), then save. The list links to the editor and an explicit deletion confirmation.

In the editor, Herunterladen retrieves the stored PDF. Select another PDF to replace it, or save only the name to retain the existing file. Removing a new file selection leaves the stored file unchanged. Read-only accounts and attachments cannot be changed; stale edits must be reloaded before saving.

This administrator library stores reusable PDFs. It does not automatically include them in outgoing emails and does not implement Frisbii’s private attachment API. Template assignment and email snapshot integration remain separate features.