TL;DR
SIE är det enda en faktureringsmodul producerar som den aldrig läser tillbaka. Allt annat går att reparera av någon som förstår systemet; en SIE-fil öppnas i Fortnox eller Visma eller BL Administration av någon som inte gör det, och det de ser när den är fel är ett radnummer och ett avslag. Två defekter står för nästan alla de avslagen, och båda stängs innan filen skrivs i stället för att upptäckas i andra änden.
4I, inte 4E, och varför det är ett ärligt svar
SIE typ 4E är ett helt räkenskapsår med ingående och utgående balanser. Typ 4I är en periods transaktioner.
En faktureringsmodul för kundreskontran och ingenting annat. Den har aldrig sett en lön, ett inköp eller ett bankkonto, så den kan inte uttala sig om ett saldo — och en 4E-fil utan balanser påstår en fullständighet den inte har. 4I är exakt det vi faktiskt vet.
Om er redovisningskonsult ber om 4E är svaret att den ska produceras ur de böcker de för, med den här filen som en av ingångarna.
Defekt ett: teckenuppsättningen
SIE4 är CP437 — den ursprungliga IBM PC-kodsidan — och inte UTF-8. En fil skriven som UTF-8 importeras med varje å, ä och ö förvandlat till två tecken skräp. Det är formatets vanligaste fel, det ser kosmetiskt ut, och det som förvanskas är kundens eget namn.
Raden #FORMAT PC8 är formatets sätt att namnge kodsida 437. Det är raden som talar om för importen hur varje å under den ska läsas, och den är en lögn om inte byten faktiskt konverterats.
Det finns en hake värd att nämna. CP437 har inget ł och ingen €. En rak konvertering svarar på ett tecken den inte kan avbilda genom att fallera helt, så ett enda polskt efternamn i kundregistret skulle förvandla en månads export till ingen fil alls. Alltså translittererar konverteringen: en ofullkomlig approximation, synlig på pappret, där alternativet är en tom export ingen kan förklara.
Poster avslutas med CRLF i stället för radbrytning, vilket är en andra liten sak som går sönder tyst.
Defekt två: en verifikation som inte balanserar
Dubbel bokföring betyder att beloppen i en verifikation summerar till noll. Ett redovisningsprogram avvisar hela filen över en enda verifikation som inte gör det.
Alltså görs kontrollen här, framför den som fortfarande kan rätta den, och faller den skrivs ingen fil alls. Summan tas i ören, över heltal, innan något formateras — samma kontroll på de tryckta kronorna skulle släppa igenom en verifikation som är en hundradel fel, vilket är precis storleken på felet ett avrundningsmisstag gör och precis det en import rapporterar som ett radnummer.
Verifikation ett, genomräknad
Konferensfakturan i tre satser från Moms per rad: 52 393,00 kr totalt, med en öresavrundning på −0,20.
| Konto | Namn | Belopp |
|---|---|---|
| 1510 | Kundfordringar | +52 393,00 |
| 3001 | Försäljning inom Sverige, 25 % moms | −24 000,00 |
| 3002 | Försäljning inom Sverige, 12 % moms | −11 760,00 |
| 3003 | Försäljning inom Sverige, 6 % moms | −8 700,00 |
| 2611 | Utgående moms, 25 % | −6 000,00 |
| 2621 | Utgående moms, 12 % | −1 411,20 |
| 2631 | Utgående moms, 6 % | −522,00 |
| 3740 | Öres- och kronutjämning | +0,20 |
Summa: 0,00. En debet är ett positivt belopp och en kredit ett negativt, vilket är så SIE skriver dem.
Verifikation två: en ROT-faktura
Badrumsjobbet från Så räknas ROT-avdraget: 66 613,00 kr totalt, 12 615,00 kr begärt hos Skatteverket, öresavrundning +0,50.
| Konto | Namn | Belopp |
|---|---|---|
| 1510 | Kundfordringar | +53 998,00 |
| 1513 | Kundfordringar – delad faktura | +12 615,00 |
| 3001 | Försäljning inom Sverige, 25 % moms | −53 290,00 |
| 2611 | Utgående moms, 25 % | −13 322,50 |
| 3740 | Öres- och kronutjämning | −0,50 |
Summa: 0,00.
Två saker att lägga märke till. Fordran är delad — kundens halva på 1510 och statens på 1513 — så att en åldersanalys byggd på den här bokföringen inte jagar Skatteverket som vore det en kund. Och avdraget bokförs inte som negativ försäljning: det skulle underskatta omsättningen i varje företag som gör ROT-arbeten, och underskatta momsen de är skyldiga på köpet.
Så ser filen ut
#FLAGGA 0
#PROGRAM "Closepact" "1.0"
#FORMAT PC8
#SIETYP 4
#GEN 20260401
#FNAMN "Nordkust Event AB"
#ORGNR 556123-4567
#RAR 0 20260101 20261231
#KONTO 1510 "Kundfordringar"
#KONTO 2611 "Utgående moms på försäljning inom Sverige, 25 %"
#VER "A" "1043" 20260318 "Faktura A-1043 Vikbolandets Konferens AB" 20260401
{
#TRANS 1510 {} 52393.00 20260318 "Vikbolandets Konferens AB"
#TRANS 3001 {} -24000.00 20260318 "Vikbolandets Konferens AB"
}
(Företaget och dess organisationsnummer är påhittade.) Några av raderna är bärande:
#FLAGGA 0 säger att filen inte redan tagits in i någons bokföring. En etta skulle påstå att den hade det, och är till för en omexport av en fil mottagaren redan läst.
#ORGNR är hur det mottagande programmet avgör vems böcker det här är. Har organisationen inget nummer antecknat bär exporten inget #ORGNR och säger det i en varning — ett saknat nummer är en fråga redovisningskonsulten ställer, medan ett påhittat importeras felfritt i fel bolag och ingen upptäcker det förrän året stängs.
#TRANS bär tomma klamrar för objektlistan, och de är inte valfria: ett #TRANS utan dem är en felformad post även när ingenting i systemet använder kostnadsställen.
Belopp använder decimalpunkt, oavsett vad ett svenskt tangentbord gör. Varje belopp uppströms är ett heltal ören, och det här är det sista som händer med det.
#RAR deklarerar ett år
En SIE-fil deklarerar ett räkenskapsår och varje verifikation i den måste ligga inom det året, så ett fönster som spänner över två avvisas i stället för att tyst klippas eller tyst felmärkas. Det är nästan alltid en felskriven månad, och när det inte är det är det två exporter.
Kalenderåret är förvalet eftersom det är det räkenskapsår de flesta svenska bolag håller. Ett bolag med brutet räkenskapsår — maj till april, säg — sätter startmånaden i sina egna inställningar, och #RAR följer den.
Vad som kommer med, och vad som inte gör det
Bara utställda dokument. Ett utkast är ingen faktura: det har inget nummer, det kanske aldrig skickas, och att exportera det bokför intäkter ingen har fakturerats för.
Daterat på fakturadatum, inte på när raden skapades. En faktura skriven den 2 oktober som bär den 30 september är ett septemberdokument, och hela poängen med datumet på pappret är att det, och inte klockan, avgör perioden.
Bara kronor. En faktura i euro avvisas, eftersom en bokföring förd i kronor inte kan ta emot ett utländskt belopp utan kursen det växlades till, och ingenting i modulen antecknar en. Att avvisa är högljutt och åtgärdbart; att bokföra 1 000 EUR som 1 000 SEK är ingetdera.
Samma månad två gånger ger samma fil. Kontot låses på fakturaraden när raden skrivs, så en artikel som mappas om i juni skriver inte om marsexporten.
Namn med citattecken i sig
En kund som heter Bygg "Bosse" AB är inte hypotetisk, och citattecknet och omvänt snedstreck är de två tecken som kan avsluta ett SIE-fält i förtid. Båda escapas. Styrtecken ersätts i stället för att escapas, eftersom formatet inte har någon escape för dem och en radbrytning inuti ett fält avslutar posten och förskjuter allt efter den med en rad.
Vad vi inte påstår
Filen är balanskontrollerad av oss. Den har inte provimporterats i en skarp Fortnox-installation, och vi skriver inte "validerad med Fortnox" förrän den har det. Det är ett bestämt påstående med ett bestämt test bakom sig, och vi har inte kört testet.
SIE-export ligger i nivåerna Väx och Pro i faktureringsmodulen.