Skip to main content

Recreatex documentation

System behaviour with SAF-T enabled

POS receipts are always printed

When the SAF-T active setting is enabled in SydAdmin, all points of sale (POS) within the corresponding division must comply with SAF-T requirements.

Mandatory receipt printing

  • A POS receipt must always be printed when SAF-T is active.

  • To enforce this, the setting Print POS receipt (Modify point of sale screen > tab POS receipt) is automatically set to Always.

System behavior

If a user attempts to save a POS configuration where Print POS receipt (1) is not set to Always, the system will take the following actions:

SAF-T_SydAdmin_POS_Config.png
  • Display a warning message (2). The message informs the user that the setting will be changed to Always to ensure compliance.

  • Change the setting back to Always (3). This change is applied if the user confirms by clicking Yes in the message.

Events and transactions are stored

When SAF-T is enabled, the system stores events and transactions in a new electronic journal.

The codes are prefixed with a basic type:

  • Codes starting with 11 represent transactions.

  • Codes starting with 13 represent events.

The full list of cash register event codes is available in the mentioned document: Norwegian SAF-T Cash Register Data – Code Lists v1.2 (PDF)

  • All transactions and events are logged in the electronic journal.

  • Transactions are digitally signed to ensure data integrity.

SAF-T event and transaction codes

Optional?

(Include when monitored.)

Included

Basic type

Code

Description

Trigger

YES

11

11001

CashSale

At sale creation. A signature is added to the log. That signature is based on the previous signature and the data of the sales header.

        public string GetDataToSign()
        {
            if (string.IsNullOrEmpty(PreviousSignature))
                PreviousSignature = "0";

            return $"{PreviousSignature};" +
                $"{SalesHeader.Date.ToString("yyyy-MM-dd")}" +
                $"{SalesHeader.Date.ToString("HH:mm:ss")};" +
                $"{SalesHeader.SalesNo};" +
                GetFormattedDecimal(SalesHeader.CurrentAmount) + ";" +
                GetFormattedDecimal(SalesHeader.CurrentLineAmount) + "";                
        }

YES

11

11002

CreditSale

Same as CashSale, but registered when a sale is credited.

YES

YES

13

13001

POS application start

At shift start.

YES

YES

13

13002

POS application shut down

At shift end.

YES

13

13003

Employee log in

At employee login.

YES

13

13004

Employee log out

At employee log out.

YES

13

13005

Open cash drawer

At opening cash drawer

  • can be automatic (when user pays after a sale)

  • can be manual (when money is counted)

YES

NO

13

13006

Close cash drawer

Cannot be implemented. No trigger when cash drawer is closed.

YES

13

13007

Update of POS application

Triggered when the version in SystemParameterSetup differs from the last event. The new version is written in the Info field.

YES

13

13008

X report

See the section below.

YES

13

13009

Z report

See the section below.

N/A

13

13010

Suspend transaction

N/A

13

13011

Resume transaction

YES

13

13012

Sales receipt printed

When the sales receipt is printed.

YES

13

13013

Return receipt

When the return receipt is printed.

YES

13

13014

Copy receipt

When the receipt is copied.

YES

13

13015

Provisional receipt

When an intermediate ticket is printed (to put on the table).

N/A

13

13016

Delivery receipt

N/A

13

13017

Training receipt

N/A

13

13018

Other reports or receipts

N/A

13

13019

Cash withdrawal

YES

NO

13

13020

Export of journal to external storage (cash register)

YES

13

13021

Price change

When the article price form is saved.

YES

13

13022

Price lookup

When the Price tab is opened in article form.

N/A

13

13023

Training mode on

N/A

13

13024

Training mode off

YES

NO

13

13025

Memory full

N/A

13

13026

Emergency mode on

N/A

13

13027

Emergency mode off

N/A

13

13028

Void receipt

N/A

13

13029

STEB receipt

N/A

13

13030

Concluded sale without receipt printed

N/A

13

13999

Other

Event 13008: X report and Event 13009: Z report

When exporting cash register data for SAF-T, it is essential to include specific events in the XML export file. Among these, the X-report and Z-report events are particularly important.

To ensure accurate data retrieval during SAF-T export, the system must store relevant information at the moment the X or Z report is generated. This is especially critical for X-report data, which is non-final and cannot be retrieved from the database after generation.

To support this requirement:

  • An event is created in the SAFTElectronicJournals table when an X or Z report is generated.

  • The relevant event types are:

    • Event type 13008: X Report

    • Event type 13009: Z Report

Event fields
  • Info field: Contains details about the report type and associated shifts.

    Example: X Report | Shifts: [325]

  • EventData field: Includes a dynamically generated EventReport node.

    This node is automatically integrated into the SAF-T export to ensure complete data inclusion.

Example of event data
<eventReport>
    <reportID>13FD311F620E461CAD9EE2069CA64783</reportID>
    <reportType>x report</reportType>
    <companyIdent>GANTNER</companyIdent>
    <companyName>GANTNER</companyName>
    <reportDate>2023-12-18</reportDate>
    <reportTime>16:49:31</reportTime>
    <registerID>DEFAULT</registerID>
    <reportTotalCashSales>3.00</reportTotalCashSales>
    <reportArtGroups>
        <reportArtGroup>
            <artGroupID>EEB7A92D-9E9F-418E-9F5E-02EC09A200C0</artGroupID>
            <artGroupNum>1</artGroupNum>
            <artGroupAmnt>3.00</artGroupAmnt>
        </reportArtGroup>
    </reportArtGroups>
    <reportPayments>
        <reportPayment>
            <paymentType>C</paymentType>
            <paymentNum>1</paymentNum>
            <paymentAmnt>3.00</paymentAmnt>
        </reportPayment>
    </reportPayments>
    </reportCashSaleVats>
        <reportCashSaleVat>
            <vatCode>2</vatCode>
            <vatPerc>21.00</vatPerc>
            <cashSaleAmnt>2.4793</cashSaleAmnt>
            <vatAmnt>0.5207</vatAmnt>
        </reportCashSaleVat>
    </reportCashSaleVats>
    <reportOpeningChangeFloat>200.00</reportOpeningChangeFloat>
    <reportReceiptNum>1</reportReceiptNum>
    <reportOpenCashBoxNum>1</reportOpenCashBoxNum>
    <reportReceiptCopyNum>0</reportReceiptCopyNum>
    <reportReceiptCopyAmnt>0.00</reportReceiptCopyAmnt>
    <reportReceiptProformaNum>0</reportReceiptProformaNum>
    <reportReceiptProformaAmnt>0.00</reportReceiptProformaAmnt>
    <reportReturnNum>0</reportReturnNum>
    <reportReturnAmnt>0</reportReturnAmnt>
    <reportDiscountNum>0</reportDiscountNum>
    <reportDiscountAmnt>0.00</reportDiscountAmnt>
    <reportVoidTransNum>0</reportVoidTransNum>
    <reportVoidTransAmnt>0</reportVoidTransAmnt>
</eventReport>
Transactions are signed

When a transaction is completed, either a sale or a credit, the system creates an entry in the electronic journal stored in the database. This journal entry must be signed.

The signature is linked to the signature of the previous transaction. This creates a chain of signatures that ensures data integrity and traceability. If any transaction in the sequence is altered, the chain is broken, making tampering detectable.

X and Z reports include mandatory data

To ensure compliance with SAF-T requirements, the X and Z reports have been updated to include specific mandatory information on the printed ticket.

SAF-T_Example_ticket.png
  • Total number of times the cash drawer was opened (1)

  • Number of receipt copies printed (2)

  • Price lookups per article group (3)

These additions ensure that the reports meet regulatory standards and provide a complete audit trail.

Sales receipts include mandatory header information

 

To ensure SAF-T compliance, printed sales receipts now include an additional header. The content of this header varies depending on the context in which the receipt is generated:

  • Whether the transaction is a sale or a credit

  • Whether the receipt is a temporary ticket (e.g. printed from a table)

  • Whether the receipt is a digital receipt (e.g. sent by email)

This enhancement ensures that all relevant transaction details are clearly indicated on the receipt, regardless of format or delivery method.