Fiscal Requirements
Fiscal Certificate Handling
The certificate is automatically sent from the efsta cloud to the EFR service upon activation or after the first transaction.
Working with Swedish EFR installations and/or clients requires an online connection and an activated EFR. Offline installations are currently not supported. To allow the automatism to trigger, the following requirements have to be met:
- EFR must be online / activated (see firewall limitations)
- Register / Client: TL/TT information must be set. To do this, a non-fiscal transaction must be sent to the EFR service.
- Register / Client: Must be located under a location (see efsta Portal)
- Company: Must have a valid organisation number (see efsta Portal)
When installing a new EFR installation or creating a new client on an existing Swedish EFR the efsta Cloud is taking care of the enrollment of the Infrasec CCU (i.e. the certificate used for signing). This might take some time and the EFR will receive the needed information from the Cloud automatically. Please wait for up to 20 minutes for the process to complete and the EFR to receive the corresponding commands from the efsta Cloud / Fiscal Recorder. To check, if the certificate has been received and is actively available in the EFR, you can either switch to the "Control" tab of the EFR UI and see if the certificate for the corresponding Tax ID is already available or check the logs in the "Viewer" tab for a line with the content "Cmd - POST /control".
Productive EFRs will only receive a fiscal certificate once certification is completed.
Test (Playground) Environment
For testing transactions should be fiscalized against the playground system. Therefore the profile has to be set to fiscal test mode http://localhost:5618/profile:
Please set this attribute and confirm with [Save].
For testing you will need a Test/Demo certificate, which can be obtained like productive ones.
Network Access
To use the EFR in sweden, the machine running EFR must be granted network access to the fiscal partner. The hosts for the firewall settings can be found in chapter firewall setting.
Offline Transactions
If the fiscal acknowledge cannot be obtained within the timespan defined (5000 ms by default), an invoice has to be created and printed out instead of the receipt.
VAT Handling
For signature purposes, single receipt/control positions are to be assigned to the following tax groups:
| Tax group | TaxG | Tax rate |
|---|---|---|
| Normal | A | 25% |
| Lower | B | 12% |
| Reduced | C | 6% |
| Exempt | Z | 0% |
This is achieved either by directly expressing TaxG="A" (A-Z) or, if the percent value is denoted, by matching of value.
For details see Tax Group Assignment.
Official website: skattenverket.se
PayG
The PayG field keeps information on the payment type. As the means of payment are mandatory to be printed on the receipt, it is recommended to send the PayG field to the EFR. The response will always contain this field and it will default to cash if the field is missing from the ESR.
see also Payment Groups
Certification and Registration of Cash Registers
In order to use the EFR service in Sweden, certification and registration are required. Details see Certification
Inspection visits
The Swedish Tax Agency carries out inspection visits without notifying in advance. The purpose of the visit is to check that you, as a trader/business owner, have a cash register which satisfies the requirements which apply. When a visit occurs, you must submit the information that the Tax Agency requires. For example, you have to be able to show the control code for a specific receipt. If the control code does not appear on the receipt, it is usually found in the journal of your cash register. The Tax Agency also carries out unannounced inspection visits in order to check that you are managing the cash register correctly.
During the course of such inspections, the Agency may carry out the following tasks:
- Customer counting
- Test purchases
- Checks on receipts
- Cash inventories
Specifics
Reprint
According to SKVFS 2021:17 (6 kap. 3 §) you can only print one copy of the receipt:
"A cash register must not be able to print more than one copy of a cash register receipt. This applies regardless of whether the receipt is in paper or in electronic form."
You can find more information about reprints in our Common Business Cases.
Returns
The Swedish Tax Agency has stated that the regulations should be interpreted to mean that a return must always be registered separate from sales receipts. Therefore, when a control unit processes receipt data per receipt to generate receipt control data (according to Chapter 6, Section 4 of SKVFS 2009:2), there must be either a value for the sales amount or a value for the return amount. This means that both values cannot exist within the same framework of a receipt’s control data. Source: skatteverket.se
Article Registrations
In Sweden, the receipt must reflect a complete transaction history, including the registration of articles, any changes to those registrations (such as additions, removals, or deletions), the parking of a receipt, and the resumption of a receipt—even if it is parked again. This ensures that the receipt serves as a detailed and traceable audit trail of all actions taken during the transaction process.
This is the case for:
- Sale of Items/Services
- Refund/Returns
- Reprints (NFS=DUP)
- Proforma
- Training receipts (NFS=TRAINING)
You can find more information about registration and changing of articles in our Country Specific Business Cases.
Export/Audit Events
You can find more information on export/audit events in our Business Cases.
Reports
Reports other than X or Z Reports
| Property | Description | Mandatory |
|---|---|---|
| Title | Name of the report | Yes |
| Dsc | The parameters or criteria used to generate the report | Yes |
Example:
- XML
- JSON
<Audit Code="REPORT" Title="Report Name" Dsc="Filter parameters used to generate the report" TL="001" TT="1" Opr="1" OprN="Operator name" />
{
"Audit": {
"Code": "REPORT",
"Title": "Report Name",
"Dsc": "Filter parameters used to generate the report",
"TL": "001",
"TT": "1",
"Opr": "1",
"OprN": "Operator name"
}
}
PRICE_LOOKUP
The following properties are mandatory to include:
| Property | Description | Mandatory |
|---|---|---|
| Cat, CatN | Category | Mandatory if available |
| IN | Article identifier | Mandatory if available |
| Dsc | Article name | Yes |
| Pri | Article price | Yes |
Example:
- XML
- JSON
<Audit Code="PRICE_LOOKUP" IN="2027" Dsc="Banana" Pri="0.50" Cat="Fruit" CatN="1001" TL="001" TT="1" Opr="1" OprN="Operator name" />
{
"Audit": {
"Code": "PRICE_LOOKUP",
"IN": "2027",
"Dsc": "Banana",
"Pri": "0.50",
"Cat": "Fruit",
"CatN": "1001",
"TL": "001",
"TT": "1",
"Opr": "1",
"OprN": "Operator name"
}
}
CLOCK_RESET
The following properties are mandatory to include (see https://docs.efsta.eu/efr/api/business-cases/#export-events)
| Property | Description | Mandatory |
|---|---|---|
| NewTS | The new timestamp | Yes |
| OldTS | Timestamp before the time change | Yes |
Example:
- XML
- JSON
<Audit Code="CLOCK_RESET" D="2024-10-26T13:40:15" Dsc="Time change" OldTS="2024-10-26T12:40:15" NewTS="2024-10-26T13:40:15" TL="001" TT="1" Opr="1" OprN="Operator name" />
{
"Audit": {
"Code": "CLOCK_RESET",
"D": "2024-10-26T13:40:15",
"Dsc": "Time change",
"OldTS": "2024-10-26T12:40:15",
"NewTS": "2024-10-26T13:40:15",
"TL": "001",
"TT": "1",
"Opr": "1",
"OprN": "Operator name"
}
}
DRAWER_OPEN
Must only be sent if the cash drawer was opened without a sale taking place.