Hoppa till innehåll

Bokföringslagen (BFL)

Bokföringslagen (BFL) är den svenska lag som reglerar hur företagets bokföring ska föras, arkiveras och kvalitetssäkras. Den gäller alla som är bokföringsskyldiga — aktiebolag, ekonomiska föreningar, vissa föreningar, de flesta enskilda firmor.

Redofy bygger bokföringen så att BFL:s viktigaste paragrafer är strukturella invariants — regler som inte bara följs, utan som tekniskt inte går att bryta.

5 kap 1 § — Verifikationsordning (gapfri numrering)

Section titled “5 kap 1 § — Verifikationsordning (gapfri numrering)”

“Verifikationerna ska numreras i en löpande följd.”

Redofys enforcement:

  • PostgreSQL SQL-funktion allocate_verifikationsnummer() med SELECT ... FOR UPDATEverification_series.
  • Nummer allokeras vid commit, inte vid utkast — avvisade utkast konsumerar inga nummer.
  • Separata serier per bolag, verifikationsserie och räkenskapsår.
  • Ingen möjlighet att överhoppa nummer, inte ens som administratör.

Om systemet fastnat i ett fel där nummer inte allokeras får commit inte fortsätta förrän problemet är löst — integritet före tillgänglighet.

“Affärshändelser ska bokföras så snart det kan ske.”

Tolkat i praktiken:

  • Kontanta affärshändelser — senast närmaste arbetsdag.
  • Fakturering — senast vid utgången av påföljande månad om omsättningen är < 3 Mkr. Högre omsättning kräver snabbare.
  • Betalningar — när banken har bokfört.

Redofys enforcement:

  • Bankagenten triggas inom sekunder efter bankrad inkommer.
  • Kvittoagenten triggas direkt vid uppladdning.
  • Deadline-varningar i inkorgen om utkast ligger obokförda mer än en vecka.
  • Revisoragenten flaggar tidsavvikelser i nattlig granskning.

Tidsnärhet är inte en invariant — det är en målnivå med varningar. Verkligheten är att användare ibland glömmer bokföra, och systemet ska signalera utan att hindra.

“En bokförd verifikation får inte ändras. Rättelse görs genom ny verifikation (rättelseverifikation).”

Redofys enforcement:

  • PostgreSQL-trigger BEFORE UPDATE OR DELETEverifications och verification_rows:
    • Om rad har status = 'bokförd'RAISE EXCEPTION.
    • Inte ens databasadministratören kan ändra detta utan att inaktivera triggern.
  • Commit-ringen är den enda som kan skriva till dessa tabeller.
  • Rättelseverifikationer länkas via corrects_verification_id till originalet — både original och rättelse ligger kvar separat i huvudboken.

Detta är den absolut viktigaste strukturella invarianten — om den faller faller bokföringens bevisvärde.

5 kap 6 § — Verifikationsordning (underlag)

Section titled “5 kap 6 § — Verifikationsordning (underlag)”

“Varje affärshändelse ska kunna följas från verifikation till bokföring.”

Redofys enforcement:

  • FK-kedja från underlag → utkast → verifikation.
  • Varje verifikation har minst ett kopplat underlag (kvitto, bankrad, faktura, eller manuellt dokument).
  • Agent-beslut loggas i agent_tool_calls så kedjan underlag → AI-analys → förslag → godkännande → verifikation är rekonstruerbar.
  • Sökbarhet — från en verifikation kan du klicka till underlaget, från underlaget till alla verifikationer som använder det.

“En verifikation ska innehålla: datum, motpart, händelseförlopp, belopp och momsspecifikation.”

Redofys enforcement:

  • Ring 2 commit-check — verifikationen valideras mot alla obligatoriska fält innan den bokförs.
  • Saknas ett fält → commitet avvisas med tydlig felmeddelande om vad som saknas.
  • Agenternas utkast måste innehålla alla fält innan de kan passeras till commit.

5 kap 11 § — Behandlingshistorik (audit trail)

Section titled “5 kap 11 § — Behandlingshistorik (audit trail)”

“Det ska finnas en behandlingshistorik som visar ändringar och åtgärder.”

Detta är ett så stort område att det har sin egen sida.

Kort: varje AI-beslut, varje godkännande, varje ändring loggas i agent_tool_calls och behandlingshistorik med:

  • Tidsstämpel.
  • Aktör (användare eller agent).
  • Åtgärd.
  • Påverkat data (före/efter-hash).

Hash-kedjas dagligen och rotas signeras med HSM-nyckel för tamper-evident arkivering.

Scenariot: en användare (eller angripare) försöker ändra en bokförd verifikation genom att direkt editera databasen.

-- Försök att ändra beloppet
UPDATE verifications SET total_amount = 5000 WHERE id = 'abc123';
-- PostgreSQL-triggern avvisar:
ERROR: Cannot modify bookförda verifications (BFL 5 kap 5 §)
DETAIL: Status = 'bokförd' - use rättelseverifikation instead

Ingen vanlig användare kan göra detta eftersom de saknar SQL-access. Men även en utvecklare med direkt DB-access eller en framtida säkerhetsbrist kan inte bryta regeln.

Vid katastrofala fel — databaskrasch, migrationsfel, beräkningsfel i agenten som hamnat i huvudboken — finns en sista utväg: administratörs-rättelse via separate support-process. Det är:

  • Bara tillgängligt efter skriftlig begäran från firmatecknaren.
  • Utförs av Redofy-support, inte av kunden.
  • Loggas separat i bfl_override_log med full motivering.
  • Resulterar i rättelseverifikation med override_reason-fält satt.

Detta har aldrig hänt i praktiken under Redofy:s livstid. Men mekanismen finns om den absolut behövs.

BFL 4 kap reglerar den löpande bokföringen:

  • Grundbok (journal) — kronologisk.
  • Huvudbok — systematisk per konto.
  • Verifikationer — underlag.

Redofy:

  • Journal / Grundbok — uppfyller grundboken.
  • Huvudbok — uppfyller huvudboken.
  • Varje verifikation med kopplat underlag — uppfyller verifikationskravet.

BFL 6 kap reglerar vad som ska rapporteras årligen:

  • Årsbokslut — alltid. Intern sammanställning av året.
  • Årsredovisning — för större företag (AB, föreningar över storleksgränser).

Redofy bygger både automatiskt från den löpande bokföringen. Årsredovisningen är i iXBRL-format till Bolagsverket. Se iXBRL.

BFL 7 kap reglerar arkivering. Se Arkivering för djupdykning.

Kort:

  • 7 år för verifikationer, grundbok, huvudbok, årsredovisning.
  • 3 år för skannade pappersoriginal parallellt med digitala kopior.

Bokföringsnämnden (BFN) publicerar detaljerade regler via BFNAR — “Bokföringsnämndens allmänna råd”:

  • K1 — enskild firma, förenklat årsbokslut.
  • K2 — mindre aktiebolag.
  • K3 — medelstora och större företag.
  • K4 — internationella företag (IFRS-liknande).

Redofy väljer regelverk baserat på företagets storlek och form och laddar rätt kontoplan + rapportmallar automatiskt.

Särskilda regler för digitala underlag (kvittobilder, mejl, elektroniska fakturor):

  • Original-medium ska noteras — “ursprungligen papper” vs “ursprungligen digital”.
  • Skannade pappersoriginal ska arkiveras både digitalt och fysiskt i 3 + 7 år.
  • Digitala original — ingen parallell pappersretention krävs.
  • Integritet — den digitala kopian ska vara oläslig manipulation.

Redofy taggar varje underlag med original_medium och hanterar retentionen enligt vilken typ det är.

Allvarligare brott mot BFL kan leda till:

  • Förseningsavgifter — vid försenad årsredovisning till Bolagsverket.
  • Straffavgifter — skattetillägg från SKV vid felaktiga deklarationer.
  • Bokföringsbrott (BrB 11 kap) — straffrättsligt ansvar om bokföringen uppsåtligen eller grovt oaktsamt är så bristfällig att den inte ger en rättvis bild. Böter till fängelse 2 år.
  • Personligt ansvar för styrelseledamöter vid missbruk eller grov oaktsamhet.

Redofy:s strukturella invariants gör det svårt att bryta BFL även avsiktligt — men du är alltid ytterst ansvarig för att bokföringen är sann och korrekt.