Säkerhet genom ägande

Det säkraste stället för din bokföring är infrastruktur du själv kontrollerar. Här är exakt hur det hänger ihop — tekniskt, men begripligt.

VadVar det borVem har åtkomst
Bokföringen (verifikat, fakturor…)Din Postgres-databas (Supabase, EU)Bara du
Kvitton & underlagPrivat fillagring i samma projektBara du
AppenDitt Vercel-kontoBara du
AI-nycklarDin databas / dina miljövariablerBara du
KodenDitt GitHub-konto (din kopia)Du + kodinsyn för alla licenskunder
Inmejlade leverantörsfakturor (bara om du slår på det)Krypterade hos oss tills din dator hämtatVi kan läsa dem när de kommer in — sedan raderas de

Du äger allt — bokstavligen

Debet & Kredit är inte en molntjänst du hyr in dig i. Programmet installeras på dina egna konton: databasen och kvittoarkivet i ditt Supabase-projekt (välj EU-region, t.ex. Stockholm), appen i ditt Vercel-konto, AI-nyckeln i ditt AI-konto. Vi har ingen åtkomst till någonting av det.

Vill du inte ha moln alls? Hela systemet — databas, app och AI — kan köras helt lokalt på en maskin du äger, utan ett enda konto hos någon molnleverantör. Det är den yttersta formen av dataägande, och den finns dokumenterad för licenskunder som är bekväma med Docker.

Väljer du komplett uppsättning skapas kontona fortfarande i ditt namn — vi behåller bara en administrativ åtkomst för att sköta uppdateringar, och du får ett ägarbevis som visar exakt vad du äger och hur du tar bort vår åtkomst. Gör du det fortsätter allt att fungera — för det är ditt.

100 % lokalt — när ingenting får lämna huset

För den som vill dra ägandet hela vägen: Debet & Kredit kan köras helt utan molntjänster. Databasen, appen och AI-modellen körs då i Docker på en maskin du äger — en server, en NAS eller en vanlig dator i förrådet. Inte en byte bokföringsdata lämnar din byggnad: inga molnkonton, inga tredjepartsservrar, ingen trafik att avlyssna. Även AI-bokföringen kör lokalt (t.ex. Ollama), så kvittona analyseras på samma maskin som de lagras på.

Säkerhetsmodellen är då fysisk: den som inte har din maskin har inte din bokföring. Åtkomst utifrån löses utan öppna portar (vi rekommenderar och dokumenterar Tailscale — krypterat, privat nät mellan dina egna enheter), och alla databasens skydd — oföränderliga verifikat, roller, radnivåsäkerhet — gäller precis likadant lokalt.

Ärligheten som hör till: lokalt betyder att du tar över backupansvaret — bokföringslagen kräver 7 års arkiv, och en diskkrasch utan kopia är ditt problem på ett sätt molnet aldrig är. Därför är backup-rutinen (daglig dump + kopia utanför maskinen) ett obligatoriskt kapitel i självhostningsguiden, inte en fotnot. Är du inte bekväm med Docker och terminal är molnvägen med egen EU-databas + lokal AI-modell nästan lika privat — utan driftansvaret. Båda vägarna ingår i samma licens.

Bokföringslagen sitter i databasen, inte i gränssnittet

De viktigaste skydden är byggda som regler i själva databasen — de kan inte kringgås av någon som loggar in i programmet, oavsett roll:

  • Ingen roll i programmet kan ändra eller radera ett bokfört verifikat. Vill du rätta något skapas ett ändringsverifikat som vänder originalet och bokför rätt — precis som bokföringslagen kräver. Försöker man ändra direkt säger databasen nej.
  • Nummerserierna är obrutna. Verifikat och fakturor numreras atomiskt i databasen — det kan inte uppstå luckor eller dubbletter, oavsett vad som händer i appen.
  • Varje verifikat måste balansera. Debet = kredit kontrolleras innan något sparas.
  • Verifikat skapas bara genom bokföringsmotorn. Appen skriver aldrig direkt i verifikattabellen — allt går genom databasens egna bokföringsfunktioner, som kontrollerar balansen, delar ut nästa nummer i serien och vägrar bokföra i en låst period. Ingen applikationsroll har en väg förbi dem, oavsett hur man ansluter.
  • Attestbeslut vaktas på samma nivå. Kräver företaget attest av leverantörsfakturor är det databasen som håller i spärren: en faktura som väntar på attest eller blivit avvisad kan inte betalas, varken från fakturan eller vid avprickningen mot banken. Vem som attesterade och när loggas.
  • Underlag arkiveras i 7 år. Kvitton kopplade till verifikat kan inte raderas så länge verifikatet finns.

Och den ärliga bisatsen: spärrarna gäller alla som loggar in i programmet, men databasens ägare kan tekniskt allt — den som har ägarrollen i Postgres kan stänga av en spärr. Så ser det ut i varje bokföringsprogram som körs på egen infrastruktur, och det är baksidan av att datan är din. Skillnaden mot ett skydd som bara sitter i gränssnittet står kvar: ett kringgående kräver ett medvetet ingrepp med ägarens behörighet, inte ett felklick i appen.

Ett förtydligande som seriösa aktörer är skyldiga dig: Skatteverket certifierar inga bokföringsprogram — varken vårt eller någon annans. Kravet ligger på att bokföringen följer lagen, och det är de kraven programmet är byggt runt. Deklarationsunderlag exporteras i myndigheternas egna format: eSKD (moms), AGI (arbetsgivardeklaration), SRU (inkomstdeklaration) och SIE 4 (branschstandarden).

Vill du läsa lagrummen själv finns hela svaret på en egen sida: Bokföringslagen och självhostning går igenom var räkenskapsinformationen får förvaras (7 kap. bokföringslagen), säkerhetskopian som är ett krav och inte en god vana (BFNAR 2013:2 p. 8.2), sjuårsarkivet — och ansvarsfördelningen mellan dig och oss, utskriven rad för rad.

Tvåstegsverifiering — samma metod som din bank

Lösenord läcker i världen, inte här: listor från helt andra tjänsters intrång säljs vidare, och den som återanvänt sitt lösenord någonstans blir sårbar överallt. Därför kan varje användare slå på tvåstegsverifiering på sitt konto — det extra steget du känner igen från banken, GitHub och Microsoft.

Efter lösenordet skriver du in en sexsiffrig kod från en app i telefonen (Google Authenticator, Microsoft Authenticator, Authy, 1Password — vilken du vill, de följer samma standard). Den som skulle få tag på ditt lösenord kommer ändå inte in, för koden finns bara i din hand.

Två saker som skiljer oss: kravet sitter i spärren framför appen, inte i gränssnittet — en halvinloggad session når ingen sida i programmet, oavsett vilken adress den skriver in. Och nycklarna bor i din egen databas, precis som allt annat. Vi kan varken se dem eller stänga av skyddet åt dig. Tappar du telefonen tar du själv bort faktorn i din panel och slår på det igen — ingen support att vänta på, ingen kö.

Funktionen är valfri, personlig och ingår i både licens- och community-versionen.

AI:n — tre nivåer, du väljer

AI:n får bara det du själv skickar in: kvittot du fotar, texten du skriver, frågan du ställer. Den läser aldrig din databas på egen hand — och rådgivaren är tekniskt spärrad till läsning: den kan slå upp saldon och verifikat, men har inga verktyg för att ändra något.

  • Molnmodell med din egen nyckel (Anthropic eller OpenAI): underlaget skickas krypterat till leverantören du valt, under ditt avtal med dem. Du sätter själv ett utgiftstak på nyckeln.
  • Helt lokal modell (t.ex. Ollama): AI:n kör på din egen dator eller server — ingenting lämnar din infrastruktur. För dig med extra känsliga krav.
  • Ingen AI alls: allt i programmet går att göra manuellt. AI:n är en accelerator, aldrig ett krav.

Inloggning och åtkomst

  • Inloggning sköts av Supabase Auth (samma plattform som tusentals företag använder), all trafik går över HTTPS.
  • Varje databastabell skyddas av radnivåsäkerhet (RLS) — utan giltig inloggning finns ingen väg till datan, inte ens om någon hittar din databas-URL.
  • Nyregistrering stängs av vid installationen — bara konton du själv skapat kan logga in i din instans.
  • Bokföringsfunktionerna i databasen kan inte anropas anonymt, och API-nycklar lagras aldrig i koden.

Granskbar kod — lita inte på oss, läs själv

Sluten programvara ber dig lita blint. Vi gör tvärtom: koden går att läsa, rad för rad, av dig eller vem du än anlitar. Community-versionen är helt öppen (AGPL), och licensversionen får varje kund full kodinsyn i. Det finns inga dolda beteenden att gömma — och det är en säkerhetsegenskap i sig.

Vill du se exakt vilka regler som gäller? Hela regelverket är publikt — varje momsruta, varje konteringsregel och varje formel, med rättskälla och länk till koden som kör den.

Backuper och vägen ut

  • På Supabase betalnivå får din databas automatiska dagliga backuper. På gratisnivån ansvarar du själv — vår rekommendation är en regelbunden SIE-export (två klick i programmet).
  • Exportfrihet är din yttersta säkerhet: hela bokföringen kan när som helst tas ut som SIE 4 (läsbart av alla svenska bokföringsprogram och av din revisor), plus PDF- och CSV-rapporter och alla kvitton. Ett klick ger hela räkenskapsåret som en zip — SIE-filen, rapporterna och varje underlag med sitt svenska filnamn — ett arkiv som lever vidare utan både databasen och programmet. Ingen inlåsning — någonsin.
  • Appen och databasen är åtskilda: går appen ner finns bokföringen orörd i databasen, och varje tidigare app-version kan återställas med ett klick.

Migrationsvakten — koden och databasen kan inte glida isär i tysthet

Äger du programmet uppdaterar du det själv, och då finns ett läge som är farligare än ett fel: den halvt uppdaterade installationen. Ny kod är utrullad men databasändringen har inte körts. Ingenting kraschar — funktioner slutar bara fungera tyst, och i ett bokföringsprogram kan tyst fel betyda en siffra som inte längre räknas med.

Därför bär varje installation en vakt. Den jämför kodens inbyggda migrationslista mot databasens egen liggare vid varje adminbesök, och ligger databasen efter får administratören ett besked som namnger exakt vilka filer som inte har körts — inte ett allmänt "något är fel". Beskedet loggas också, högst en gång per dygn, så att glappet finns skrivet även för den som klickade förbi.

Två detaljer som avgör om vakten är värd att lita på. Den gissar aldrig: kan liggaren inte läsas — typiskt en installation som ännu inte kört vaktens egen migration — svarar den "okänt" i stället för att larma falskt, för ett larm man lärt sig ignorera är sämre än inget larm. Och den varnar bara om det den kan jämföra rättvist: migrationer från före vaktens gräns ligger i äldre installationer under sina ursprungliga namn, och de jämförs inte på namn utan räknas som historia som redan bevisats i drift.

Det här är inte en funktion vi hittade på vid skrivbordet. Läget uppstod två gånger på en dag i vår egen drift, och varje självhostare som kör git pull utan att köra databasändringen hamnar i samma läge. Vakten gör glappet synligt i stället för tyst.

Vad händer om vi lägger ner?

Frågan är rimlig och ställs sällan högt. Ett litet företag bakom ett bokföringsprogram kan sluta finnas — och du sitter med sju års arkiveringsplikt. Här är svaret punkt för punkt, och det bygger inte på att vi lovar att finnas kvar utan på att frågan inte ska behöva ha någon betydelse.

Vad som slutar fungera i bokföringen: ingenting. Programmet kör på dina konton, mot din databas, med din inloggning. Det finns ingen licensnyckel som ska förnyas, ingen aktivering och ingen punkt där installationen frågar oss om lov — stängde vi av allt vi äger i dag skulle din installation inte märka det. Bokför, fakturera, deklarera: allt går vidare precis som i går.

  • Koden ligger redan hos dig. Community-versionen är AGPL i ditt eget repo. Licensversionen levereras till ditt GitHub-konto vid köpet, under en licens som gäller utan tidsbegränsning. Ett löfte som redan ligger i din ägo kan ingen dra tillbaka i efterhand — inte ens vi.
  • Datan ligger redan hos dig. Databasen, kvittoarkivet och nycklarna är dina konton hos leverantörer du har avtal med. Vi har ingen åtkomst att förlora.
  • Arkivet står utan både oss och programmet. Ett klick ger hela räkenskapsåret som en zip: SIE 4, rapporterna som PDF och varje underlag med sitt svenska filnamn. SIE 4 läses av varje svenskt bokföringsprogram och av din revisor. Det är den formen sjuårsarkivet ska överleva i, och den är oberoende av oss redan i dag.
  • Den nattliga säkerhetskopian fortsätter gå. Den skrivs till din lagring med dina nycklar, av ditt eget schemalagda jobb.
  • AI:n och kopplingarna är dina avtal. AI-nyckeln är din hos leverantören du valt (eller en modell på din egen maskin), och accesspunkten för e-faktura, autogirot och bankkopplingen står i ditt namn. Ingen av dem går via oss.

Vad som faktiskt upphör — och det ska sägas rakt ut:

  • Nya funktioner och rättelser. Din version fryses vid den dag det händer.
  • Årets regelvärden. Basbelopp, avgiftssatser och gränsbelopp kommer inte längre färdiga vid årsskiftet. Tabellen är datumstyrd och går att fylla på för hand, men då måste du veta om att den behöver det — därför står årtalet synligt i programmet där värdena används, och på Regelverkets sida om årets värden.
  • Supporten och felrapportknappen. Knappen skickar till oss; utan oss finns ingen mottagare. Hjälpcentret och Regelverket ligger kvar i din installation men slutar uppdateras.

Konstruktionen är inte en försäkran om att vi finns kvar. Den är ett sätt att göra frågan mindre viktig — och den kan en molntjänst inte kopiera, för där är åtkomsten till din egen bokföring villkorad av att leverantören lever och att abonnemanget löper.

Tar programmet emot leverantörsfakturor via mejl?

Ja, om du vill — och då går de vägen om oss. Din dator har ingen adress på internet, så leverantören kan inte mejla den direkt. Du får en egen mejladress hos oss, och när det kommer en faktura dit lägger vi den krypterad i en brevlåda tills din dator hämtar den. När datorn kvitterar att den fått fakturan raderar vi vår kopia. Har ingen hämtat den på trettio dagar raderar vi den ändå.

Vi kan läsa fakturan i det ögonblick den kommer in — annars hade vi inte kunnat ta emot den. Det vi inte gör är att spara den i klartext, tolka den eller bokföra något: tolkningen sker på din dator. Krypteringen skyddar mot en databasdump, en läckt säkerhetskopia och en felkonfigurerad fillagring. Den skyddar inte mot oss i mottagningsögonblicket, och vi kallar den därför aldrig ändpunktskryptering.

Vill du inte ha det så, låt funktionen vara avstängd. Då finns ingen adress, vi tar inte emot något åt dig, och allt annat i programmet fungerar precis likadant.

Det vi inte lovar — lika viktigt

Förtroende kräver ärlighet om gränserna. Debet & Kredit är ett verktyg, inte redovisningsrådgivning — ansvaret för att bokföringen blir rätt ligger alltid hos företagaren (det gäller alla bokföringsprogram, även de stora). AI-förslag ska granskas innan de godkänns; det är därför ingenting bokförs automatiskt utan ditt klick. Och kör du på gratisnivåernas infrastruktur gäller leverantörernas gratisvillkor — vill du ha garanterad drifttid och backuper är betalnivån (~25 USD/mån) rätt val. Du bestämmer, för det är dina konton.

Frågor om säkerheten?

Ställ dem gärna — eller låt din tekniker granska koden själv. Det är hela poängen med att den är öppen.

Datan bor hos dig — från första dagen.

2 995 kr exkl. moms, en gång — eller känn på programmet i demon först, inget konto behövs. Lanseringspris t.o.m. 20 oktober 2026 — ordinarie 4 995 kr exkl. moms.