Denne artikel beskriver særlige forhold, der skal tages højde for i forbindelse med litauisk fiskalisering, eller som følger af lovgivningen og de tekniske krav. En oversigt over de begreber, der anvendes i denne artikel, og deres betydning findes i artiklen Begreber inden for litauisk fiskalisering.
Indholdsfortegnelse:
- Forudsætninger – hvad kræves der for at drive et kasseapparat i overensstemmelse med lovgivningen?
- Sikkerhedsmodul – hvad er det, og hvilke særlige funktioner er der forbundet med det?
- iEKA-kommunikation – hvad skal der tages højde for?
- Særlige processer – hvad er de særlige forhold ved:
- Returvarer/ombytninger
- Teknisk journal
- Totalsummer i rapporter
- Indskud og udbetalinger
- Annullering af transaktioner
- Salg af specialvarer
- Rapporter – hvilke rapporter skal udarbejdes, og hvilke data skal de indeholde?
- EKJ – hvad er det, og hvad er kravene?
Forudsætninger
For at et kasseapparat kan tages i brug i Litauen, kræves følgende:
Service company
Kun repræsentanter for en certificeret service company må idriftsætte kasseapparater og tilslutte dem til iEKA-tjenesten og sikkerhedsmodulet.
Du kan definere et service company via konfigurationen for Litauen. Der kræves en kontrakt mellem distributøren og service companyen for at kunne vælge et service company (tilgængeligt som et drop-down-element i konfigurationen). Når kontrakten er gemt/aktiveret i RetailForce portalen, vises en post for service companyen i konfigurationen.
Sikkerhedsmodul
Hvert kasseapparat skal være udstyret med et certificeret sikkerhedsmodul. Sikkerhedsmodulet har kun en løs tilknytning til service companyen. Når du køber et sikkerhedsmodul, skal du dog sikre dig, at det også understøttes af RetailForce systemet.
Sikkerhedsmodulets opgaver omfatter signering af transaktionsdata, styring af totalstælleren samt sikker opbevaring af private og offentlige nøgler og digitale certifikater.
OBS: Fejl på kasseapparater (udskiftning af kasseapparat, udskiftning af hardware osv.) kræver altid køb af et nyt sikkerhedsmodul. Det er teknisk set ikke muligt at fortsætte med at bruge et sikkerhedsmodul på et andet kasseapparat/en anden hardware.
Parameter for service company
Når en service company er valgt i konfigurationen og tildelt en enhed (organisation, virksomhed, butik, terminal), kan en medarbejder hos service companyen indtaste service companyens parametre (se Vilkår for litauisk fiskalisering) for hver terminal.
Hvis kasseapparatet har et sikkerhedsmodul, og service companyens parametre er indtastet, kan kasseapparatet (clienten) tages i brug.
Bemærk: Vi hjælper gerne med at kontakte en litauisk service company og anskaffe et kompatibelt sikkerhedsmodul.
Sikkerhedsmodul
Data fra skattepligtige transaktioner underskrives automatisk af RetailForce-fiskaliseringstjenesten via sikkerhedsmodulet.
Sikkerhedsmodulet aktiveres automatisk under initialiseringen. De nødvendige digitale certifikater indlæses også i sikkerhedsmodulet under denne proces.
Digitale certifikater
Certifikater, der bruges til signering af data og andre formål, skal fornyes, inden de udløber.
Til udskiftning af certifikater stiller fiscalisationstjenesten følgende funktion til rådighed:
- POST /api/v1/management/lithuania/{clientId}/certificate-update
Når endpointet kaldes, kontrollerer fiscalisationstjenesten (middleware), om certifikaterne skal udskiftes. Hvis et certifikat nærmer sig udløbet af sin gyldighedsperiode, erstattes det med et nyere.
Opdatering nødvendig
En certifikatudskiftning er kun mulig efter en daglig afslutning/rapport (Z) (EndOfDay-dokument). For hvert EndOfDay-dokument returneres egenskaben "certificatesUpdateRequired" i fiscalResponse.
Hvis værdien af "certificatesUpdateRequired" = true, skal det opstrøms system igangsætte en certifikatudskiftning ved hjælp af endpointet POST /api/v1/management/lithuania/{clientId}/certificate-update.
Værdier i sikkerhedsmodulet
Værdier, der er gemt i sikkerhedsmodulet (salgstæller, kasseapparat-ID, antal underskrevne dokumenter m.m.), kan læses ved hjælp af endpointet
- GET /api/v1/management/lithuania/{clientId}/param-stick
Nulstilling af test-sikkerhedsmodulet
I modsætning til sikkerhedsmoduler til live-drift kan test-sikkerhedsmoduler nulstilles til fabriksindstillingerne. Dette er især vigtigt i implementeringsfasen, hvis der er opstået fejl (f.eks. i iEKA-kommunikationen – se nedenfor).
En nulstilling udføres ved hjælp af følgende endpoint
- DELETE /api/v1/management/lithuania/{clientId}/reset-stick
OBS: Hvis sikkerhedsmodulet nulstilles, skal der også oprettes en ny terminal i RetailForce Cloud, henholdsvis initialiseres en ny client (glem ikke at indtaste service companyens parametre!).
iEKA-kommunikation
Ud over signering af transaktionsdata via sikkerhedsmodulet er dataoverførsel til skattemyndighedernes onlinesystem (iEKA) et af de centrale krav i den litauiske fiskalisering.
RetailForce systemet håndterer den automatiske kommunikation med iEKA. iEKA begrænser antallet af dataposter, der kan overføres inden for et bestemt tidsrum, samt hyppigheden af overførsler/anmodninger inden for et tidsrum. Af denne grund overfører fiskaliseringstjenesten ikke data til iEKA i realtid, men derimod asynkront.
Fejlfinding
Data, der anvendes som grundlag for dataoverførslen, gemmes af fiskaliseringstjenesten i mappen (f.eks. på Windows-systemer) C:\ProgramData\RetailForce\Fiscal Webservice\{clientId}\lithuaniaFiscalFiles.
Process
Den ovenfor beskrevne mappe indeholder normalt tre undermapper:
- send – Data, der skal overføres til iEKA (data, der endnu ikke er overført).
- accepted – Data, der er sendt til iEKA og er blevet accepteret af systemet.
- 20xy – Svar fra iEKA efter datavalidering for hver enkelt datapost (angiver det år, hvor transaktionen blev registreret)
Dataoverførslen til iEKA foregår efter følgende proces:
- RetailForce Client modtager data fra det opstrøms system ("kasseapparatet") og
- konverterer dem til iEKA-formatet (men som en JSON-fil).
- Denne JSON-fil gemmes i mappen \\lithuaniaFiscalFiles\send.
- Filer i mappen \\send overføres med jævne mellemrum (asynkront) til iEKA-tjenesten. Før overførslen konverteres JSON-filerne til iEKA XML-format.
- Når dataene er ankommet til iEKA-systemet, bekræfter iEKA modtagelsen.
- På dette tidspunkt flyttes transaktionsdataene fra mappen \\send til mappen \\accepted sammen med den bekræftelse, der er modtaget fra iEKA.
- Hvis dataene ikke kunne overføres til iEKA, forbliver de i mappen \\send, og fiscalisationstjenesten forsøger at overføre dem på et senere tidspunkt.
- iEKA-systemet validerer nu de overførte data. Valideringsstatus skal aktivt forespørges af dataoverførselsmodulet (fiskaliseringstjenesten)
- Denne forespørgsel udføres også med jævne mellemrum på grund af kommunikationsbegrænsninger fra iEKA's side (se ovenfor).
- Resultatet af forespørgslen om valideringsstatus gemmes i mappen 20xy (data flyttes fra \\accepted til \\20xy).
Transaktionsstatus
Overstrømssystemer ("kasseapparater") kan kontrollere status for individuelle transaktioner ved hjælp af følgende funktioner:
- GET /api/v1/management/lithuania/{clientId}/check-document-status-by-iEKA-document-number/{iEKADocumentNumber} og
- GET /api/v1/management/lithuania/{clientId}/check-document-status-by-document-number/{DocumentNumber}
Bemærk: Vær opmærksom på, at det på grund af kommunikationsbegrænsninger hos iEKA kan tage op til 10 minutter, før kasseapparatet kan forespørge om status for et bestemt dokument.
Særlige processer
Returnering/ombytning af varer
Returneringer (f.eks. ombytning af varer) betragtes i Litauen som ikke-fiskale dokumenter, dvs. ikke-fiskale transaktioner. De overføres til iEKA-systemet, men underskrives ikke via sikkerhedsmodulet. Dette betyder også, at returdokumenter ikke påvirker sikkerhedsmodulets salgstællere (samlet total).
For at RetailForce systemet korrekt kan genkende returneringer som sådan, skal følgende egenskaber indstilles:
- "documentType": 0 / "[0] = Kvittering"
- "cancellationDocument": true
- "documentReference" – der skal angives en henvisning til et andet dokument (det oprindelige salgsdokument)
- Negative transaktionsværdier ("GrossValue", "NetValue", "TaxValue", "Amount")
Bemærk: Denne mærkning er IKKE specifik for Litauen, men gælder i alle lande. Salg og returvarer i Litauen skal dog rapporteres som separate dokumenter til skattemyndighederne (se fiscalCountryProperties: "returnAndSaleBehavior": "multiReceipt").
OBS: Vedrørende returvarer henvises der også til artiklen Sammenfatning i rapporter – Litauen!
Teknisk journal
Tekniske processer skal registreres i Litauen. Som i andre lande sker dette ved hjælp af den tekniske hændelseslog / det tekniske journal eller AuditLog.
Især følgende begivenheder skal registreres:
- Åbning af kasse (DrawerOpen) – skal overføres af det opstrøms system.
- Annullering af dokument (DocumentCancelDocument) – registreres automatisk.
Se artiklen Tekniske hændelser i Litauen for yderligere oplysninger.
Totalsummer i rapporter
I rapporter (rapport (Z) – daglig skatterapport, rapport (X) – daglig mellemrapport) skal visse (samlede) totaler vises separat. For at sikre dette skal visse regler overholdes ved overførsel af data mellem kildesystemet ("kasseapparater") og skatteregistreringstjenesten.
For yderligere oplysninger, se artiklen "Opsummering i rapporter – Litauen".
PayIn og udbetaling
Den litauiske fiskalisering kræver, at kontantsaldoen i kasseapparatet (kasseskuffen) overføres til iEKA. For at sikre dette skal indbetalings- og udbetalingstransaktioner (f.eks. indbetaling af byttepenge) også overføres fra det opstrøms system til RetailForce-fiskaliseringsservicen (middleware) i form af PayIn- og PayOut-dokumenter ("documentType": 11 / "[11] = PayIn" og "documentType": 10 / "[10] = PayOut" med "BusinessTransactionType": "[90] = MoneyTransfer").
Følgende skal bemærkes vedrørende PayIns og PayOuts:
Bemærk: Den følgende procesbeskrivelse for håndtering af kontantsaldoen er en midlertidig løsning!
| documentType | Process | Værdier |
| 11 / "[11] = PayIn" |
Den aktuelle kassesaldo i kasseapparatet skal overføres som dagens første transaktion. Kassebeholdningen fra den foregående dag overføres IKKE efter en dagafslutning (EndOfDay), men sættes til "0". Der kan foretages et vilkårligt antal indbetalinger i løbet af dagen. Kontantsaldoen justeres altid automatisk. Bemærk: I stedet for dagens første PayIn-dokument kan du naturligvis også indsende et dokument af typen "[90] = OpeningBalance" med "BusinessTransactionType": "[90] = MoneyTransfer". |
Alle værdier ("GrossValue", "Amount") skal være POSITIVE. |
| 10 / "[10] = PayOut" |
FØR et EndOfDay-dokument (dagafslutning) skal hele kontantsaldoen sættes til 0 ved hjælp af en PayOut. Dette er nødvendigt, fordi saldoen ikke overføres til den næste dag. OBS: Hvis der ikke er gemt en PayOut på dette tidspunkt, vil det medføre, at der rapporteres forkerte kontantsaldi til iEKA! Der kan foretages et vilkårligt antal udbetalinger i løbet af dagen. Kontantsaldoen justeres altid automatisk. |
Alle værdier ("GrossValue", "Amount") skal være NEGATIVE. |
Eksempler på JSON payloads
PayIn:
(Release: 1.11.4; DOM-version 1.6.2)
{
"ModelVersion": "1.6.2",
"UniqueClientId": "bef09871-a19b-4eba-9f88-f14e0b482ab3",
"UniqueCashRegisterId": "0001-0007",
"FiscalModuleVersion": "1.11.4.593",
"FiscalCountryModuleVersion": "0.9.7",
"SoftwareName": "RetailForce NeverPOS",
"DocumentGuid": "da8e52c6-fb33-4b07-8f9b-7962bc0a0002",
"DocumentId": "PI001",
"DocumentNumber": "PI202500001",
"CreateDate": "2025-12-16T14:43:08.6110527+02:00",
"BookDate": "2025-12-16T14:43:08.6110527+02:00",
"DocumentType": 11,
"User": {
"Id": "7b1e3d67-25d0-4ad1-a230-5264b3aa1fca"
},
"PositionCount": 1,
"DocumentIssueType": 0,
"FiscalDocumentNumber": "0",
"FiscalDocumentStartTime": 0,
"Positions": [
{
"Type": "[3] = Booking",
"Caption": "Pridėti grynuosius pinigus",
"BusinessTransactionType": "[11] = PayIn",
"VatIdentification": 10,
"VatPercent": 0.0,
"NetValue": 20.0,
"GrossValue": 20.0,
"TaxValue": 0.0,
"PositionNumber": 0,
"DeletedPosition": false,
"AdditionalFields": {},
"ExternalIdentifier": []
}
],
"Payments": [
{
"Amount": 20.0,
"CurrencyIsoCode": "EUR",
"UniqueReadablePaymentIdentifier": "CashMovement",
"AdditionalFields": {},
"PaymentType": 0,
"ExternalIdentifier": []
}
],
"AdditionalHeader": [],
"AdditionalFooter": [],
"FiscalAdditionalFields": {}
}
PayOut:
(Release: 1.11.4; DOM-version 1.6.2)
{
"ModelVersion": "1.6.2",
"UniqueClientId": "277a1220-5af4-4fc4-900f-694dcc0a6227",
"UniqueCashRegisterId": "0001-0007",
"FiscalModuleVersion": "1.11.4.593",
"FiscalCountryModuleVersion": "0.9.7",
"SoftwareName": "RetailForce NeverPOS",
"DocumentGuid": "da8e52c6-fb33-4b07-8f9b-7962bc0a0002",
"DocumentId": "PO0002",
"DocumentNumber": "PO202500001",
"CreateDate": "2025-12-16T12:08:08.6110527+02:00",
"BookDate": "2025-12-16T12:08:08.6110527+02:00",
"DocumentType": 10,
"User": {
"Id": "7b1e3d67-25d0-4ad1-a230-5264b3aa1fca"
},
"PositionCount": 1,
"DocumentIssueType": 0,
"FiscalDocumentNumber": "0",
"FiscalDocumentStartTime": 0,
"Positions": [
{
"Type": "[3] = Booking",
"Caption": "Grynųjų pinigų išėmimas",
"BusinessTransactionType": "[10] = PayOut",
"PayOutType": null,
"VatIdentification": 10,
"VatPercent": 0.0,
"NetValue": -12.0,
"GrossValue": -12.0,
"TaxValue": 0.0,
"PositionNumber": 0,
"DeletedPosition": false,
"AdditionalFields": {},
"ExternalIdentifier": []
}
],
"Payments": [
{
"Amount": -12.0,
"CurrencyIsoCode": "EUR",
"UniqueReadablePaymentIdentifier": "CashMovement",
"AdditionalFields": {},
"PaymentType": 0,
"ExternalIdentifier": []
}
],
"AdditionalHeader": [],
"AdditionalFooter": [],
"FiscalAdditionalFields": {}
}
Afbrydelse/ophævelse af transaktioner
Enhver afbrydelse af en transaktion inden dens afslutning skal registreres i Litauen. Endpointet
bruges til dette formål.
Den overførte JSON-payload skal indeholde
- alle positioner, der er registreret frem til det tidspunkt, hvor transaktionen blev afbrudt, men
- et tomt »Payments«-objekt.
Eksempel:
(Release: 1.11.4; DOM-version 1.6.2)
{
"ModelVersion": "1.6.2",
"UniqueClientId": "bef09871-a19b-4eba-9f88-f14e0b482ab3",
"UniqueCashRegisterId": "T001-1502",
"FiscalModuleVersion": "1.11.4.593",
"FiscalCountryModuleVersion": "0.9.7",
"SoftwareName": "x x 1.0",
"AutomaticVatCalculation": 0,
"DocumentGuid": "da8e52c6-fb33-4b07-8f9b-7962bc0c0002",
"DocumentId": "0002",
"DocumentNumber": "202500001",
"CreateDate": "2025-12-16T15:19:08.6110527+02:00",
"BookDate": "2025-12-16T15:19:08.6110527+02:00",
"DocumentType": 0,
"User": {
"Id": "7b1e3d67-25d0-4ad1-a230-5264b3aa1fca"
},
"PositionCount": 2,
"DocumentIssueType": 0,
"FiscalDocumentNumber": "0",
"FiscalDocumentStartTime": 0,
"Positions": [
{
"ItemCaption": "Testavimo prekė 222",
"Discounts": [],
"Type": "[0] = Item",
"Quantity": 1.0,
"QuantityUnit": {
"Id": null
},
"ItemId": "8639d547-3db3-4a44-e0c3-08de3c72db58",
"ItemType": 0,
"BaseNetValue": 1.77686,
"BaseGrossValue": 2.15,
"BaseTaxValue": 0.37314,
"BaseTaxValue2": null,
"BusinessTransactionType": "[0] = Revenue",
"VatIdentification": 1,
"VatPercent": 21.0,
"NetValue": 1.78,
"GrossValue": 2.15,
"TaxValue": 0.37,
"ItemTaxType": 0,
"PositionNumber": 0,
"DeletedPosition": false,
"AdditionalFields": {},
"ExternalIdentifier": []
},
{
"Type": "[10] = Total",
"Rounding": 0.0,
"BaseValue": 2.15,
"Value": 2.15,
"Discounts": [],
"PositionNumber": 1,
"DeletedPosition": false,
"AdditionalFields": {},
"ExternalIdentifier": []
}
],
"Payments": [],
"AdditionalHeader": [],
"AdditionalFooter": [],
"FiscalAdditionalFields": {}
}
Data om afbrudte transaktioner skal sendes til iEKA og også vises i rapporter (se det følgende kapitel).
Auditlogpost om afbrydelse/afbrydelse af transaktioner
Hvis der sendes en payload til POST /api/v1/transactions/cancelDocument, genererer RetailForce-fiskaliseringsservicen automatisk en post i den tekniske hændelseslog / det tekniske journal ("revisionslog") af typen:
- DocumentCancelDocument
Posten indeholder det samlede beløb (GrossValue) for de enkelte varer i den overførte payload, da denne information
- skal overføres til iEKA og
- også skal indgå i rapporten (Z) og
- rapporten (X).
Dataene overføres til iEKA via EndOfDay-dokumentet. Når der bogføres en daglig afslutning, returneres følgende værdier i fiscalResponse Litauen:
- "DayCanceledReceiptsDocumentsQuantity" – antal afbrudte/annullerede transaktioner pr. dag
- "DayCanceledReceiptsDocumentsAmount" – (brutto) samlet beløb for alle afbrudte/annullerede transaktioner
Salg af særlige varer
I Litauen skal salg af visse varer mærkes specifikt. Disse salg indberettes til iEKA-systemet som separate totaler og indgår også i rapporterne (Rapport (X), Rapport (Z)).
Dette såkaldte »salg af særlige varer« omfatter følgende produktgrupper:
- Alkohol og
- brændstof
I RetailForce DOM kan de relevante varer mærkes i overensstemmelse hermed ved hjælp af egenskaben "ItemTypeClassification". De produktgrupper, der er klassificeret som "særlige varer" i Litauen, kan hentes via "fiscalCountryProperties" (egenskab: "supportedItemTypeClassification").
Rapporter
Kassesystemer skal kunne generere følgende rapporter:
- Rapport (X) – daglig mellemrapport (også kendt som Rapport (X))
- Rapport (Z) – daglig skatterapport (også kendt som Rapport (Z))
- Detaljeret regnskabsrapport
- Sammenfattende regnskabsrapport
| Rapport | documentType | Noter |
| Rapport (X) | 98 / "[98] = CashCheck" |
kan genereres via endpoint GET /api/v1/closing/{clientId}/endofdayDocument, men følgende data skal ændres, før payload (/storeDocument) overføres:
|
| Rapport (Z) | 99 / "[99] = EndOfDay" |
kan genereres via endpoint GET /api/v1/closing/{clientId}/endofdayDocument. Som sædvanlig skal følgende data tilpasses:
|
| Detaljeret regnskabsrapport | - |
Der findes ingen eksplicit dokumenttype ("documentType") i RetailForce for den detaljerede regnskabsrapport. Denne rapport kan genereres via følgende endpoints (et af dem):
Dataene i svaret danner grundlag for udarbejdelsen af rapporten i trykt form. Bemærk: Når et af de to endpoints kaldes, genereres rapporten og returneres til POS-systemet som et svar. Når den kaldes, overføres rapporten allerede til iEKA. Der er ikke behov for yderligere trin. |
| Sammendrag af regnskabsrapport | - |
Der findes ingen eksplicit documentType ("documentType") i RetailForce for den sammenfattende regnskabsrapport. Denne rapport kan genereres via følgende endpoints (et af dem):
Dataene i svaret danner grundlag for udarbejdelsen af rapporten i trykt form. Bemærk: Når et af de to endpoints kaldes, genereres rapporten og returneres til POS-systemet som et svar. Når den kaldes, overføres rapporten allerede til iEKA. Der er ikke behov for yderligere trin. |
For yderligere oplysninger om, hvilke data der skal indgå i de respektive rapporter, henvises til artiklen Dokumentkrav i Litauen.
EKJ
Denne artikel er oversat automatisk.
Kommentarer
0 kommentarer
Log ind for at kommentere.