Skip to main content

eInvoicing — Overview

This page describes how eInvoicing works across fiskaltrust markets from a PosCreator's perspective: the shared integration model that every market follows, and what changes from one market to the next. For a specific market, follow its country page (see Availability by market).

For the product-level concept — structured invoices, Peppol, e-Delivery — see Delivery (/issue Endpoint). This page is the integration-focused companion to it.

One integration, many markets

eInvoicing is produced and delivered through the /sign and /issue calls your POS already uses — same account, same fiskaltrust.Middleware, same credentials. It is enabled by configuration per market, not by a new integration. Where a market is live via the API, the new behaviour is additive inside calls you already make. Producing a valid eInvoice is new behaviour enabled by configuration; fiscalizing a receipt does not by itself make it a valid eInvoice.

The shared model

Across markets, eInvoicing is layered onto the existing fiscalization flow through three endpoints you already have:

ElementRole in eInvoicing
/signProduces the structured eInvoice document (an EN 16931 profile, or a national schema) alongside the existing fiscalized receipt.
/issueOptional. Registers the receipt (ReceiptRequest + ReceiptResponse) and delivers it to a recipient — a channel such as email/SMS, print, download, or a network.
/journalExports the operation data you sent, for audit and closings. It does not archive the eInvoice — revision-safe archiving is a separate concern.

The connection, authentication, and endpoint surface do not change — no new endpoints, request headers, or credentials.

Status is polled, not pushed

The PosSystem API is request/response and idempotent. There is no status webhook in any market — you re-check delivery/clearance status by calling the issue endpoint again (GET /issue/{queueId}/{queueItemId}). The x-operation-id header is the idempotency key that makes retries safe (reused unchanged on a retry, it re-returns the original result instead of re-executing) — it is not itself a status channel. This is the one invariant across every market.

The integration flow

Where the API path is available, the flow is the same shape everywhere — your existing fiscalization flow with one added step:

StepWhat happens
1. SignCall /sign as you do today. The response also carries the eInvoice document.
2. Issue for delivery (optional)Register the receipt via /issue, then deliver it to a channel.
3. Poll for statusPoll GET /issue/{queueId}/{queueItemId} until delivered / cleared. No webhook.

What varies by market

The model is constant; the specifics are market-driven:

  • Format — an EN 16931 profile (XRechnung, Factur-X/ZUGFeRD) or a national schema (FatturaPA, KSeF FA(3), ebInterface).
  • Network / target — Peppol, a national clearance hub (SDI, KSeF), or a national portal.
  • Regulatory model — post-audit (no clearance) vs. centralised clearance (the invoice is cleared before it is legally valid).
  • Availability — some markets are live via the API, one runs through the Portal / InStore App, and one is a build in progress.
  • Signatures & identifiers — e.g. an XAdES signature (Italy) or routing identifiers (Leitweg-ID, CodiceDestinatario, KSeF number).

Exact case codes, delivery targets, and go-live status live on each country page.

Availability by market

MarketRegulatory modelDelivery path
Austria (AT)B2G mandated; B2B optionalPortal back office / InStore App today (POS-driven API pending)
France (FR)B2B, decentralised (PDP)API — /sign + /issue via the Plateforme Agréée
Germany (DE)B2B, post-auditAPI — /sign + /issue via Peppol
Italy (IT)B2G/B2B/B2C, centralised clearanceAPI — /sign + /issue via SDI
Poland (PL)B2B, centralised clearanceBuild in progress — adapter not yet shipped
EU (cross-border)Voluntary — no national mandateAPI — /sign + /issue via Peppol

Each market's Overview and Setup & testing pages live under its entry in Country-Specific Guides (in the sidebar).

Prerequisites (shared)

RequirementDetail
fiskaltrust account + fiskaltrust.MiddlewareAn active account with a configured fiskaltrust.Middleware. See Portal registration.
Existing fiscalization integrationYour POS already fiscalizes via /sign in the target market.
fiskaltrust.Middleware country configurationSet to the market's locale — this drives the output format.
PosSystem API (v2)eInvoicing is exposed through the PosSystem API (v2). If you don't integrate with it yet, start with the PosSystem API introduction.
Sandbox validationRun one document end to end against a sandbox fiskaltrust.Middleware before the first live document.

Terminology

TermMeaning
EN 16931The European semantic standard the national eInvoice formats are profiles of.
PeppolA network eInvoices can be delivered over; fiskaltrust holds the access point.
Receive mandateThe date from which a business must be able to accept an incoming eInvoice.
Issue mandateThe date from which a business must send its invoices as eInvoices.

Market-specific terms (XRechnung, ZUGFeRD, FatturaPA, XAdES, SDI, CodiceDestinatario, KSeF, Leitweg-ID, …) are defined on each country page.