Skip to main content

Changelog

This page lists relevant changes and updates in fiskaltrust's cloud services, on-premise products, and documentation.

You can subscribe to all changelogs via RSS, follow the GitHub repo, or display categories of changes by tags.

Middleware 1.3.90

· 7 min read
PosCreator Experience Team
The team working on the Middleware and other products for PosCreators

Static Badge

With this release, the handling of fiskaly TSE states in Germany was improved, and the German Queue now supports abort receipts (AVBelegabbruch). In Italy, the handling of customer tax identifiers was reworked — the codice fiscale is now read from cbCustomer.CustomerTaxId (a breaking change) — and receipt recovery after network errors with Epson RT printers is now significantly more reliable.

caution

Customers in Austria and France should continue to use version 1.2 of the middleware. We are working on a unified version for all markets.

🇩🇪 Bug Fix: Improved handling of fiskaly TSE states (fiskaltrust/middleware#777)​

The fiskaly SCU now recognizes the additional TSE states DELETED, DEFECTIVE, and EVICTED and reports them as Terminated. Previously, unknown states could cause requests to fail; they are now logged instead of aborting the request.

Affected packages:​

  • fiskaltrust.Middleware.SCU.DE.FiskalyCertified

🇩🇪 Feature: Support for abort receipts (AVBelegabbruch) (fiskaltrust/middleware#792)​

The German Queue now supports the new receipt case 0x001A (abort-receipt) for recording aborted receipts according to DSFinV-K (transaction type AVBelegabbruch). POS systems can use this receipt case to properly document receipts that were aborted before completion; the request must use the implicit flow, include a receipt reference, and must not contain any pay items.

Affected packages:​

  • fiskaltrust.Middleware.Queue.AzureTableStorage
  • fiskaltrust.Middleware.Queue.EF
  • fiskaltrust.Middleware.Queue.MySQL
  • fiskaltrust.Middleware.Queue.SQLite

🇩🇪 Feature: German receipt case data can now be sent via the v2 interface (fiskaltrust/middleware#793)​

The German Queue now supports the v2 format for German-specific fields in ftReceiptCaseData additionally to the v1 format. In the v2 format, these fields are sent wrapped in a DE key inside ftReceiptCaseData (e.g. { "DE": { "RefReceiptId": "..." } }) instead of at the top level as in v1.

warning

When using the LocalPosSystemApi helper version 1.3.90 or later, make sure to also update the Queue to version 1.3.90 or later.

Affected packages:​

  • fiskaltrust.Middleware.Queue.AzureTableStorage
  • fiskaltrust.Middleware.Queue.EF
  • fiskaltrust.Middleware.Queue.MySQL
  • fiskaltrust.Middleware.Queue.SQLite

🇮🇹 Breaking Change: Customer codice fiscale is now read from cbCustomer.CustomerTaxId (fiskaltrust/middleware#775)​

The Italian SCUs now read the customer's codice fiscale from cbCustomer.CustomerTaxId instead of cbCustomer.CustomerId. Send the codice fiscale (16 characters) in CustomerTaxId and the partita IVA (11 digits, optionally prefixed with "IT") in CustomerVATId. Companies that use their partita IVA as their codice fiscale must send it in CustomerVATId.

Action required: POS systems that send the codice fiscale in cbCustomer.CustomerId must switch to cbCustomer.CustomerTaxId; a value left in CustomerId is ignored.

Affected packages:​

  • fiskaltrust.Middleware.SCU.IT.CustomRTPrinter
  • fiskaltrust.Middleware.SCU.IT.CustomRTServer
  • fiskaltrust.Middleware.SCU.IT.EpsonRTPrinter
  • fiskaltrust.Middleware.SCU.IT.EpsonRTServer

🇮🇹 Bug Fix: Customer tax identifiers are validated before reaching the RT device (fiskaltrust/middleware#753)​

Invalid customer tax identifiers (e.g. foreign VAT numbers or mistyped values) previously reached the RT device, which could reject them with a device error and even leave the printer in a non-operational state. The Middleware now validates the codice fiscale (CustomerTaxId) and partita IVA (CustomerVATId) upfront and fails the receipt with a clear error (signature caption it-customer-taxid-invalid) instead. Only Italian identifiers are accepted — make sure your POS system does not send foreign VAT IDs in these fields.

Affected packages:​

  • fiskaltrust.Middleware.SCU.IT.CustomRTPrinter
  • fiskaltrust.Middleware.SCU.IT.CustomRTServer
  • fiskaltrust.Middleware.SCU.IT.EpsonRTPrinter
  • fiskaltrust.Middleware.SCU.IT.EpsonRTServer

🇮🇹 Bug Fix: Customer fiscal code and VAT number now transmitted by the Custom RT Server (fiskaltrust/middleware#738)​

Customer identification data from cbCustomer was previously not forwarded to the Custom RT Server and did not appear on the receipt. The codice fiscale and partita IVA are now correctly transmitted and printed in the receipt footer, labeled "Cod. Fisc./P.IVA".

Affected packages:​

  • fiskaltrust.Middleware.SCU.IT.CustomRTServer
  • fiskaltrust.Middleware.Queue.AzureTableStorage
  • fiskaltrust.Middleware.Queue.EF
  • fiskaltrust.Middleware.Queue.MySQL
  • fiskaltrust.Middleware.Queue.SQLite

🇮🇹 Bug Fix: Prevented duplicate fiscal documents after connection issues with Epson RT printers (fiskaltrust/middleware#763)​

When a connection issue occurred after an Epson RT printer had already printed a document, the automatic recovery could print the receipt again, producing a duplicate fiscal document. The Middleware now checks the printer's document counter and recovers the already-printed document instead. If the printer's state cannot be determined, the request fails with epson-printer-network-error-unknown-document-state rather than risking a duplicate — POS systems should handle this error by verifying the printed document on the device.

Affected packages:​

  • fiskaltrust.Middleware.SCU.IT.EpsonRTPrinter

🇮🇹 Bug Fix: More reliable receipt recovery after network errors with Epson RT printers (fiskaltrust/middleware#776)​

During recovery after a network error, the Middleware previously asked the printer only once — after a long fixed wait — whether the receipt had been printed, so busy printers were often misjudged. It now polls the printer with short status checks until it responds, recognizing printed receipts faster and only re-sending a receipt when the printer confirms nothing was printed. The recovery timing can optionally be fine-tuned via new configuration parameters (RecoveryVerdictTimeoutMs, RecoveryVerdictPollIntervalMs, RecoveryStatusQueryTimeoutMs, and RelayCommandTimeoutMs).

Affected packages:​

  • fiskaltrust.Middleware.SCU.IT.EpsonRTPrinter

🇮🇹 Bug Fix: Receipts can no longer be matched to a fiscal document of a previous receipt after a printer communication error (fiskaltrust/middleware#780)​

If a receipt ended with an unknown document state after a communication error, the next receipt could in rare cases be assigned the fiscal document number of the previous receipt, even though it was never printed. The Middleware now re-checks the printer's document counter after such an error, ensuring each receipt is only matched to a document actually printed for it.

Affected packages:​

  • fiskaltrust.Middleware.SCU.IT.EpsonRTPrinter

🇮🇹 Bug Fix: Multi-use voucher redemption as a charge item no longer fails on the Epson RT Printer (fiskaltrust/middleware#769)​

Redeeming a multi-use voucher (buono multiuso) sent as a negative charge item previously caused the Epson RT Printer to reject the receipt. Such redemptions are now correctly registered as a "sconto a pagare" payment — for sales as well as refunds and voids — in line with the requirements of the Agenzia delle Entrate.

Affected packages:​

  • fiskaltrust.Middleware.SCU.IT.EpsonRTPrinter

🇮🇹 Bug Fix: Stopped printing ftChargeItemCaseData verbatim on Epson RT Printer receipts (fiskaltrust/middleware#758)​

The Epson RT Printer SCU previously printed the raw content of ftChargeItemCaseData (often JSON metadata) as free text under each item on the receipt. This field is no longer printed, aligning the Epson RT Printer with all other Middleware components. If your POS system relied on this to print additional text below items, use cbReceiptLines in ftReceiptCaseData instead.

Affected packages:​

  • fiskaltrust.Middleware.SCU.IT.EpsonRTPrinter

🇮🇹 Bug Fix: Receipt copies on Epson RT printers no longer fail after printing (fiskaltrust/middleware#748)​

Receipt copies (reprints) could fail with an error because the response was missing the RT serial number, even though the printer had already printed the copy — and retrying could produce a duplicate printout. The Middleware now falls back to the printer's cached serial number, and all Italian SCUs always include the serial number field in receipt signatures.

Affected packages:​

  • fiskaltrust.Middleware.SCU.IT.CustomRTPrinter
  • fiskaltrust.Middleware.SCU.IT.CustomRTServer
  • fiskaltrust.Middleware.SCU.IT.EpsonRTPrinter
  • fiskaltrust.Middleware.SCU.IT.EpsonRTServer

🇮🇹 Bug Fix: Refunds and voids without a receipt reference are now processed correctly on the Epson RT Server (fiskaltrust/middleware#729)​

Refunds and voids without a reference to the original receipt previously returned an error even though the RT Server had already registered them, and triggered a "wrong date reference" warning on the device. They are now registered cleanly as untraceable refunds/voids with "ND" (no reference) in the document header, as defined by the Epson specification.

Affected packages:​

  • fiskaltrust.Middleware.Queue.AzureTableStorage
  • fiskaltrust.Middleware.Queue.EF
  • fiskaltrust.Middleware.Queue.MySQL
  • fiskaltrust.Middleware.Queue.SQLite
  • fiskaltrust.Middleware.SCU.IT.EpsonRTServer

🇮🇹 Bug Fix: Failed copy receipts now return a proper error response (fiskaltrust/middleware#726, fiskaltrust/middleware#791)​

When a copy receipt (or any other receipt) could not be processed by the RT device, the request previously failed with an internal error (HTTP 500) instead of a response. Such receipts now return a regular receipt response with the error state set, so POS systems receive a clear error they can react to.

Affected packages:​

  • fiskaltrust.Middleware.Queue.AzureTableStorage
  • fiskaltrust.Middleware.Queue.EF
  • fiskaltrust.Middleware.Queue.MySQL
  • fiskaltrust.Middleware.Queue.SQLite