Ir al contenido

Process Overview

Esta página aún no está disponible en tu idioma.

The SIGN SE API enables POS systems to create fiscally compliant transaction records. Your POS sends business data to the API, and receives back signed compliance data (control code, status) ready to be printed on the receipt.

For each fiscal transaction, the POS sends a record request to the SIGN SE API. The API handles signing and compliance processing internally, and returns the control code and status back to the POS.

┌─────────────┐ ┌──────────────────┐
│ Your POS │────────────▶ │ SIGN SE API │
│ │◀──────────── │ (fiskaly UAPI) │
└─────────────┘ └──────────────────┘
You send: You receive:
• INTENTION record • Control Code (113 chars)
• TRANSACTION record • Status code
• Compliance artifacts

SIGN SE supports the following Swedish fiscal document types as defined in SKVFS 2021:16:

Swedish NameEnglish NameUAPI Record TypeControl Code
KassakvittoCash register receiptTRANSACTION::RECEIPTYes
ReturkvittoReturn receiptTRANSACTION::CANCELLATION / CORRECTIONYes
KvittokopiaReceipt copyINTENTION::DUPLICATETRANSACTION::RECEIPTYes
Pro forma-kvittoPro forma receiptTRANSACTION::PRO_FORMA_INVOICENo (empty)
ÖvningskvittoTraining receiptTRANSACTION::RECEIPT with RecordTrainingOptionNo (empty)

Each business operation requires two subsequent API calls:

  1. INTENTION — Records the intent to start a transaction in the system
  2. TRANSACTION — Provides the transaction data; triggers signing

This pattern ensures an unbroken audit trail from the moment a sale begins to the moment it is fiscally signed.

Sweden applies four VAT rates. The UAPI uses the breakdown array with VAT_RATE entries for taxable items and VAT_EXEMPTION entries for exempt items.

RateDescriptionUAPI codeBreakdown type
25%Standard — general goods and servicesSTANDARDVAT_RATE
12%Reduced 1 — food, hotels, restaurantsREDUCED_1VAT_RATE
6%Reduced 2 — books, newspapers, transport, cultureREDUCED_2VAT_RATE
0%Zero-rated — some financial, insurance, medicalREDUCED_3VAT_RATE
N/AExempt — outside the scope of VATNOT_SUBJECTVAT_EXEMPTION

A kontantnota is a manual handwritten cash invoice — it is not an electronic receipt. When the signing service is unreachable, the POS prints/displays the mandatory offline text and the merchant must issue a handwritten kontantnota to the customer per SKVFS 2014:9.

The API returns one of seven status codes after processing a signing request. Only codes 1 and 2 permit receipt printing:

CodeNameReceipt Permitted
1STATUS_OKYes — with control code
2NO_CONTACT_WITH_KSYes — without control code (offline)
3CONTACT_WITH_KSNo
4NOT_CONFIGUREDNo
5CONTACT_MANUFACTURERNo
6REPORT_ERROR_24HNo
7ANMAL_FEL_48HNo

Before issuing any sale receipts, the POS must perform a startup check by creating a record of type INTENTION::OPENING. This verifies the system is properly enrolled and the signing service is reachable.

The startup sequence:

  1. POS sends INTENTION::OPENING record to the API
  2. API verifies system enrollment and signing service connectivity
  3. Response includes the current status code
  4. If STATUS_OK (code 1) — POS may proceed to normal operation
  5. If any other code — POS must display the appropriate error and must not issue receipts

At the end of the business day, the POS should send an INTENTION::CLOSING record to mark the register as closed.

Returns and cancellations use the RETURN entry type within a TRANSACTION::RECEIPT or TRANSACTION::CANCELLATION record. Key rules:

  • Positive absolute values only — refund amounts in entries must always be positive. Negative values are rejected.
  • Return entries update the cumulative return amount counter and receipt count.
  • The original receipt number should be referenced in the document.references field for audit traceability.

Swedish cash register regulations (SKVFS 2021:17) require the following fields on every printed receipt:

#FieldDescription
1Business nameCompany or individual name as registered with Skatteverket
2Organisation numberOrganisationsnummer or personnummer
3AddressBusiness location address
4Receipt date and timeTimestamp of the transaction
5Receipt numberSequential number within the register
6Item descriptionsDescription of each good or service sold
7Item pricesPrice per item including VAT
8Total amountTotal amount paid including VAT
9VAT per rateVAT amount broken down by rate (25%, 12%, 6%, 0%)
10Payment methodHow the customer paid (cash, card, etc.)
11KassabeteckningCash register designation (tillverkningsnummer)
12Control codeThe 113-character avstämningskod
13Control Server IDThe 17-character identifier of the signing server

After system commissioning, the merchant must register with Skatteverket within 14 days. This is a three-step process:

  1. Register the kontrollenhet — The control system. fiskaly provides the manufacturer, model, and address details.
  2. Register the cash register — Using the 16-character tillverkningsnummer as kassabeteckning, and the location address where the register operates.
  3. Enrollment — Automatic via the UAPI commissioning step. No manual action required.

The merchant completes steps 1 and 2 via Skatteverket’s online portal using BankID authentication. The POS provider must communicate the tillverkningsnummer and Control Server ID to the merchant.

See the Skatteverket Registration Guide for detailed instructions.

When the API returns an error or the signing service rejects a request, the POS must handle it appropriately:

ScenarioAPI ResponsePOS Action
Successful signing200 with compliance dataPrint receipt with control code
Signing service offline (status 2)200 with status NO_CONTACT_WITH_KSPrint with offline text, issue kontantnota
Signing service error (status 3-7)200 with error statusDo not print receipt; display error to cashier
Validation error400Fix request payload and retry
Authentication expired401Re-authenticate and retry
Rate limited429Exponential backoff retry
Server error5xxRetry with exponential backoff
ReferenceTitleScope
SFS 2007:592Lag om kassaregister (Cash Register Act)Defines who must use a cash register and the obligation to connect to a certified control system
SFS 2011:1244Lag om kontrollsystem (Control System Act)Establishes the legal framework for cloud-based control systems
SKVFS 2020:9Föreskrifter om kontrollsystemTechnical requirements for the control system, including signing, counters, and enrollment
SKVFS 2021:16Föreskrifter om dokumentationstyperDefines the five fiscal document types (kassakvitto, returkvitto, kvittokopia, pro forma, övning)
SKVFS 2021:17Föreskrifter om kassaregisterRequirements for receipt content, printing, and cash register operation
SKVFS 2014:9Föreskrifter om kontantnotaRules for the manual handwritten cash invoice (kontantnota) when the control system is unreachable
Server-side counters (background)

The signing service maintains cumulative counters per registered cash register. These are managed entirely server-side — the UAPI does not expose or modify them directly. They are relevant for Skatteverket audits:

CounterMeaning
ACumulative sale amount (SEK)
BCumulative return amount (SEK)
CCumulative VAT for receipts (SEK)
ENormal receipt count (kassakvitto + returkvitto)
FReceipt copy count (kvittokopia)
GTraining receipt count (övningskvitto)
HPro forma receipt count

Was this page helpful?