Hjälpcenter

Allt om hur programmet fungerar, modul för modul — skrivet för människor, inte för supportavdelningar. Och behöver du mer: fråga Rådgivaren inne i programmet, den kan din bokföring.

Komma igång8 artiklar

Installera från noll: bildguiden steg för steg

Har du inte installerat programmet än? Bildguiden tar dig från tomt GitHub-konto till körande bokföring på dina egna konton, med en handling per steg, riktiga skärmdumpar, exakta knapptexter och kopiera-knappar på varje kommando. Räkna med 45–60 minuter. Samma innehåll i textform ligger som docs/INSTALLATION.md i ditt repo.

Öppna bildguiden för installationen
  1. Förbered: mejladress, lösenordshanterare och Node.js.
  2. GitHub: skapa konto, acceptera inbjudan (licensversionen) och gör en egen kopia med Fork.
  3. Supabase: skapa projektet i region Stockholm och hämta Project URL och den publika nyckeln under Project Settings → API Keys.
  4. Databasen: fem kommandon i terminalen bygger hela strukturen, och kvittoarkivet kontrolleras.
  5. Konto: skapa ditt inloggningskonto med Auto Confirm User, och stäng av självregistrering innan deploy.
  6. Vercel: importera koden, lägg in de fyra miljövariablerna (två krävs, två rekommenderas) och deploya.
  7. Inloggning: logga in och gå igenom wizardens fyra steg: företaget, moms och F-skatt, räkenskapsår och startläge.

Bra att veta

  • Kör du community-versionen finns en egen bildguide för det repot: debea.se/kom-igang/community.
  • Har du Claude Code och ett betalt Claude-konto kan AI:n göra den tekniska delen åt dig, se artikeln om Claude Code nedan.
Första gången: kom igång-wizarden

Första inloggningen möts du av en wizard som samlar in det bokföringen behöver: bolagstyp (enskild firma, aktiebolag eller handelsbolag), företagsuppgifter, momsperiod och om företaget har beslut om debiterad preliminärskatt (F-skatt). VAT-nummer härleds automatiskt ur organisations-/personnumret. Allt går att ändra senare under Inställningar.

  1. Välj bolagstyp — den styr kontoplan, AI-regler och vilka årsavslutsflöden som erbjuds.
  2. Fyll i företagsnamn, organisations-/personnummer, adress och ort (obligatoriska).
  3. Välj momsperiod: månad, kvartal (vanligast) eller helår.
  4. Svara på F-skattefrågan: ja, nej eller vet inte. Först vid ja lägger skattekalendern in de månatliga betalningsdatumen i Att göra — programmet antar aldrig att du har debiterad preliminärskatt.
  5. Klicka Kom igång — du landar på översikten och kan bokföra din första händelse direkt.

Bra att veta

  • Byter du från ett annat program? Kör Byt hit från annat program direkt efter wizarden — då följer hela historiken med. Bytet är ett engångsjobb och har därför ingen egen menyrad: du når det under Inställningar → Finns på andra sidor.
  • Kom igång-checklistan på översikten kan klickas bort steg för steg, eller döljas helt.
Byta från Fortnox, Visma eller Bokio

Bytesguiden (menyn → Byt hit från annat program, endast administratörer) flyttar hela din bokföring i sex steg i rätt ordning: förbered räkenskapsåren, exportera från gamla programmet, importera SIE-filerna, importera kund-, leverantörs- och artikelregister, importera banken, och kontrollera mot gamla programmets saldon. Ingenting raderas i det gamla programmet, och varje import kan köras om utan dubbletter.

Byta från Fortnox, Visma eller Bokio
  1. Förbered: bolagstypen är vald i onboardingen. Vill du ha med historik skapar du varje tidigare räkenskapsår under Inställningar → Räkenskapsår och periodlås → Räkenskapsår & verifikationsserier med exakt samma datum som i gamla programmet (brutna och förlängda år går bra för aktiebolag).
  2. Exportera: välj ditt gamla program i guiden och få exakta klicksteg (Fortnox: företagsnamnet → Export → SIE 4 – Transaktioner, en fil per år; Register → Kunder/Leverantörer/Artiklar → Exportera; kontoutdrag som CSV från internetbanken). Öppna inte filerna i Excel.
  3. Bokföringen: ladda upp SIE-filerna äldsta året först. Kontoplanen kompletteras, nya konton får momskod automatiskt, ingående balanser bokförs per år och verifikaten läggs i egna importserier. Guiden visar om något importerat konto saknar momskod. Saknar programmet SIE-export går det lika bra med en CSV (Serie, Vernr, Datum, Text, Konto, Debet, Kredit) — det finns en mall att ladda ner, och filen förhandsgranskas innan något bokförs.
  4. Register: ladda upp kund-, leverantörs- och artikel-CSV. Fakturaadressen används (inte leveransadressen); orgnr, VAT-nr, betalningsvillkor, momstyp, valuta, bankgiro/IBAN och förvalt kostnadskonto följer med.
  5. Bank: ladda upp kontoutdraget och granska förhandsvisningen — bank, kolumnmappning, första raderna och saldokedjan. Stämmer inte saldokedjan stoppas importen tills du justerat kolumnerna.
  6. Kontrollera: guiden visar verifikat per år, register- och bankantal, momskodsläget och saldona på 1930, 1510, 2440 och momskontona — jämför mot gamla programmets balansrapport per samma datum.

Bra att veta

  • Bästa bytesläget är ett årsskifte (bara ingående balanser behövs), men mitt i året fungerar också — SIE-filen tar med hela årets verifikat så momsrapporten blir komplett här.
  • Momsperioder som redan är deklarerade i gamla programmet markerar du som redovisade under Moms, annars räknas de om här.
  • Öppna kund- och leverantörsfakturor ligger i saldona men inte som fakturor — registrera de obetalda i Fakturor respektive Leverantörer om du vill följa upp dem här.
Enskild firma, aktiebolag eller handelsbolag — vad bolagstypen styr

Bolagstypen du väljer i onboardingen (ändras under Inställningar → Företaget, moms och F-skatt → Bolagsform, ett eget kort direkt under företagsuppgifterna) ger programmet rätt förutsättningar från start: kontoplanen får bolagsformens eget kapital- och skattekonton och döljer de andras, AI-bokföraren konterar privata betalningar och ägaruttag rätt (2018/2013 i enskild firma, 2893 och lön/utdelning i aktiebolag, delägarkonton i handelsbolag), skattesidan, årsavslutet, deklarationsfilerna och översiktens nyckeltal följer med.

  1. Enskild firma: eget uttag och insättningar mot 2013/2018, F-skatt mot 2012, förenklat årsbokslut med NE-bilaga (SRU: NE + INK1). Kalenderår är ett krav.
  2. Aktiebolag: bolagsskatten beräknas (20,6 % från regeltabellen, ej avdragsgilla kostnader återläggs) och bokförs 8910 → 2510 vid årsavslutet, årets resultat 8999 → 2099, och efter bolagsstämman bokför du resultatdispositionen (utdelning 2898, balanserat 2091) med ett klick under Årsavslut. K2-årsredovisning och INK2-SRU. Brutet räkenskapsår tillåtet.
  3. Handelsbolag: registrera delägarna med andelar under Inställningar → Släppa in andra → Delägare. Årsavslutet fördelar resultatet på delägarnas resultatkonton (2019, 2029 …) och konsoliderar varje delägares uttag/insättningar till kapitalkontot. Underlag per delägare för N3A skrivs ut från Årsavslut.
  4. Konton som döljs av presetet går alltid att visa igen: Kontoplan → Visa dolda konton. Konton med bokförda rader döljs aldrig.

Bra att veta

  • Byter bolaget form (t.ex. enskild firma → AB) startar du ett nytt företag i programmet — det är juridiskt ett nytt bolag med nytt orgnr.
Räkenskapsår: brutet år, förlängt år och historik

Nästa räkenskapsår skapas automatiskt när du avslutar det gamla och följer ditt räkenskapsår — även brutet (t.ex. 1 juli–30 juni). Vill du importera historik från ett tidigare program, eller använder aktiebolaget brutet år, skapar du åren själv under Inställningar → Räkenskapsår och periodlås → Räkenskapsår & verifikationsserier → Lägg till räkenskapsår.

  1. Ange från- och till-datum exakt som i gamla programmet. Första och sista året får vara upp till 18 månader; enskild firma måste ha kalenderår.
  2. Åren får inte överlappa. Etiketten (t.ex. 2025) är året bokslutsdagen infaller.
  3. Importera sedan SIE-filerna äldsta året först — ingående balanser bokförs per år.
  4. Periodlåsningen visar varje kalendermånad i året (18 månader vid förlängt år) och helårsmoms följer räkenskapsåret.
Bjuda in användare och välja roller

Under Inställningar → Släppa in andra → Användare (endast administratörer) bjuder du in fler personer. Fyra roller finns, och de upprätthålls på databasnivå — inte bara i menyerna: Administratör (allt), Medarbetare (bokföring, fakturering, CRM och bank — ser aldrig lön eller inställningar), Granskare (läser allt inklusive lön men kan inte ändra något — för revisorn) och Anställd (ser endast sina egna lönespecifikationer).

Bjuda in användare och välja roller
  1. Inställningar → Släppa in andra → Användare → Lägg till användare.
  2. Ange e-post, välj roll — för rollen Anställd kopplar du personen till personalregistret.
  3. Ett engångslösenord visas EN gång — ge det till personen säkert och be dem byta vid första inloggningen (Glömt lösenord på inloggningssidan fungerar också).

Bra att veta

  • Ditt första konto blir automatiskt administratör.
  • Den sista administratören kan aldrig tas bort eller nedgraderas — databasen vägrar.
  • Att skapa användare kräver miljövariabeln SUPABASE_SERVICE_ROLE_KEY (se installationsguiden). Utan den visas ett tydligt meddelande.
Sätt upp med Claude Code — AI:n installerar åt dig

Claude Code är Anthropics terminalprogram och kräver ett betalt Claude-konto hos dem — har du det kan du låta AI:n göra hela den tekniska uppsättningen: klona din fork, koppla databasen, köra alla migrationer, sätta upp hostingen och verifiera att allt fungerar. Du gör bara det en människa ska göra — skapa konton och skriva lösenord. Hela instruktionen med kopierbar prompt finns på debea.se/kom-igang/claude-code, för både licensen och community-versionen. Samma text ligger som docs/INSTALLATION-CLAUDE.md i ditt repo.

Öppna sidan med den kopierbara prompten
  1. Del 1 (du, ~20 min): skapa konton på GitHub, Supabase och Vercel, acceptera repo-inbjudan och forka, skapa Supabase-projektet (region Stockholm), installera Vercels kommandoverktyg och logga in i supabase- och vercel-CLI:erna — tre inloggningsflöden, ett i taget.
  2. Del 2: öppna Claude Code i en tom mapp, klistra in instruktionsblocket från debea.se/kom-igang/claude-code (kopiera-knapp på sidan) och byt ut <MITT-GITHUB-ANVÄNDARNAMN>.
  3. AI:n arbetar steg för steg — klonar, länkar databasen, kör migrationerna, sätter miljövariablerna (du klistrar in värdena direkt i terminalen när kommandona frågar) och deployar.
  4. Avslutningen är en verifiering + lista över vad som är uppsatt och var ditt backupansvar ligger.

Bra att veta

  • Lösenord och nycklar skriver du alltid själv direkt i terminalens promptar — instruktionen förbjuder uttryckligen AI:n att be om dem i chatten.
  • Claude Code visar varje kommando innan det körs — du godkänner allt.
  • Fastnar AI:n någonstans: fortsätt för hand från det steget med vanliga INSTALLATION.md — de följer samma ordning.
Köra helt lokalt (självhostning)

Hela systemet — databas, app och AI — kan köras på en maskin du äger, utan molnkonton. Det kräver Docker och lite terminalvana, och du tar då själv över backupansvaret. Komplett guide finns i repot: docs/SJALVHOSTNING.md, med backup-rutiner (viktigt — bokföringslagen kräver 7 års arkiv), säker åtkomst via Tailscale och uppdateringsflöde.

Bra att veta

  • Är du osäker: molnvägen (egen Supabase i EU + lokal AI-modell) ger nästan samma integritet utan driftansvaret.

Bokföring13 artiklar

Översikten och widgets

Översikten visar dina nyckeltal (omsättning, resultat, bank & kassa, momsskuld …), månadsdiagram, Att göra-listan (förfallna fakturor, skattedeadlines, verifikat utan underlag) och senaste verifikat. Diagrammens staplar visar exakta värden när du håller muspekaren över dem.

Översikten och widgets
  1. Klicka Anpassa ovanför nyckeltalen för att ta bort widgets (krysset) eller lägga till nya ur listan.
  2. Klicka Klar när du är nöjd — valet sparas per företag.

Bra att veta

  • Skattedatumen i Att göra är inte inlagd data — de härleds ur dina företagsinställningar: momsperioden, EU-handeln, bolagstypen och svaret på F-skattefrågan. Saknas F-skattedatum är det för att frågan står obesvarad eller besvarad med nej under Inställningar.
  • Sökningen når du med ⌘K (Ctrl+K på Windows och Linux) från vilken sida som helst i programmet — den söker i verifikat, fakturor, kunder och leverantörer. Den har ingen egen menyrad: en genväg behöver ingen yta för att finnas, och menyn ska inte bära ett sökfält.
Analys: diagram över det som redan är bokfört

Analys (menyn, direkt under Översikt) räknar enbart på det som redan är bokfört — inga egna register, ingen inmatning och inga antaganden. Sidan visar ett räkenskapsår i taget (det öppna året, annars det senaste) och alla belopp är exklusive moms. Överst står tre nyckeltal: marknadsföring (kontoklass 59) och varor & underentreprenader (kontoklass 4) för året, båda också uttryckta per affär, samt hur många verifikat som saknar underlag. Den sista siffran är medvetet inte avgränsad till året — arkiveringsplikten är sju år — och listan längst ner på sidan länkar till varje verifikat som ska kompletteras.

  1. Omsättning och resultat, månad för månad: staplarna är omsättningen för året, föregående år nedtonat bakom när det finns ett, och linjen är resultatet.
  2. Vart pengarna går: årets kostnader fördelade på BAS-kontoklass 4–7 — varor, material och köpta tjänster; lokal, förbrukning och resor; kontor, reklam och försäkringar; personal och avskrivningar.
  3. Bruttomarginal per månad: omsättningen minus varor och material (kontoklass 4), i procent av omsättningen.
  4. Största kostnadsposterna: årets tio största motparter på kostnadssidan, med en samlingspost för övriga. Samma siffror som tabellen längre ner, men i storleksordning.
  5. Kundkoncentration: kunderna i storleksordning med ackumulerad andel (Pareto). Rubriken säger hur många kunder som står för 80 procent av omsättningen — ju färre, desto mer hänger företaget på dem.
  6. Kundfordringar efter ålder: obetalda kundfakturor grupperade som inte förfallet, 1–30, 31–60 och över 60 dagar sent, med belopp och antal per grupp. Klicka en stapel för att gå vidare till fakturorna.
  7. Tabellerna nederst: kostnader per leverantör och månad, försäljning per kund och försäljning per intäktskonto.

Bra att veta

  • Motparten på verifikatet är det som gör tabellerna läsbara. Rader utan motpart samlas på (utan motpart) respektive (okänd kund) i stället för att utelämnas, så totalerna stämmer alltid mot bokföringen.
  • Sidan är avgränsad till ett räkenskapsår. Utan den avgränsningen hade januari 2025 och januari 2026 hamnat i samma månadskolumn och lagts ihop.
  • En kostnadsklass vars netto är noll eller negativt utelämnas ur fördelningen. Negativt netto betyder att en rättelse eller kreditering överstiger årets kostnad, och en andelsstapel kan inte rita en negativ andel.
  • Andelarna i kundkoncentrationen räknas mot hela omsättningen, inte mot topplistan — annars hade varje företag sett ut att ha exakt 100 procent av omsättningen hos sina tio största kunder.
  • Analysen ändrar aldrig något. Vill du ha samma underlag som utskrivbar rapport eller fil tar du det under Rapporter.

Vanliga fel och lösningar

En månad saknas helt i bruttomarginalen
Månaden hade ingen bokförd försäljning. En marginal på noll och ingen försäljning alls är två helt olika saker, och en linje som faller till noll i juli skulle påstå det första — därför lämnas månaden tom.
Ett diagram säger att det inte finns något att visa
Tomläget betyder att underlaget inte är bokfört ännu: inga intäkter eller kostnader på året, inga kostnader på konto 4000–7999, ingen försäljning, eller inga obetalda kundfakturor. Diagrammet fylls i av sig självt när första verifikatet är på plats.
En betald faktura syns inte i åldersanalysen
Fakturor med noll eller negativt utestående belopp — helt betalda och överbetalda — hör inte hemma i en åldersanalys och räknas inte med. Fakturor utan förfallodatum räknas som inte förfallna; de kan inte vara sena mot en tidpunkt som inte finns.
Siffran per affär ser hög ut
Nämnaren är antalet verifikat med bokförd försäljning under året, inte antalet fakturarader. Ett år med få men stora affärer ger därför ett högt tal per affär — det är en storleksordning att följa över tid, inte ett nyckeltal att jämföra mellan branscher.
AI-bokföring: fota kvittot

AI-bokföring (menyn) är snabbaste vägen från kvitto till verifikat: ladda upp ett foto/PDF eller beskriv köpet i text. AI:n läser underlaget, föreslår kontering enligt BAS 2026 med rätt moms (inklusive omvänd skattskyldighet för EU-inköp och representationens momstak), kontrollerar mot din tidigare bokföring efter dubbletter — och du granskar och bokför med ett klick. Underlaget arkiveras automatiskt på verifikatet.

AI-bokföring: fota kvittot
  1. Öppna AI-bokföring, fota/ladda upp kvittot eller skriv en beskrivning (gärna båda — syfte och betalsätt hjälper AI:n).
  2. Klicka Analysera med AI och granska förslaget: konton, belopp, moms och eventuella varningar.
  3. Justera vid behov (kontona är valbara i förslaget) och klicka Bokför.
  4. Sätt utgiftstaket FÖRST Taket sätts innan det finns pengar att spendera. Du betalar bara för din egen användning, och taket är skillnaden mellan en känd kostnad och en obehaglig överraskning. Knappar: Settings → Limits. Resultat: Ett månadstak står angivet på kontot.
  5. Köp krediter Krediter köps under Settings → Billing → Buy credits, från omkring 5 USD. Det räcker länge: bokföringsjobben är korta. Knappar: Settings → Billing → Buy credits. Resultat: Saldot står över noll på kontot. Det här är steget alla missar. Utan saldo är nyckeln giltig men varje anrop nekas — felet ser ut som ett programfel, inte som ett tomt konto.
  6. Skapa nyckeln sist, och klistra in den här Skapa nyckeln under Settings → API keys och klistra in den i fältet på det här kortet. Sparningen kör Testa AI-kopplingen automatiskt och svarar i klartext. Gamla console.anthropic.com skickar dig till samma ställe. Knappar: Settings → API keys → Create Key → Spara. AI-nyckel: sk-ant-… (Eller sk-… om du valde OpenAI. Anthropic läser även PDF.) Resultat: Kortet visar Nyckel sparad och det senaste testkvittot: aktiv betyder att Testa AI-kopplingen svarade ja, och när den gjorde det.
  7. Eller kör en modell du äger själv Fältet Egen/lokal modell tar en OpenAI-kompatibel endpoint till en modell du kör själv — då lämnar din bokföring aldrig dina egna servrar och ingen API-nyckel behövs. Modellnamnet skrivs INTE i AI-modell: den listan innehåller bara Claude-modeller. Egen/lokal modell: adressen som står i kortet (Lämnas tomt i molnet.) Resultat: AI-kortet slutar kräva en nyckel och anropar din egen adress i stället.
  8. Steget alla glömmer: ORDNINGEN ÄR HELA POÄNGEN: utgiftstak → köp krediter → skapa nyckel. En nyckel utan saldo är fullt giltig och nekas ändå på varje anrop. Kunden som hoppade kreditsteget fick ett 400 på sitt första kvitto och trodde att programmet var trasigt.

Bra att veta

  • Inköpslista (CSV) längre ner på sidan bokför många inköp på en gång — AI:n analyserar varje rad.
  • Egna konteringsregler (Inställningar → AI-bokföraren → Konteringsregler) styr förslagen, t.ex. "alla inköp betalas privat → kreditera 2018".
  • PDF-underlag får vara högst 20 sidor. Är filen större avvisas den innan något skickas till AI:n — ladda upp den sida som är kvittot eller fakturan, eller dela upp filen. Ingenting debiteras för en avvisad fil.
  • En lokal AI-modell fungerar bara när programmet kör på samma maskin som modellen. Kör du i molnet avvisas en localhost-adress redan när du sparar, och en ifylld adress i fältet Egen/lokal modell kopplar dessutom bort din API-nyckel — då fungerar ingenting alls, inte bara PDF-läsningen.

Vanliga fel och lösningar

"Ladda upp ett kvitto eller beskriv inköpet"
Både fil och textfält var tomma — fyll i minst ett.
"AI-förslaget underkändes"
AI:ns förslag klarade inte valideringen (t.ex. obalans eller okänt konto). Prova igen med tydligare beskrivning — inget har bokförts.
AI:n säger att nyckel saknas
Gå till Inställningar → AI-bokföraren och leta efter knappen Testa AI-kopplingen bredvid Spara. Syns ingen sådan knapp finns ingen sparad nyckel — knappen visas först när en nyckel ligger i databasen, och badgen bredvid API-nyckel säger då Ingen nyckel. Lägg in nyckeln, så kör sparningen testet åt dig. Finns knappen: tryck på den, så görs ett minimalt riktigt anrop som på ett par sekunder säger vad som är fel — och då FINNS nyckeln redan, så lägg inte in en till. Tre orsaker förekommer: (1) fältet Egen/lokal modell är ifyllt och kopplar bort nyckeln helt, töm det och spara; (2) Anthropic-kontot har slut på krediter — en giltig nyckel utan saldo nekas på varje anrop, fyll på under Settings → Billing → Buy credits; (3) modellnamnet eller bas-URL:en pekar fel. Ett fjärde fall syns aldrig på det här kortet: bara administratörer kommer in i Inställningar, så ser DU beskedet med en annan roll finns nyckeln och du ber en administratör titta.
Analysen hänger länge och slutar i ett fel
Kör Testa AI-kopplingen under Inställningar → AI-bokföraren. Svarar testet direkt är kopplingen hel och det var underlaget som var tungt — en PDF på många sidor eller en stor bild. Svarar testet med ett fel står orsaken i klartext där. Ingenting bokförs av en misslyckad analys.
Testet svarar att anropet nekades trots att nyckeln är ny
Nästan alltid saldot. En nyckel utan krediter är fullt giltig och nekas ändå på varje anrop — köp krediter under Settings → Billing → Buy credits och testa igen.
Att godkänna: förslagskön

Att godkänna samlar AI:ns konteringsförslag för banktransaktioner utan regelträff och för filer i underlagsinkorgen. Varje förslag visar kontering, säkerhetsnivå (Säker/Osäker) och varningar — t.ex. möjliga dubbletter eller saknade kvittonummer. Ingenting bokförs utan ditt klick.

Att godkänna: förslagskön
  1. Klicka Föreslå för bankhändelser respektive Föreslå för underlagsinkorgen.
  2. Granska varje kort — Godkänn & bokför eller Avvisa.
  3. Finns flera säkra förslag visas Godkänn alla säkra som bokför dem i ett svep.
Bokföra manuellt (Ny verifikation)

Ny verifikation är den klassiska konteringsvyn: välj datum och serie, lägg rader med konto/debet/kredit, och spara. Verifikatet måste balansera — annars vägrar databasen. Konteringsmallar låter dig spara vanliga konteringar och återanvända dem med nytt belopp.

Bokföra manuellt (Ny verifikation)

Bra att veta

  • Knappen står på Verifikat (menyn, gruppen Varje dag) — Ny verifikation är en åtgärd och har därför ingen egen menyrad, på samma sätt som Ny faktura står på Fakturor.
  • Momssatserna och de tvingande reglerna (balanskrav, obrutna nummer) är inbyggda och kan inte kringgås.
  • Konton som styrs av automatiken (t.ex. 2650 momsredovisning) är spärrade för manuell kontering — det är avsiktligt.
Verifikat, rättelser och underlag

Verifikatlistan visar allt bokfört. Ett bokfört verifikat kan aldrig ändras eller raderas i efterhand (bokföringslagen) — i stället skapar du ett ändringsverifikat via Rätta verifikat på verifikatsidan: originalet vänds och rätt version bokförs, med spårbar länk mellan dem. Underlag (kvitton) laddas upp på verifikatet och kan inte tas bort så länge verifikatet finns (7-årsarkivering).

Verifikat, rättelser och underlag

Vanliga fel och lösningar

"Bokförda verifikat får inte ändras (BFL)"
Det är skyddet som arbetar. Använd Rätta verifikat — det skapar ett korrekt ändringsverifikat.
"Perioden är låst"
Månaden är låst (t.ex. av en godkänd momsrapport). Bokför i öppen period eller lås upp under Inställningar → Räkenskapsår och periodlås → Periodlåsning om det är rätt att göra.
Kostnadsställen och projekt

Två frivilliga märkningar per verifikatrad som svarar på var i verksamheten en kostnad eller intäkt hör hemma. Kostnadsstället är avdelningen, butiken eller resultatenheten; projektet är uppdraget, bygget eller kampanjen. Märkningen ändrar ingenting i bokföringen — den gör den läsbar. Lägg upp objekten under Kostnadsställen & projekt i menyn; utan objekt syns inga väljare någonstans i programmet.

  1. Lägg upp ett kostnadsställe eller ett projekt med en kod och en benämning. Koden följer med som objektnummer i SIE-filen.
  2. Märk raderna: i Ny verifikation per rad, i snabbhändelserna för hela händelsen, per fakturarad, på leverantörsfakturan och som förval per anställd.
  3. Läs resultatet under Rapporter & export → Resultat per dimension, eller filtrera resultatrapporten och huvudboken på ett objekt.

Bra att veta

  • Märkningen sätts bara på resultatkonton. Bank, kundfordran, leverantörsskuld och moms märks inte — en balanspost hör till bolaget, inte till en avdelning, och rapporten skulle sluta stämma mot resultaträkningen.
  • Summan i Resultat per dimension är alltid periodens hela resultat. Rader utan märkning redovisas på en egen rad i stället för att utelämnas.
  • SIE-exporten bär märkningen som dimension 1 (kostnadsställe) och 6 (projekt) — SIE-standardens reserverade nummer, så revisorn och nästa program förstår dem utan förklaring.
  • Objekt tas aldrig bort, bara stängs. En bokförd rad får inte ändras, så kostnadsstället måste finnas kvar för att raden ska gå att läsa i efterhand.

Vanliga fel och lösningar

"Kostnadsstället X är avaktiverat och kan inte bokföras på"
Objektet är stängt. Öppna det igen under Kostnadsställen & projekt, eller välj ett annat — bokningen spärras hellre än att märkningen tyst faller bort.
Fel kostnadsställe på ett bokfört verifikat
Märkningen är en del av verifikatraden och kan inte ändras (bokföringslagen 5 kap. 7 §). Använd Rätta verifikat — vändningen bär originalets märkning, och den nya raden får rätt.
SIE-importen säger att objektnummer saknar #OBJEKT-rad
Filen använder ett objektnummer den inte har deklarerat, så vi vet koden men inte vad den betyder. Beloppet är bokfört; lägg upp objektet med samma kod och importera om filen om märkningen ska följa med.
Periodisering

Fördela en kostnad eller intäkt över de månader den hör till. Årsredovisningslagen 2 kap. 4 § första stycket 4: intäkter och kostnader som är hänförliga till räkenskapsåret ska tas med oavsett tidpunkten för betalningen. Fyra typer finns: förutbetald kostnad (försäkringen du redan bokfört men som gäller framåt), upplupen kostnad (revisionsarvodet som hör till året men faktureras senare), förutbetald intäkt (abonnemanget du fakturerat i förskott) och upplupen intäkt (arbetet som är utfört men inte fakturerat).

  1. Välj typ, skriv beskrivning och belopp, och ange hur många månader det ska fördelas på.
  2. Välj balanskonto — 17xx för förutbetalda kostnader och upplupna intäkter, 29xx för upplupna kostnader och förutbetalda intäkter — och det resultatkonto beloppet hör till.
  3. Är posten förutbetald anger du också ett datum för avsättningen. Då bokförs hela beloppet bort från resultatkontot direkt.
  4. Lös upp en månad i taget, eller klicka Lös upp alla förfallna. Varje upplösning blir ett eget verifikat daterat sista dagen i månaden.

Bra att veta

  • Månadsbeloppen skiljer sig med högst ett öre och summan är exakt beloppet — annars hade en öresrest blivit kvar på balanskontot för alltid, och verifikat går inte att ändra i efterhand.
  • En upplupen post får ingen avsättning. Beloppet finns inte på resultatkontot än; det byggs upp månad för månad, och när fakturan kommer bokför du den mot samma balanskonto.
  • Understiger beloppet K2:s gräns (7 000 kr för räkenskapsår som inleds efter 2025, dessförinnan 5 000 kr) säger programmet det. Regeln är en förenkling, inte ett förbud — du får periodisera ändå.
  • Kostnadsställe och projekt kan sättas på planen. Märkningen hamnar på resultatraden i varje upplösning, aldrig på balanskontot.

Vanliga fel och lösningar

"Perioden är låst"
Månaden är momsredovisad eller manuellt låst. Lös upp perioden i en öppen månad, eller lås upp under Inställningar → Räkenskapsår och periodlås → Periodlåsning om det är rätt att göra.
En upplösning blev fel
Klicka Ångra på månaden och ange en orsak. Verifikatet vänds med ett ändringsverifikat (bokföringslagen 5 kap. 5 §) och månaden blir öppen igen — den ursprungliga posten står kvar och går att följa.
Avtalet sades upp mitt i
Avbryt periodiseringen. Kvarvarande belopp förs tillbaka till resultatkontot i ett verifikat, och redan upplösta månader lämnas orörda — de har hänt.
Underlagsinkorgen

Släpp in kvitton och fakturor i underlagsinkorgen när du inte hinner bokföra direkt — mobilkamera eller fil. Därifrån skickar du dem till AI-bokföringen med ett klick, eller låter Att godkänna föreslå konteringar för hela inkorgen. Filer som ännu inte är kopplade till verifikat kan raderas.

Underlagsinkorgen
Avstämning mot banken

Avstämningen jämför bokfört saldo på företagskontot (1930) mot dina faktiska banktransaktioner, på öret. Importera transaktioner via CSV från internetbanken (fungerar direkt utan konfiguration) och pricka av. Bokföringsreglerna längre ner på Bank-sidan (kortet Bokföringsregler) matchar återkommande texter — "allt från Telia → 6212" — och kan bokföra automatiskt vid entydig träff.

Avstämning mot banken
Månadsavslut: se exakt vad som återstår

Avstämningen svarar på om bokföringen hänger ihop just nu. Den här sidan svarar på en annan fråga: är september färdig? Du får en rad per period i räkenskapsåret och sju villkor för varje — banken, inkorgarna, underlagen, momsen, lönen, periodiseringarna och skattekontot — med vad som mäts, hur det ligger till och en länk rakt till det som behöver göras. Ingenting cachas: villkoren räknas om varje gång du öppnar sidan.

  1. Öppna Månadsavslut i menyn under Varje månad. Perioden du senast arbetat i ligger överst och är utfälld.
  2. Gå igenom villkoren uppifrån. Varje rad säger vad grönt betyder, vad mätvärdet är just nu, och länkar till sidan där åtgärden görs.
  3. Har banken inget saldo att jämföra mot skriver du in utgående saldo från kontoutdraget i fältet på raden. Utan det går bankavstämningen inte att pröva.
  4. När inga villkor är röda klickar du Markera som klar. Kvitteringen får datum och namnet på den som gjorde den.
  5. Vill du låsa perioden är det ett eget steg på en färdig rad — och det steget går inte att ångra.

Bra att veta

  • Ett villkor kan sluta i tre lägen, inte två. Grönt är prövat och uppfyllt, rött är prövat och kvarstår, och "går inte att pröva" är varken eller — till exempel ett kvartal som inte tagit slut, ett bolag utan anställda eller en period utan periodiseringar. Det tredje läget blockerar aldrig och kallar sig aldrig avstämt.
  • En färdig period kan öppnas igen så länge den inte är låst. Rutinen är gjord för att köras om.
  • Saknas ett kvitto som är borta för gott går den att stänga ändå, men bara mot en skriven motivering. Den följer med och gör att raden redovisas som klar med anmärkning.
  • Skattekontovillkoret läser samma utdrag som Avstämning → Skattekontot. Månaden är grön när utdraget täcker hela perioden och varje rad i den är avprickad mot konto 1630 — ett halvt inläst utdrag räknas inte som avstämt. Kör du en äldre databas än appen står villkoret som "kommer": det blockerar ingenting och påstår ingenting.
  • Perioder som slutade innan du började bokföra här prövas inte, och perioder framåt i tiden prövas inte heller. Ett program som installeras i september vet ingenting om januari och påstår därför ingenting om januari.

Vanliga fel och lösningar

Momsen står som "perioden pågår" fast jag vill stänga.
Momsdeklarationen avser en avslutad redovisningsperiod, och programmet spärrar godkännandet innan perioden är slut. Redovisar du kvartalsvis kan Q3 godkännas först efter den 30 september — juli och augusti är alltså klara utan att momsen är det. Villkoret blockerar därför inte.
Lönevillkoret säger att det inte kan prövas.
Tre olika lägen ger det svaret. Perioden kan pågå — lönen betalas den 25:e och blir en anmärkning först efter periodskiftet. Ingen anställd kan ha en anställningstid som täcker perioden. Eller så är du inloggad som medarbetare: lön och personal ligger utanför den rollens läskrets, och då säger programmet det i stället för att gissa. Administratören och granskaren ser villkoret.
Jag har precis installerat programmet — varför är inget rött?
Perioder som slutade innan din första bokförda dag prövas inte alls. De ligger inte efter, och de räknas inte med i den summering din redovisningsbyrå ser. Den första period du bokför i är den första som prövas.
Bankvillkoret blir aldrig grönt trots att allt är avprickat.
Då saknas ett utgående saldo att jämföra mot. Importerar du CSV från internetbanken finns inget bankkonto kopplat, så saldot måste skrivas in på raden — ett fält per bankkonto med rörelser i året.
En låst period går inte att ändra.
Det är meningen. Ett periodlås är oåterkalleligt när det kommer från en momsrapport eller ett bokslut, och en låst period är per definition färdig. Rutinen sätter aldrig ett lås av sig själv.
Kontoplanen och momskoderna

Kontoplanen följer BAS, med momskoder som styr vilken ruta i momsdeklarationen varje konto hamnar i. Bolagstypen avgör vilka eget kapital- och skattekonton som visas (enskild firma 2010–2019, aktiebolag 2081/2091/2099/2510/8910, handelsbolag delägarkonton 2010–2049) — resten döljs men kan visas igen. SIE-importen skapar automatiskt de konton den möter och sätter momskod utifrån BAS-intervall och kontonamn.

Kontoplanen och momskoderna
  1. Momskod ändras direkt i listan för intäkts-, inköps- och momskonton (26xx, 3xxx, 4xxx). Momskontona följer annars BAS-intervallen även utan kod: 2610–2619 utgående 25 % (2614/2615/2617 = omvänd), 2640–2649 ingående.
  2. Efter en SIE-import: granska momskoderna på de nya kontona innan första momsrapporten — importen och bytesguiden pekar ut hur många som saknar kod.
  3. Dölj/Visa: konton du inte använder döljs (går inte att bokföra på), Visa dolda konton tar fram dem igen. Systemkonton (2019, 8999 …) kan inte döljas.
Regelverket: så räknar programmet

Varje regel programmet bokför efter är publicerad på debea.se/regler — momsdeklarationens rutor med vilka konton och momskoder som summeras, konteringen för varje händelsetyp med debet och kredit, bolagsskattens härledning med rättskälla för avrundningen, arbetsgivaravgiften och AGI:ns fältkoder, avskrivningsreglerna, årets regelvärden med giltighetsdatum och vilken officiell specifikation varje exportfil följer. Sidorna genereras ur samma kod och samma kontoplan som faktiskt konterar, så de kan inte hamna i otakt med programmet, och varje avsnitt länkar rakt in i filen på GitHub.

  1. Undrar du varför ett belopp hamnade i en viss ruta: slå upp rutan under Regelverket → Momsdeklarationen, där står formeln och vilka konton som summeras.
  2. Undrar du hur en händelse ska konteras: Regelverket → Konteringen visar debet/kredit-tabellen som programmet självt bokför efter, per bolagsform där det skiljer.
  3. Ska du stämma av mot din revisor: Regelverket → Årets värden listar varje sats och basbelopp med gäller från och gäller till.

Bra att veta

  • Sidan är publik och kräver ingen inloggning — den går bra att skicka till din revisor eller redovisningskonsult.
  • Hittar du något som ser fel ut: rapportera det via supportbubblan. En felaktig regel i programmet är en felaktig regel i din bokföring.

Försäljning & CRM13 artiklar

Pipeline: från lead till vunnen

Pipelinen är en kanban-tavla med stegen Lead → Kontaktad → Offert skickad → Vunnen/Förlorad. Dra korten mellan stegen (eller använd pilknapparna på mobil). Varje affär kan ha värde, kontakt och nästa åtgärd med datum — åtgärden dyker upp i Att göra på översikten så inget faller mellan stolarna.

Pipeline: från lead till vunnen
Offert → Order → Faktura

Skapa en offert under Offert & Order, skicka den (utskrivbar PDF-vy finns), och markera Accepterad när kunden säger ja — offerten blir då en order med eget ordernummer, och en kopplad pipeline-affär flyttas automatiskt till Vunnen. Från ordern skapar du fakturan med ett klick — raderna följer med.

Offert → Order → Faktura
Tidrapportering och fakturaunderlag

Registrera tid per dag och uppdrag: timmar, projekt eller kund, vad som gjordes och om tiden är fakturerbar. Månaden summeras per projekt, kund och person, och kan exporteras som CSV. Ofakturerad fakturerbar tid samlas per kund i Fakturaunderlag — därifrån skapas ett fakturautkast med ett klick.

  1. Fyll i datum, timmar och beskrivning. Väljer du ett projekt med kund följer kunden med.
  2. Ange timpriset. Utan pris kan raden inte faktureras — programmet gissar aldrig fram ett.
  3. Är tiden intern avmarkerar du Fakturerbar. Då behövs varken kund eller projekt.
  4. Under Fakturaunderlag klickar du Skapa fakturautkast per kund. Utkastet öppnas för granskning och bokförs som vilken faktura som helst.

Bra att veta

  • Fakturaraderna slås ihop per projekt, timpris och artikel. Två timpriser blir två rader — annars stämmer inte antal gånger à-pris med det som utförts.
  • Artikeln bestämmer momssats och intäktskonto. Utan artikel används fakturaflödets förval, justerat för kundens momstyp precis som i fakturaformuläret.
  • Tiden går inte in i lönen. Timlön och OB styrs av avtal programmet inte kan läsa, så tidrapporten bär ingen lönelogik.
  • Ett dygn har 24 timmar, och summan per person och dag kan inte överskrida det. Ett skrivfel som faktureras är en felaktig faktura.

Vanliga fel och lösningar

"Tiden ligger på en faktura och kan inte ändras"
Raden är underlag till en utfärdad handling. Är fakturan bara ett utkast tar du bort utkastet — då släpps tiden tillbaka. Är den bokförd krediterar du den, precis som vid varje annat fakturafel.
Knappen Skapa fakturautkast är grå
Någon rad saknar timpris. Fyll i priset på raderna först.
"Tidraden hör inte till kunden"
Raderna faktureras en kund i taget. Kunden på raden går före projektets kund; stämmer de inte överens rättar du raden.
Fakturor: statusar, e-faktura och påminnelser

Fakturalistan visar läget direkt med färger: grönt = betald, rött = förfallen (med rött förfallodatum), gult = delbetald, blått = skickad, dämpat = utkast. Fakturanummer tilldelas i obruten serie först när fakturan bokförs. Varje bokförd faktura kan öppnas som PDF, laddas ner som e-faktura (Peppol BIS Billing 3.0), mejlas till kunden och påminnas om — manuellt eller automatiskt.

Fakturor: statusar, e-faktura och påminnelser
  1. Ny faktura → välj kund, lägg rader (artiklar förifyller pris och moms) → Bokför.
  2. Skicka som PDF via mejl (kräver Resend-nyckel) eller som e-faktura via din accesspunkt.
  3. Registrera betalningar på fakturasidan — status uppdateras automatiskt till delbetald/betald.
  4. Vid kreditering: Skapa kreditfaktura — originalet makuleras aldrig, allt är spårbart.

Bra att veta

  • Automatiska påminnelser slås på under Inställningar → Få betalt av kunder → E-post och påminnelser (Resend): max två per faktura, aldrig någon automatisk avgift.
  • E-fakturans mottagaradress härleds ur kundens organisationsnummer — eller ange en särskild Peppol-adress på kundkortet.

Vanliga fel och lösningar

"Bokför fakturan innan PDF/e-fakturan skapas"
Utkast saknar fakturanummer. Bokför först.
"Kunden saknar både Peppol-adress och organisationsnummer"
Öppna kundkortet och fyll i organisationsnummer eller Peppol-adress (t.ex. 0007:5561234567).
"Bokförd faktura får inte ändras"
Momslagens krav — skapa kreditfaktura och fakturera om i stället.
Ta emot e-faktura via Peppol

Att SKICKA e-faktura och att TA EMOT den är två olika saker, och det andra är det som brukar sakna en väg. Programmet tar emot UBL-dokument (Peppol BIS Billing 3.0) på en egen adress, tolkar dem och lägger dem som utkast under Leverantörer. Det viktigaste först: vi är inte din accesspunkt. Du behöver ett eget avtal med en accesspunktsoperatör som hämtar dokumenten ur Peppol-nätet — det är den som ska peka hit. Mottagningen är avstängd tills du satt en nyckel, och det är med flit: en öppen mottagning av leverantörsfakturor är en väg in för påhittade skulder.

  1. Sätt PEPPOL_INBOUND_SECRET där appen kör Utan nyckeln är mottagningen avstängd och svarar 503. En öppen mottagning av leverantörsfakturor är en väg in för påhittade skulder, så den startar aldrig av misstag. Strängen hittar du på själv och lägger som miljövariabel där appen kör — inte här i appen. I Vercel: Settings → Environment Variables, och sedan Redeploy. Knappar: Settings → Environment Variables → Save → Redeploy. PEPPOL_INBOUND_SECRET: en lång slumpsträng, minst 32 tecken (Tryck Generera så slumpas den fram här i webbläsaren.) Resultat: Mottagningsadressen slutar svara 503 och börjar svara på GET med sitt kontrakt. Nycklar hör hemma i miljön, inte i bokföringsdatabasen — och miljövariabler slår igenom först när appen byggs om.
  2. Peka din accesspunkt på mottagningsadressen Operatören POST:ar UBL-dokumentet till adressen nedan med nyckeln som Bearer-token. Accesspunkter som hellre skickar JSON kan i stället skicka { "document": "<Invoice …>" }, eller { "documentBase64": "…" } om dokumentet skickas base64-kodat. POST-adress: adressen som står i kortet (Ge den här adressen till din accesspunktsoperatör.) Authorization: Bearer <PEPPOL_INBOUND_SECRET> Content-Type: application/xml Resultat: Operatören har adressen och nyckeln registrerade på ditt konto.
  3. Prova adressen, och sedan ett riktigt dokument GET på samma adress svarar med kontraktet och säger om installationen är konfigurerad — utan att avslöja nyckeln. Därefter kan du skicka in en faktura själv och se den landa. Resultat: Svaret innehåller ok: true och ett draftId, och fakturan ligger som utkast under Leverantörer med status granska. Allt som kommer in via Peppol går till granskning första gången. En elektronisk faktura är fortfarande någon annans påstående om vad du är skyldig.
  4. Steget alla glömmer: Vi är inte din accesspunkt. Programmet tar emot dokumentet EFTER att din operatör hämtat det ur Peppol-nätet — du behöver alltså ett eget avtal med en accesspunkt, och det är den som ska peka hit.

Bra att veta

  • Allt som kommer in går till granskning första gången. En elektronisk faktura är fortfarande någon annans påstående om vad du är skyldig — formatet gör den maskinläsbar, inte sann.
  • Ingen AI-tolkning körs på den här vägen, och det är ett val: UBL-dokumentet SÄGER redan vad beloppen är. Att låta en modell gissa om strukturerad data vore att lägga till osäkerhet där ingen fanns.
  • Nedladdning av e-fakturafiler för UTGÅENDE fakturor fungerar alltid, utan nyckel och utan operatör. Vill du skicka direkt ur systemet kopplar du ditt eget accesspunktskonto under Inställningar → Få betalt av kunder → E-faktura.
  • Hela kontraktet — svarskoder, varningar och vad som avvisas rakt av — står i docs/PEPPOL-MOTTAGNING.md.

Vanliga fel och lösningar

curl -X ger ett fel på Windows
I Windows PowerShell 5.1 är curl ett alias för Invoke-WebRequest, och -X ger då ett fel. Skriv curl.exe i stället för curl, så körs riktiga curl (finns i Windows sedan 2018). Variabeln skrivs $env:PEPPOL_INBOUND_SECRET.
Mottagningen svarar 503
PEPPOL_INBOUND_SECRET är inte satt i miljön där appen kör, eller så har appen inte byggts om sedan variabeln lades in.
Återkommande fakturor

Har du kunder som faktureras samma sak varje månad gör du en befintlig faktura till en mall och låter den upprepas — månadsvis, kvartalsvis eller årsvis. Körningen skapar ett UTKAST i fakturalistan. Programmet bokför aldrig och skickar aldrig av sig självt: den som ska stå för fakturan ska ha sett den först. Serierna ligger under Fakturor → Återkommande, där du ser nästa körning innan den blir av.

  1. Öppna en faktura som ser ut som den du vill upprepa och välj Gör till återkommande. Raderna, kunden och betalvillkoren följer med som de står.
  2. Välj intervall — månad, kvartal eller år — och vilket datum serien ska starta. Dagen i månaden du väljer blir seriens ankare.
  3. Vill du att serien ska ta slut anger du ett slutdatum. Utan slutdatum fortsätter den tills du pausar eller avslutar den.
  4. Spara. Serien listas under Fakturor → Återkommande med nästa körningsdatum utskrivet.
  5. Körningen sker 06:15 varje morgon. Utkasten hamnar överst i fakturalistan, och du granskar och bokför dem som vilken faktura som helst.

Bra att veta

  • Dagen i månaden är ankaret, inte en glidande räkning. Väljer du den 31:e blir det den 28:e i februari och den 31:e igen i mars — serien vandrar aldrig nedåt i månaden bara för att en månad är kort.
  • Ändrar du underlaget ändras bara kommande utkast. Redan skapade utkast och bokförda fakturor rörs inte — de är egna handlingar från den dag de skapades.
  • Pausa i stället för att ta bort när kunden gör uppehåll. En pausad serie behåller sin historik och sitt ankardatum, och startar om på rätt dag.
  • Att körningen gått ser du på seriens rad (senaste körning) och i Systemloggen. Uteblivna utkast är alltid ett driftfel, aldrig ett tyst beslut av programmet.

Vanliga fel och lösningar

Inga utkast skapas
Körningen är en schemalagd anropsväg som kräver CRON_SECRET och SUPABASE_SERVICE_ROLE_KEY som miljövariabler. I molndrift schemaläggs den av vercel.json. Kör du själv med Docker måste raden för /api/cron/aterkommande finnas i din crontab — se docs/SJALVHOSTNING.md. Läget står i Systemloggen.
Fakturan blev inte skickad till kunden
Det är med flit. Serien skapar ett utkast, och du bokför och skickar. En automatiskt utskickad faktura som ingen läst är en felaktig faktura hos kunden innan någon hunnit upptäcka den.
Serien skapade två utkast samma dag
Det ska inte kunna hända — varje serie och förfallodag ger högst ett utkast, spärrat i databasen. Har det ändå skett: ta bort det ena utkastet (det saknar fakturanummer och är därmed ingen handling) och skicka en felrapport med datumet.
Rot, rut och grön teknik

Tre avdrag, tre e-tjänster, tre filer. De ser lika ut på fakturan och är olika i allt annat. Du märker fakturaraden med tjänsten och om beloppet är arbete, material eller övrig kostnad; avdraget räknas på arbetskostnaden INKLUSIVE moms (grön teknik: arbete och material), fakturan visar vad kunden ska betala, och fordran delas mellan kunden och Skatteverket. När kunden betalat skapar du begäran om utbetalning och laddar ner den som XML till Skatteverkets e-tjänst.

Årets satser och gränsvärden med giltighetsdatum
  1. Kunden: fyll i personnumret på kundkortet (Kunder → kunden). Det krävs för alla tre avdragen, kontrollsiffran prövas när du sparar, och numret maskas i loggar och felrapporter. Utan personnummer går ingen rad att märka.
  2. Fakturan: märk varje rad med tjänsten och beloppstypen. Fyll i arbetade timmar — de krävs även när du fakturerar fast pris. För rot och grön teknik krävs dessutom fastighetsbeteckning, eller lägenhetsnummer med bostadsrättsföreningens organisationsnummer.
  3. Bokför fakturan. Avdraget dras från kundens del och bokförs på 1513 Kundfordringar – delad faktura; det kunden själv ska betala ligger kvar på 1510.
  4. När kunden betalat: Fakturor → Begäran om utbetalning → välj avdrag och betalningsår → Skapa begäran → Hämta XML.
  5. Ladda upp filen i Skatteverkets e-tjänst (Rot och rut – företag, respektive Grön teknik). Importen visar samtliga fel på en gång — testa gärna första filen där innan du lämnar in skarpt.

Bra att veta

  • Satsen följer BETALNINGSÅRET, inte dagens datum. Rotavdraget var tillfälligt 50 procent 2025-05-12–2025-12-31 och är 30 procent från 2026-01-01; solcellerna sänktes från 20 till 15 procent den 1 juli 2025. En begäran som lämnas i februari 2026 för en betalning i december 2025 räknas med 2025 års sats.
  • Utbetalningskvoten följer samma sats. Tre sjundedelar är ingen egenskap hos rot, det är 30/(100−30). Under 2025 års höjning betalade kunden hälften och du fick begära hela den hälften.
  • Rot och rut kan inte ligga i samma fil — Skatteverkets schema tillåter det ena eller det andra. Grön teknik har ett eget format helt och hållet. Programmet delar upp filerna åt dig.
  • Taket är KUNDENS, inte ditt: 75 000 kr per person och beskattningsår varav högst 50 000 rot, och grön teknik 50 000 kr separat — över samtliga utförare. Programmet ser bara vad du själv begärt, och säger det i stället för att sätta en grön bock det inte har täckning för.
  • Delbetalning fungerar: har kunden betalat en del av fakturan begär du utbetalning för den delen, och en lika stor andel anses gälla arbetskostnaden. Nästa begäran räknas på skillnaden.
  • Arbetet måste vara UTFÖRT innan begäran lämnas. Det ser programmet inte — att kunden betalat står i reskontran, att arbetet är klart gör det inte.
  • Hela regelbilden med lagrum, tak, filformat och utbetalningskvoter står i docs/ROT-RUT-GRON-TEKNIK.md i ditt repo.

Vanliga fel och lösningar

Fakturaraden går inte att märka med rot eller rut
Kundkortet saknar personnummer. Öppna Kunder → kunden och fyll i det. Avdraget hör till en fysisk person, och utan numret finns ingen köpare att begära utbetalning för.
"Satsen för betalningsåret saknas" — filen skapas inte
Avdragssatsen slås upp på betalningsdatumet i programmets regelvärden, och för det året finns ingen rad. Filen spärras med flit: en fil till Skatteverket bär ingen gissad sats. Uppdatera till en version med årets regelvärden, eller hör av dig så läggs satsen in.
Skatteverket avvisade filen
Elva regler i Skatteverkets importbeskrivning prövas innan filen skrivs — begärt högst betalt, ett betalningsår per fil, högst hundra köpare, köparen som fyller 18 under betalningsåret, timmar även vid fast pris, och kontrollsiffran i personnumret. Fångas felet här kostar det en rättelse. Avvisas filen ändå: läs e-tjänstens felrad och skicka en felrapport, för då är det vår regel som är för vek.
Kan jag ta bort en begäran jag inte lämnat in?
Ja. Ta bort omgången under Begäran om utbetalning, så räknas ärendena om och beloppen blir tillgängliga för en ny begäran. Har du redan lämnat in filen till Skatteverket ska den däremot rättas där, inte här.
Timmar krävs fast jag fakturerar fast pris
Skatteverket kräver faktiska timmar per arbetsområde oavsett hur du prissatt jobbet. Fyll i den tid arbetet faktiskt tog — det är den uppgiften e-tjänsten prövar mot.
Kunder och artiklar

Kundregistret håller adress, betalvillkor, momstyp (svensk, EU omvänd skattskyldighet eller export) och Peppol-adress. Artiklar har pris exkl. moms, momssats, enhet och försäljningskonto — och förifyller fakturarader. EU-kunder med omvänd skattskyldighet kräver VAT-nummer, vilket valideras vid sparande.

Kunder och artiklar

Bra att veta

  • Snabbaste sättet att lägga upp en kund: skriv orgnumret och klicka Hämta uppgifter — namn, adress, VAT-nummer och eventuell Peppol-adress fylls i automatiskt från EU:s momsregister (kräver ingen nyckel).
  • Företag utan momsregistrering finns inte i registret — fyll i dem manuellt.
Kreditupplysning på kundkortet

Innan du säljer på kredit kan du hämta en företagsupplysning direkt på kundkortet: kreditklass, rekommenderad limit, betalningsanmärkningar, skuldsaldo hos Kronofogden och bolagsstatus. DU VÄLJER BYRÅ, DU TECKNAR AVTALET, OCH NYCKELN ÄR DIN. Programmet äger bara formatet svaret lagras i, och kopplingen levereras avstängd — då finns ingen knapp på kundkortet alls, och ingenting annat i programmet påverkas. BARA FÖRETAG. Personupplysningar finns inte i programmet, och det är en juridisk gräns och inte en ambitionsnivå: de betungande bestämmelserna i kreditupplysningslagen (1973:1173) är skrivna om fysiska personer. Tyngst väger 11 §, som säger att en kopia samtidigt och kostnadsfritt ska skickas till den omfrågade när en upplysning om en fysisk person lämnas ut — den gäller även näringsidkare, och enligt tredje stycket också handelsbolag och kommanditbolag. Är personen inte näringsidkare krävs dessutom legitimt behov (9 §). För ett aktiebolag faller båda bort. Organisationsnumret prövas därför mot juridiskt format innan något anrop görs.

Kontraktet och receptet för en egen byrå
  1. Gå till Inställningar → Få betalt av kunder → Kreditupplysningar och välj leverantör. Väljer du Egen leverantör krävs inga uppgifter alls — då för du in svaret för hand.
  2. Väljer du Syna: fyll i adressen till deras XML-gränssnitt, ditt kundnummer och ditt API-användarnamn. Adressen är inte publik utan står i ditt eget avtal; svarar den inte i välkomstmejlet hjälper api-support@syna.se.
  3. API-nyckeln är frivillig. Syna autentiserar i första hand på avsändande ip-adress, och då lämnas fältet tomt. Har du en nyckel skapas den av en administratör i inloggat läge på syna.se, och den visas aldrig igen efter att den sparats.
  4. Spara. Kortet säger Klar att användas när allt obligatoriskt är ifyllt, och Vilande med de saknade uppgifterna utskrivna annars.
  5. Öppna Kunder. Kolumnen Kredit finns nu, och du klickar på Kontrollera för att hämta en upplysning.

Bra att veta

  • Klassen är VÅR skala 1–5 där 5 är bäst, och byråns egen beteckning står ordagrant bredvid. Skälet är att byråerna har olika skalor — Creditsafe A–E, Syna en siffra — och att exponera den ena hade gjort kundkortet omöjligt att läsa den dag du byter byrå.
  • Inga anmärkningar och uppgift saknas är två olika besked, och de ser olika ut på kortet. Skriver du in en upplysning för hand: skriv 0 när byrån svarat att det inte finns några, och lämna fältet tomt när du inte vet.
  • Två datum bärs separat: upplysningsdatum är när DU frågade, och byråns underlag är hur färskt BYRÅNS material var. En klassning kan vara flera år gammal när du hämtar den.
  • En upplysning äldre än tolv månader märks som gammal. Byråns skyldighet att underrätta om en rättelse sträcker sig tolv månader bakåt — efter det kan ingen längre få veta att uppgiften ändrats.
  • Svaret gallras 18 månader efter upplysningsdatum. Det är lagringsminimering enligt dataskyddsförordningen art. 5.1 e, inte ett lagkrav.
  • Har du avtal med en byrå vi inte driftar: kontraktet är öppet och receptet står på debea.se/api-docs/recept/kreditupplysning. Kopplingen bygger du en gång och äger själv.

Vanliga fel och lösningar

Knappen finns inte på kundkortet
Ingen leverantör är vald, eller så saknas en obligatorisk uppgift. Avstängt betyder osynligt här — vi visar med flit ingen gråad knapp för något du inte valt. Läget står under Inställningar → Koppla ihop med andra tjänster → Nycklar & kopplingar.
Kunden spärras med texten att numret är ett personnummer
En enskild firma har innehavarens personnummer som organisationsnummer, och en upplysning om den är därmed en upplysning om en fysisk person. Sådana lämnar programmet utanför: kreditupplysningslagen kräver då både prövning av legitimt behov och att en kopia skickas till den omfrågade, och de skyldigheterna byggs inte halvvägs. Hämta upplysningen hos din byrå och för in den för hand i stället.
Ett handelsbolag går inte att kontrollera
Synas produkt Kreditupplysning AB svarar bara på aktiebolag. Övriga juridiska personer besvaras av en annan produkt hos Syna, och den utlöser en kopia till den omfrågade — en skyldighet programmet inte hanterar. Välj Egen leverantör och för in svaret för hand.
Byrån svarar att organisationsnumret inte finns
Kontrollsiffran prövas innan frågan skickas, så numret är formellt riktigt — men bolaget finns inte i byråns register. Kontrollera numret mot kundens registreringsbevis.
Får jag visa upplysningen för någon annan?
Nej. Att hämta en upplysning för det egna bolagets kreditbeslut är att vara användare; att lämna den vidare är att lämna en kreditupplysning (kreditupplysningslagen 2 §) som ett led i näringsverksamhet, alltså kreditupplysningsverksamhet enligt 1 §, och den kräver tillstånd av Integritetsskyddsmyndigheten enligt 3 §. Därför ser varken en byrånyckel eller API-nyckeln de lagrade upplysningarna — det är en spärr i databasen, inte en rekommendation.
Från påminnelse till inkasso

När påminnelserna är slut och fakturan fortfarande är obetald samlar programmet hela underlaget till en färdig handling: fakturan med sina rader, betalningarna med datum, påminnelserna med datum och avgift, och dröjsmålsräntan beräkningsperiod för beräkningsperiod. Du hämtar den i tre format och lämnar över till din egen inkassopartner. PROGRAMMET DRIVER ALDRIG IN NÅGON FORDRAN, och det är en juridisk gräns och inte en ambitionsnivå. Inkassolagen (1974:182) 2 §: inkassoverksamhet som avser indrivning av fordringar FÖR ANNANS RÄKNING, eller av fordringar som ÖVERTAGITS för indrivning, får bedrivas bara efter tillstånd. Att kräva in sina EGNA fordringar — egeninkasso — är tillståndsfritt. Det programmet gör är ett steg innan ens det: det paketerar ditt eget underlag åt dig, och du lämnar det till din partner under ditt eget avtal. Vi skickar ingenting, tar emot ingen betalning och är inte part i något led. TILLSYNEN LIGGER HOS FINANSINSPEKTIONEN. Ansvaret för tillstånd och tillsyn enligt inkassolagen flyttades från Integritetsskyddsmyndigheten till Finansinspektionen den 1 januari 2024, och Datainspektionens allmänna råd om tillämpningen är ersatta av FFFS 2025:2. Det är alltså FI och inte IMY du läser hos om du vill veta vad som gäller för ett inkassobolag — till skillnad från kreditupplysningarna, där IMY fortfarande är rätt myndighet.

Ärendepaketets schema och hur du bygger en egen koppling
  1. Gå till Inställningar → Få betalt av kunder → Inkasso och välj din partner. Har du inget avtal ännu väljer du Egen partner — allt fungerar likadant, det är bara namnet på handlingen som ändras.
  2. Öppna en förfallen faktura där minst en påminnelse är skickad. Knappen Lämna till inkasso står under betalningarna.
  3. Hämta underlaget i det format din partner vill ha: PDF som handling att bifoga, JSON för en filväg eller maskinell inläsning, CSV att öppna i Excel när siffror ska skrivas av i ett portalformulär. Alla tre bär samma siffror — de byggs ur samma underlag.
  4. Lämna över hos din partner: i deras portal, på deras filväg eller genom din kontakt. Dialogen visar stegen för just den partner du valt.
  5. Kom tillbaka och kryssa i att du lämnat över, med partnerns ärendenummer om du fått ett. Först då journalförs överlämningen — knappen skickar ingenting.
  6. Uppdatera ärendets status för hand när partnern hör av sig: krav skickat, avbetalningsplan, bestridd, hos Kronofogden, betald, avskriven eller återkallad. Varje byte får ett datum och en anteckning.

Bra att veta

  • MINST EN PÅMINNELSE MÅSTE VARA SKICKAD. Det är den enda spärren som inte följer av bokföringen utan av god inkassosed [inkassolagen (1974:182) 4 §]: gäldenären ska ha fått veta att skulden är förfallen innan ärendet lämnas över. Att gå direkt från faktura till inkassobolag är tillåtet men illa, och programmet gör det inte enkelt.
  • En överlämnad faktura kan inte påminnas vidare. Två krav på samma skuld från två avsändare samtidigt är otillbörlig påtryckning mot gäldenären, och påminnelseavgiften skulle dessutom inte vara skäligen påkallad [lag (1981:739) 4 § första stycket]. Spärren sitter i databasen, så den håller även för de automatiska påminnelserna.
  • En överlämnad faktura kan inte heller krediteras medan ärendet är öppet: krediteras den finns fordran inte längre, medan partnern fortsätter kräva gäldenären på den. Vägen ut är ett klick — återkalla ärendet hos partnern, markera det som återkallat här, kreditera sedan.
  • Räntan i paketet är samma uträkning som påminnelsens, och den redovisas segment för segment: referensräntan plus åtta procentenheter [räntelagen (1975:635) 6 §], med en ny sats vid varje kalenderhalvår [9 §], och en delbetalning som sänker underlaget från sin dag. En gäldenär som bestrider ska kunna räkna efter varje delperiod.
  • Saknas ett halvårs referensränta i regeltabellen skrivs INGEN ränta ut som om den vore fullständig. Paketet flaggar att den är ofullständig och säger vilka perioder som fattas. Lägg in satsen under Regler och skapa underlaget på nytt.
  • Paketet lägger aldrig till den lagstadgade avgiften på 180 kr för ett inkassokrav [lag (1981:739) om ersättning för inkassokostnader m.m. 4 § andra stycket 2]. Den hör till det inkassokrav partnern skickar i sitt eget namn, och att räkna med den vore att kräva ersättning för en åtgärd som ännu inte vidtagits. Påminnelseavgifterna i paketet är de du faktiskt tagit ut. Notera att avgiften inte står i inkassolagen utan i lag (1981:739) — sedan förordningen (1981:1057) upphävdes 2013 står beloppen i den lagens 4 § andra stycket: 60 kr för påminnelse, 180 kr för krav, 170 kr för amorteringsplan.
  • Interna anteckningar följer aldrig med ut. Paketet bär det partnern behöver för att kräva — inte hela kundkortet. Det är dataminimering enligt dataskyddsförordningen art. 5.1 c, och samma beslut som gör att en kreditupplysning aldrig sparas i råformat.
  • Steget efter det här — ett eget inkassokrav enligt inkassolagen med den lagstadgade avgiften, och därefter underlag för betalningsföreläggande hos Kronofogden — står på bygglistan och är ett eget spår. Ramen är byggd så att det kan läggas till utan att något av det du satt upp nu behöver göras om.

Vanliga fel och lösningar

Knappen Lämna till inkasso finns inte på fakturan
Ingen partner är vald under Inställningar → Få betalt av kunder → Inkasso. Avstängt betyder osynligt här — vi visar med flit ingen gråad knapp för något du inte valt. Är partnern vald men knappen ändå borta står skälet som text under betalningarna: fakturan är inte förfallen, den är betald, den är krediterad, eller ingen påminnelse är skickad.
Vilken partner ska jag välja?
Den du har avtal med. Programmet gör inga anrop mot någon partner, så valet styr bara två saker: vems namn som står på handlingen och vilka steg dialogen beskriver. Sju svenska partner finns i listan med en ärlig mening om hur överlämningen faktiskt går till hos var och en — portal, portal med BankID, filväg eller säljkontakt — plus Egen partner för alla andra. Ingen av dem är en driftad koppling, och det står utskrivet i kortet.
Varför finns det ingen automatisk koppling till mitt inkassobolag?
Därför att ingen svensk inkassopartner publicerar en intagsspecifikation som går att pröva. De fem stora publicerar ingen alls — intaget är en avtalsprodukt, och specifikationen följer med avtalet. Visma Amili har en filväg över SFTP men dokumentationen ligger bakom kontakt. Inkassogram är närmast: publik XML-dokumentation med schema och en autentisering som klarar husets regel om en enda hemlighet — men det publicerade materialet beskriver fakturaskapande och kreditering, inte överlämning av en förfallen fordran. Vi bygger inte en adapter mot ett intag vi aldrig sett dokumenterat. Får vi specifikationen blir raden en driftad koppling utan att något av det du satt upp behöver ändras.
Varför uppdateras inte statusen automatiskt?
Två skäl som båda är verkliga. Din installation kör hos dig och har ingen publik, stabil adress som en partner kan skicka till, så webhooks fungerar inte. Och ingen svensk partner publicerar ett status-API att fråga. Kvar blir din egen hand: du läser partnerns besked och klickar. Vi säger det rakt ut i stället för att skriva 'synkroniseras automatiskt' om något som inte gör det.
Vem är personuppgiftsansvarig för det jag lämnar över?
Du. Det är din fordran, ditt beslut att lämna över och din rättsliga grund — berättigat intresse att driva in en förfallen fordran, dataskyddsförordningen art. 6.1 f. Vi är inte personuppgiftsbiträde för överlämningen: programmet kör hos dig, filen skapas hos dig och lämnar aldrig din installation genom oss. Vad PARTNERN är — självständigt personuppgiftsansvarig eller ditt personuppgiftsbiträde — avgörs av hur just ert avtal är skrivet, och den frågan ska besvaras i avtalet och inte av oss. Läs vad ert avtal säger innan du lämnar över första gången.
Fordran är bestridd — kan jag ändå lämna över?
Programmet spärrar inte, men varnar. Flera partner tar uttryckligen inte emot tvistiga fordringar: en bestridd fordran prövas i domstol, inte av ett inkassobolag. Bedömningen av om en invändning gör fordran tvistig är din, inte programmets — därför en kryssruta och en varning i stället för en spärr. Kryssar du i den märks ärendet som tvistigt både i journalen och i handlingen.
Gäldenären betalade efter att jag lämnat över
Registrera betalningen på fakturan som vanligt, och sätt ärendets status till Betald. Meddela partnern — de driver annars kravet vidare, och det är precis den situationen som gör en gäldenär illa. Har partnern redan tagit ut sin avgift är den en fråga mellan dig och dem, och den hanteras i ert avtal.
Koppla din webshop

Butiken lämnar sina ordrar till bokföringen och de blir fakturautkast med kund, artiklar, konto och moms på plats — genom samma väg och samma momskontroll som fakturaformuläret. Det finns ett generiskt orderformat och en API-nyckel du skapar själv. För WooCommerce finns dessutom en färdig liten översättare som du kör på DIN egen Vercel; för Shopify finns ett recept med hela skelettet. Vi driftar inget led i kedjan, och det finns ingen avgift per order eller per koppling.

Hela orderkontraktet, fält för fält
  1. Skapa en API-nyckel under Inställningar → Koppla ihop med andra tjänster → API-nycklar med behörigheten Ta emot underlag. Den kan lämna in ordrar och ingenting annat — den ser inte ens vad som redan finns i bokföringen. Kopiera nyckeln direkt, den visas bara en gång.
  2. WooCommerce: kopiera katalogen integrations/woocommerce-bridge/ ur ditt repo, kör npx vercel och sätt DEBEA_URL, DEBEA_API_KEY och WOO_WEBHOOK_SECRET. README:n i katalogen har alla sju steg.
  3. Skapa webhooken i WooCommerce → Inställningar → Avancerat → Webhooks: ämne Order created, leverans-URL till din brygga, och samma hemlighet som WOO_WEBHOOK_SECRET.
  4. Shopify eller något annat: följ receptet på debea.se/api-docs/recept/shopify, eller skicka ordern rakt till adressen från Zapier, Make eller din egen serverfunktion.
  5. Lägg en testorder och titta under Kassa & e-handel i menyn (gruppen Pengar in).

Bra att veta

  • Momsregistreringsnumret är den vanligaste snubbeltråden. Varken WooCommerce eller Shopify har ett standardfält för det — det ligger i orderns meta_data under den nyckel ditt EU-VAT-plugin valt. Utan numret räknas en köpare i ett annat EU-land som konsument, och ordern spärras som unionsintern distansförsäljning som ska redovisas i OSS.
  • Frakten blir en egen rad. Missas den blir radernas summa kort med fraktbeloppet och ordern spärras — frakt är inte en avrundning.
  • Samma order kan aldrig bli två fakturor. Butikens ordernummer är nyckeln, och en omleverans ger samma fakturautkast tillbaka.
  • En order som inte går att kontera rätt försvinner aldrig. Den sparas med sitt skäl i listan över mottagna ordrar, går att rätta och köra igen.

Vanliga fel och lösningar

Varför finns det ingen färdig koppling inne i programmet?
En adapter mot någon annans API går inte att bygga rätt utan ett riktigt konto att pröva mot, och en gissning om moms blir ditt myndighetsfel. Varje adapter är dessutom löpande underhåll mot ett gränssnitt någon annan ändrar när de vill — tjänstedrift förklädd till funktion, och det är den kostnaden som annars hamnar på ditt pris.
Varför får WooCommerce en mall men inte Shopify?
WooCommerce går att starta i en Docker-container. Vår CI bygger två riktiga Woo-butiker — en som matar in priserna exklusive moms och en som matar in dem inklusive — lägger samma order i båda och kräver identiska nettobelopp. Det provet går inte att köra mot Shopify, och utan provet vore mallen en gissning.
WooCommerce stängde av min webhook
Woo stänger av en webhook efter fem misslyckade leveranser i rad. Bryggan svarar med flit fel bara i ett läge: när bokföringen inte gick att nå, för då ÄR ordern förlorad och det ska märkas. En spärrad order svarar däremot 200, eftersom den är sparad i bokföringen med sitt skäl. Sätt på webhooken igen och spara om ordrarna — intaget är idempotent, så omförsök kostar ingenting.
Marknadsavdelningen: vad kampanjerna kostade och vad de gav

Alla andra räknar konverteringar. Programmet räknar fakturerade, bokförda, kreditnota-justerade kronor — per kampanj, ur huvudboken. Pixeln vet att någon klickade; bokföringen vet att någon betalade, hur mycket, när, och om pengarna kom tillbaka. Det här är UPPFÖLJNINGEN, inte publiceringen: kalendern, inläggen och bildbanken ligger i menygruppen Marknad och är en annan yta med ett annat jobb. Uppföljningens siffror hämtas ingenstans ifrån. De räknas ur din egen huvudbok, och sidan gör ingen koppling mot Meta eller någon annan annonsplattform — inget hämtat spenderat, ingen hämtad konvertering. Det är ett medvetet val: ett tal som är härlett ur bokföringen går att revidera, ett tal som är hämtat från en annonsplattform gör det inte. Vill du publicera genom era egna Meta-konton finns det under Marknad, och det kopplas separat under Inställningar → Publicera i sociala kanaler.

  1. Lägg upp kampanjen under Register → Kampanjer: namn, kanal och period. Har annonsen en länk lägger du in kampanjsträngen ur ?utm_campaign= i länken — då hittar en inkommande order rätt kampanj av sig själv.
  2. Bokför annonsfakturan som vanligt, genom Underlagsinkorgen. I godkännandeflödet väljer du kampanjen i projektrutan — en kampanj ÄR ett projekt, så den står redan i listan.
  3. Säg var kunden kom ifrån: fältet "Hur hittade kunden oss" på kundkortet. Kunder som kommer in via en annonslänk märks automatiskt, alla andra märker du själv — och det är den vägen de flesta använder.
  4. Läs resultatet under Varje månad → Marknad: annonskostnad, bokförd intäkt, täckningsbidrag, kvar efter annonsen, kostnad per affär och kostnad per intäktskrona. Allt i kronor.

Bra att veta

  • En kampanj är ett projekt, alltså SIE-dimension 6. Ingen ny dimension och ingen ny numrering: kampanjen syns i Resultat per dimension, följer med i SIE-filen till revisorn och kan väljas per fakturarad precis som varje annat projekt.
  • Talen står i kronor och aldrig som index. "4,2 gånger pengarna" är samma siffra på 500 kr och på 500 000 kr, och en kampanj utan bokförd kostnad får ett oändligt index som ser ut som ett resultat.
  • Krediterar du en faktura följer kreditnotan med till kampanjen: intäkten går ned och affären räknas bort. Det är hela poängen med att räkna på bokfört i stället för på klick.
  • Annonsfakturor från Meta, Google och LinkedIn kommer från Irland, utan moms och med omvänd betalningsskyldighet. Programmet bokför nettot på 4535 och räknar momsen själv — INTE på 5910, eftersom momsdeklarationens ruta 21 följer kontots momskod. En svensk annonsleverantör, till exempel ett tryckeri, hamnar på 5910 med fakturans egen moms.
  • Känner programmet inte igen den utländska leverantören ställer det en fråga i stället för att kontera. Kontot avgör vilken ruta förvärvet hamnar i, och rutan går inte att härleda ur ordet "annonsering" — att gissa land vore att gissa moms.
  • Marknad och Kampanjer syns inte i menyn förrän du lagt upp din första kampanj. Av betyder osynligt. Ingången finns under Register → Kostnadsställen & projekt och under Inställningar.

Vanliga fel och lösningar

Kan jag koppla mitt Meta-konto och hämta hem vad annonserna kostade?
Inte i den här versionen. Det finns ingen koppling, ingen inställning och ingen nyckel att fylla i — och det är ett medvetet val, inte en halvfärdig funktion: en avstängd kryssruta är en frestelse, en förklarad avsaknad är ett besked. Underlaget för kostnaden är annonsfakturan du redan bokför, och den är sann även när ett API säger något annat.
Varför har intäkten hamnat under "utan dimension" trots att kunden är märkt?
Kampanjens projekt är avslutat. Databasen spärrar nya bokningar på ett avslutat projekt, med rätta — och en kund som kom in via en kampanj fortsätter köpa långt efter att kampanjen tagit slut. Vore dimensionen påtvingad ändå skulle kundens nästa faktura bli obokförbar. Öppna kampanjen igen om den fortfarande pågår.
Ordern kom in men fick ingen kampanj
Kampanjsträngen i länken stämmer inte med någon kampanj. Programmet gissar aldrig på en närliggande kampanj: en ohänförd intäkt går att rätta i efterhand, en felhänförd upptäcks aldrig. Strängen ligger kvar på den mottagna ordern, så du ser vad som faktiskt kom in — och ett skrivfel i en annonslänk stoppar aldrig faktureringen.
Jag får inte spara kampanjsträngen
Den används redan av en annan kampanj. Två kampanjer med samma sträng gör varje inkommande order omöjlig att hänföra, så databasen vägrar medan det fortfarande bara är ett kampanjnamn att ändra. Stora och små bokstäver räknas som samma sträng.
Vad ser en granskare?
Granskaren läser Marknad — siffrorna är härledda ur huvudboken, och en revisor som granskar kostnadsställen ska kunna se vad objektet heter och vad det bär. Granskaren lägger däremot inte upp eller ändrar kampanjer, och når inte Inställningar.
Hitta företag: leadsök i Google Maps med din egen nyckel

Leadsöket söker fram företag ur Google Maps — företagsnamn, adress, telefonnummer och hemsida — inom ett område du väljer. Det som gör funktionen ovanlig är vem som betalar: du kopplar ditt EGET Google-konto med din egen nyckel, Google fakturerar dig direkt, och vi tar inget påslag. Programmet äger gränssnittet och räknar anropen åt dig; kontot, avtalet och notan är dina. Funktionen har ingen egen menyrad och syns inte alls förrän kopplingen är uppsatt — du når den från kopplingskortet under Inställningar → Koppla ihop med andra tjänster.

Hela uppsättningen och villkoren (docs/LEADSOK.md)
  1. Skriv vad du söker och välj var. Området är en lista, inte ett fritextfält: valet skickas till Google som en verklig geografisk gräns, så en sökning i Umeå ger företag i Umeå.
  2. Ett klick är exakt ett betalt anrop, och du får upp till tjugo träffar. Det finns ingen knapp som söker i hela landet på en gång — när notan är din ska ett klick aldrig kunna kosta femtio kronor.
  3. Läs listan: företag, adress, telefon, hemsida och om stället är stängt. Ring, mejla eller lägg upp den du vill jobba vidare med som kund eller kontakt på vanligt sätt.
  4. Skapa ett Google Cloud-projekt Öppna Google Cloud-konsolen, klicka projektväljaren i överkanten och skapa ett nytt projekt — ett eget projekt för det här gör faktureringen läsbar och gör nyckeln lätt att slänga. Namnet är ditt eget val; det är projektets id du senare kan skriva in i programmet. Knappar: Välj projekt → Nytt projekt → Skapa. Projektnamn: bokforing-leadsok Resultat: Projektväljaren visar det nya projektets namn, och projekt-id:t står under det.
  5. Aktivera Places API (New) Gå till API-biblioteket och sök upp Places API (New). Bocka för att du står i rätt projekt innan du aktiverar — projektväljaren i överkanten ska visa projektet från förra steget. Knappar: APIs & Services → Bibliotek → Places API (New) → Aktivera. Resultat: API:et står som aktiverat, med en översiktssida för trafik och kvoter.
  6. Koppla ett betalkort Places har ingen nyckellös nivå: utan fakturering svarar API:et inte alls. Kortet är ditt och notan går direkt till dig — vi ser aldrig fakturan och tar inget påslag. Vill du inte lägga ett kort hos Google är det här du vänder om, och då har du förlorat fem minuter i stället för femtio. Knappar: Fakturering → Länka ett faktureringskonto. Resultat: Projektet står som kopplat till ett faktureringskonto.
  7. Sätt ett budgetlarm Skapa en budget på det belopp du är beredd att lägga, med larm vid 50, 90 och 100 procent. Gör det innan nyckeln finns, inte efter — samma ordning som AI-nyckeln lär ut. Knappar: Fakturering → Budgetar och larm → Skapa budget. Resultat: Budgeten står i listan med tre larmnivåer. Ett budgetlarm hos Google STOPPAR INGENTING. Det skickar ett mejl. Det som faktiskt stänger av anropen är kvoten i nästa steg, och en guide som låter dig tro att budgeten är en vägg har sålt dig en falsk trygghet.
  8. Sätt dygnskvoten — det enda hårda taket Öppna Places API (New) och dess kvotsida, och sätt förfrågningar per dygn till ett tal du kan stå för. Över taket svarar Google med ett fel och slutar ta betalt. Utan taket finns ingen övre gräns alls. Knappar: APIs & Services → Places API (New) → Kvoter → Redigera kvot. Förfrågningar per dygn: 200 (Ett tal du kan stå för även en dålig dag.) Resultat: Kvotraden visar ditt eget tal i stället för Googles förvalda.
  9. Skapa nyckeln och lås den till ett enda API Skapa API-nyckeln under Autentiseringsuppgifter, öppna den direkt och välj API-begränsningar → Begränsa nyckel → kryssa ENBART Places API (New). Nyckeln används från servern, aldrig från en webbläsare: har installationen en fast utgående IP-adress väljer du IP-begränsning och lägger in den, annars lämnar du programbegränsningen på Ingen och lutar dig på API-begränsningen plus dygnskvoten. Välj ALDRIG HTTP-referrers — den inställningen är till för nycklar som ligger i en webbsida och skyddar ingenting mot ett serveranrop. Knappar: Autentiseringsuppgifter → Skapa autentiseringsuppgifter → API-nyckel → Begränsa nyckel. API-begränsningar: enbart Places API (New) Resultat: Nyckeln står i listan med en begränsning i stället för texten Obegränsad. En obegränsad Google-nyckel öppnar VARJE API som är aktiverat i projektet, inte bara det den skapades för. Läcker den — ur en säkerhetskopia, en skärmdump, en felrapport — kan den brännas på allt projektet når, och notan går till ditt kort. Begränsningen tar tio sekunder och gör skadan av en läckt nyckel till att någon annan söker företag på din faktura i stället för att någon annan använder hela ditt Google-konto.
  10. Klistra in nyckeln och testa Gå till Inställningar → Koppla ihop med andra tjänster → Google Maps — hitta företag. Välj leverantören, klistra in nyckeln, skriv gärna in projekt-id:t och sätt ett månadstak i antal sökningar. Spara, och kör sedan Testa kopplingen. Faller testet står Googles eget felsvar bredvid vårt. Knappar: Spara → Testa kopplingen (ett betalt anrop). API-nyckel: AIza… (Lagras admin-låst och visas aldrig igen.) Månadstak: antal sökningar, inte kronor Resultat: Kortet står på Klar att användas och länken Hitta företag dyker upp i kortet. Testknappen gör en riktig sökning och kostar därför ett anrop: Places har ingen gratis testväg, och ett test som låtsas vara gratis vore en liten lögn på precis den yta där du lär dig vad funktionen kostar.
  11. Steget alla glömmer: ALLT NEDAN MÅSTE GÖRAS I SAMMA GOOGLE-PROJEKT, och API:et som aktiveras heter Places API (New). Det finns ett äldre Places API med nästan samma namn — programmet talar bara den nya, och en nyckel ur fel projekt eller mot fel API ser felfri ut ända tills första sökningen svarar nej.

Bra att veta

  • Sökträffarna sparas inte i programmet. Uppgifter ur Google Maps får enligt Googles villkor inte lagras fritt, och listan lever därför bara så länge du är kvar på sidan.
  • Månadstaket i programmet räknas i ANTAL SÖKNINGAR, inte i kronor. Ett kronbelopp hade krävt att vi känner Googles aktuella prislista och en växelkurs vi bara gissar — ett antal är ett tal du själv kan räkna efter.
  • Taket i programmet ersätter inte dygnskvoten hos Google. Vår spärr räknar sökningar du gör härifrån; kvoten är det som faktiskt stänger av anropen, till exempel om nyckeln kommer på avvägar.
  • Varje sökning loggas med tidpunkt, sökord, område, antal träffar och ett uppskattat pris som fryses vid anropet. Träffarna loggas aldrig — de finns inte ens som kolumn i tabellen.
  • Betyg och omdömen hämtas inte, och det är ett val. De bär egna krav på hur de får visas, och en stjärnsiffra säger ingenting om huruvida ett företag betalar sina fakturor. Det gör din egen huvudbok.

Vanliga fel och lösningar

Var är knappen? Jag hittar ingen sökning i menyn
Funktionen har med flit ingen menyrad, och utan uppsatt koppling finns den inte alls — ingen gråad knapp, ingen ruta som ber dig uppgradera. Är kopplingen på når du sökningen från kortet Google Maps under Inställningar → Koppla ihop med andra tjänster.
Kan programmet leta upp mejladresser åt mig?
Nej, och det byggs inte. Att samla in adresser genom att läsa andras webbplatser är dels deras villkor och inte Googles, dels utlöser en insamlad namnadress en informationsplikt mot personen inom en månad — en plikt vi inte kan uppfylla åt dig. Du får företagets hemsida och en länk att klicka på i stället.
Kan jag söka i flera städer på en gång?
Nej. Varje område är ett eget betalt anrop, och en knapp som gör hundra anrop av ett klick är ett produktfel när räkningen är din. Sök en gång till i nästa område i stället — då ser du kostnaden växa i takt med att du väljer den.
Sökningen säger att månadstaket är nått
Du har gjort så många sökningar som taket tillåter den här månaden. Taket är ditt eget och ändras på kopplingskortet; det nollställs den första i nästa månad. Är taket satt men antalet inte går att läsa nekar programmet hellre än gissar — en sökning kostar pengar, och en spärr som släpper igenom vid tveksamhet är ingen spärr.
Sökningen svarar att fel API är aktiverat
Det aktiverade API:et är det äldre Places API. Programmet anropar bara Places API (New) — aktivera den i samma projekt som nyckeln, så börjar sökningen svara utan att nyckeln behöver bytas.
Testet säger att nyckeln inte släpps igenom
Tre saker faller i den här ordningen: att API:et är aktiverat i samma projekt som nyckeln, att faktureringen är kopplad, och att nyckelns API-begränsning verkligen släpper igenom rätt API. Är nyckeln låst till IP-adresser måste serverns utgående adress stå med — annars ser det ut som en trasig nyckel.
Var ser jag vad sökningarna har kostat?
Programmet räknar varje anrop och fryser priset på raden, och summan för månaden står både vid sökknappen och på sidan AI-förbrukning. Den exakta siffran står hos Google: vi ser aldrig din faktura, och beloppet hos oss är en uppskattning med den prislista som gällde vid anropet.

Utgifter & bank10 artiklar

Bankimport och bokföringsregler

Bank-sidan samlar importerade banktransaktioner. CSV-export från internetbanken (Swedbank privat och företag, Nordea, SEB, Handelsbanken och generiska format) förhandsgranskas alltid innan något sparas: du ser vilken bank som kändes igen, hur kolumnerna mappats, de första raderna och en saldokedje-kontroll. Omatchade transaktioner hanteras via bokföringsregler (matchar text/motpart → konto + momssats, med valbar autobokning) eller skickas till AI:n via Att godkänna.

Bankimport och bokföringsregler
  1. Välj kontoutdrag (CSV) → Förhandsgranska. Kontrollera att datum, text, belopp och saldo står i rätt kolumner och att utgifter är negativa.
  2. Saldokedjan: varje rads saldo ± belopp ska ge grannradens saldo. Stämmer inte kedjan är belopps- eller saldokolumnen felmappad — importen stoppas tills du justerat kolumnerna under Kolumnmappning.
  3. Importera. Omimport av samma fil ger noll nya rader; två äkta identiska transaktioner samma dag (t.ex. två kortköp på samma belopp) behålls båda.

Bra att veta

  • Öppna inte CSV-filen i Excel före import — teckenkodning och belopp kan ändras.
  • Importera från det datum bokföringen i gamla programmet slutar, så blir banksaldot (1930) rätt.
Bokför med AI från en bankrad

På Bank, under Att bokföra, står tre knappar på varje rad som programmet inte kunnat matcha automatiskt: Bokför med AI, Bokför manuellt och Ignorera. Bokför med AI tar raden med hela sin kontext — belopp, datum, riktning, kanal (PayPal, Stripe eller banken), leverantörens transaktions-id och händelsekod, motpart, avgift och eventuella valutaväxlingsuppgifter — och lämnar över den till AI-bokföraren, samma yta som läser era kvitton. Där får ni ett färdigt konteringsförslag att granska. KNAPPEN BOKFÖR INGENTING. Den öppnar AI-bokföraren, som föreslår. Varje konto och varje belopp går att ändra innan ni trycker Bokför, och först då skrivs verifikatet. När ni bokför prickas bankposten av samtidigt: verifikatet och avprickningen sker i ETT steg, så samma pengar kan aldrig bli två verifikat — trycker ni två gånger vinner det första klicket och det andra får ett besked.

  1. Öppna Bank och leta upp raden under Att bokföra. Klicka Bokför med AI.
  2. Analysen startar av sig själv. Skriv gärna en rad om vad köpet var innan ni analyserar igen — texten på ett kontoutdrag räcker sällan för att avgöra vilket kostnadskonto som är rätt.
  3. Granska förslaget: konto per rad, belopp, moms. Läs AI:ns eventuella fråga och varningar.
  4. Klicka Bokför & pricka av bankposten. Ni kommer tillbaka till Bank, och raden är borta ur Att bokföra.
  5. Arkivera kvittot eller fakturan på verifikatet — en rad i ett kontoutdrag är inget underlag [BFL 5:6–7].

Bra att veta

  • Knappen visas BARA på rader utan automatisk matchning. En rad som redan är bokförd ska prickas av, inte bokföras igen; en fakturabetalning ska regleras mot fakturan så att kundfordran eller leverantörsskulden stämmer; och en valutaväxling ska bli ETT verifikat, inte ett per ben. I alla de fallen saknas knappen med flit.
  • Likvidkontot är GIVET av raden och går inte att välja bort. En PayPal-rad bokförs mot 1941 och en Stripe-rad mot 1942 — försöker konteringen använda företagskontot 1930 i stället stoppas bokföringen med ett besked. Kanalsaldot ska röra sig lika mycket som leverantörens eget utdrag säger.
  • Avgiften är er kostnad, inte kundens rabatt: den bokförs på 6570 och momsen räknas på bruttot, alltså på det kunden faktiskt betalade.
  • En rad i främmande valuta utan känt motvärde i kronor konteras inte alls — AI:n frågar efter växlingskursen i stället. Huvudboken förs i kronor, och en påhittad kurs vore fel i storleksordningen tio gånger pengarna.
  • Saknas AI-nyckeln står knappen inaktiv och orsaken visas under den, med vägen till Inställningar → AI-bokföraren. Har ni satt en månadsbudget varnar knappen när uppskattningen nått den — men den spärrar inte, precis som budgeten på AI-förbrukning aldrig spärrar. Det hårda taket sätter ni hos AI-leverantören.
  • Bankvägens AI-anrop redovisas som en egen post under AI-förbrukning, så ni ser vad just den här knappen kostar.

Vanliga fel och lösningar

Varför saknar min rad knappen Bokför med AI?
Antingen har programmet redan känt igen raden — då står ett annat förslag på raden (Pricka av, Bokför inbetalning, Bokför betalning) och det förslaget är både billigare och säkrare än ett AI-anrop — eller så är raden ett ben i en valutaväxling, som ska bokföras som en enda händelse för hand. Är knappen inaktiv i stället för borta saknas AI-nyckeln, och orsaken står under knappen.
AI:n säger att den behöver mer information
Det är avsikten. En rad i ett kontoutdrag saknar underlag, och en modell som ändå väljer ett kostnadskonto gissar. Skriv in vad köpet var i beskrivningsfältet — "årsavgift för domänen hos Loopia", "uttag till företagskontot" — och analysera igen.
Kan samma post bokföras två gånger?
Nej. Bokföringen och avprickningen sker i samma steg, och anspråket på raden tas i databasen innan verifikatet skrivs. Trycker två personer samtidigt vinner den ena, och den andra får beskedet att posten redan är hanterad — innan något oåterkalleligt hänt.
Bankkoppling via PSD2 (Enable Banking)

Vid sidan av CSV-importen kan programmet hämta kontohändelserna själv genom bankens PSD2-gränssnitt. Du godkänner med BankID hos din egen bank och samtycket gäller så länge banken tillåter, upp till 180 dagar. Kopplingen går via Enable Banking, ett auktoriserat betalningsinstitut, och det är DIN applikation och DITT certifikat som registreras där — banksessionen förblir din, och ingen mellanhand vi driftar står i vägen. Kortet på Bank-sidan står vilande tills två miljövariabler är satta: ENABLE_BANKING_APP_ID och ENABLE_BANKING_PRIVATE_KEY. Under tiden gör CSV-importen exakt samma jobb.

  1. Skapa konto och gå till Applications Enable Banking är ett auktoriserat betalningsinstitut, och det är DIN applikation och DITT certifikat som registreras där — banksessionen förblir din, och ingen mellanhand vi driftar står i vägen. Knappar: Applications → Register application. Resultat: Registreringsformuläret är öppet.
  2. Låt webbläsaren skapa nyckelparet Vid nyckelvalet i registreringsformuläret: ta Generate in the browser (using SubtleCrypto) and export private key. Nyckelparet skapas åt dig och den privata nyckeln laddas ner som en PEM-fil när appen registrerats. Den som hellre kör terminal kan skapa paret själv och välja Generate outside the browser. Knappar: Generate in the browser (using SubtleCrypto) and export private key. Redirect URLs: adressen som står i kortet (Din adress med /bank på slutet. Dit skickar banken dig tillbaka efter BankID, och Enable Banking vägrar återhoppet om adressen inte står i listan. Bara roten räcker inte.) Privacy URL och Terms URL: adressen som står i kortet (Obligatoriska i formuläret. Har du egna sidor för integritet och villkor går de lika bra.) Resultat: En PEM-fil laddas ner. Den visas en enda gång.
  3. Välj miljö och aktivera applikationen SANDBOX aktiveras direkt och ger Enable Bankings testbanker. PRODUCTION ger de riktiga bankerna och aktiveras också direkt — med knappen Activate by linking accounts i kontrollpanelen, där du länkar ditt eget bankkonto med BankID. Ingen granskning behövs för egna konton. Adressen till API:t är densamma i båda fallen. Knappar: Activate by linking accounts. Resultat: Applikationen står som aktiv i kontrollpanelen.
  4. Sätt de två miljövariablerna ENABLE_BANKING_APP_ID är applikationens id, och ENABLE_BANKING_PRIVATE_KEY är hela PEM-innehållet. Måste variabeln vara en enda rad skriver du radbrytningarna som \n. Hos Vercel: Settings → Environment Variables, och sedan Redeploy — miljövariabler slår igenom först när appen byggs om. Knappar: Settings → Environment Variables → Save → Redeploy. ENABLE_BANKING_APP_ID: applikationens id ENABLE_BANKING_PRIVATE_KEY: hela PEM-innehållet (Radbrytningar som \n om variabeln måste vara en rad.) Resultat: Kortet Bankkoppling (PSD2) på Bank-sidan står nu på Redo att koppla.
  5. Testa nycklarna och koppla första kontot Klicka Testa nycklarna: svaret säger hur många svenska banker din applikation ser, och banknamnen avslöjar om nyckeln hör till sandlådan eller till skarpt läge. Klicka sedan + Koppla bankkonto och välj din bank. Bocka i Företagskonto om kontot är registrerat på bolaget, och klicka Anslut med BankID. Knappar: Testa nycklarna → + Koppla bankkonto → Anslut med BankID → Slutför. Resultat: Du signerar hos banken, skickas tillbaka hit, och transaktionerna hämtas direkt. Enskild firma har oftast tekniskt ett privatkonto även när det används i firman. Lämna rutan Företagskonto urbockad om du är osäker.
  6. Steget alla glömmer: Den privata nyckeln laddas ner EN gång, när appen registrerats. Spara PEM-filen i lösenordshanteraren direkt — visas den inte igen finns ingen väg tillbaka än att registrera en ny applikation.
Vad leverantören har dokumenterat om varje bank
BankFöretagskontoInloggningAtt veta
SwedbankUppgift saknasBankID hos banken eller i appen på annan enhetKontoinnehavarens namn ges bara när kopplingen görs och går inte att hämta i efterhand. Poster äldre än 90 dagar kommer utan entry_reference, tar flera minuter och kan utebli helt bortom tre år.
SEBUppgift saknasBankID hos banken eller i appen på annan enhetDokumentationen säger bara att båda auth-flödena stöds. Ingen sandlåda finns, så SEB kan inte provköras innan en riktig kund kopplar.
HandelsbankenJa, med fullmakt i internetbankenBankID hos banken eller i appen på annan enhetFöretagskonton kräver att användaren har fullmakt för open banking-tjänster, vilket ordnas i Handelsbankens internetbank innan kopplingen kan göras.
NordeaJa, men välj rätt företagssystem i listanBankID hos banken eller i appen på annan enhetNordea kör företagskunder på flera system med olika API:er. Kunden väljer system genom att välja rätt bank i listan, inte genom att kryssa i företagskonto.
Nordea CorporateJaBankID hos banken eller i appen på annan enhetFöretagssystemet för större bolag. Egen ASPSP-post, inte en flagga på Nordea.
Nordea First CardJaBankID hos banken eller i appen på annan enhetFöretagskorten. Egen ASPSP-post.
Länsförsäkringar BankJaBankID hos banken eller i appen på annan enhetPersonnummer måste anges innan auktoriseringen startar. För företagskonton krävs dessutom organisationsnummer.
Danske BankJaBankID hos banken (ingen signering på annan enhet)Enda svenska banken som dokumenterat saknar decoupled-flöde. Endast redirect. Fyra konnektorer samexisterar (V1 och V4, privat och företag), så bankens namn ensamt pekar på fyra olika beteenden.
SBAB BankNej, bara privatkontonUppgift saknasEndast privatkonton, och endast inhemska betalningar — ingen SEPA och inget bankgiro. Inget avsnitt i dokumentationen, så auth-flödet är okänt.
ICA BankenNej, bara privatkontonUppgift saknasEndast privatkonton. Inget avsnitt i dokumentationen, så auth-flödet är okänt.
SkandiaJaUppgift saknasBåde privat- och företagskonton, men ingen SEPA i betaltyperna. Inget avsnitt i dokumentationen, så auth-flödet är okänt.
Marginalen BankNej, bara privatkontonUppgift saknasEndast kontoinformation, inga betalningar. Bankposten listar både privat och företag, men konnektorn tar bara privatkonton — och det är konnektorn som gäller.
Nordnet BankBanken går inte att koppla allsUppgift saknasInte integrerad hos Enable Banking. Banken har ett eget PSD2-gränssnitt, men täckningslistan saknar konnektorer för den — den får inte visas som stödd.
American ExpressBanken är avvecklad sedan 2025-03-17Uppgift saknasAvvecklad i Sverige sedan 17 mars 2025. Alla befintliga kopplingar är återkallade. Amex räknar inte sina EU-konton utanför Frankrike som betalkonton enligt PSD2.

Enligt Enable Bankings egen dokumentation, kontrollerad 2026-09-06. Uppgift saknas betyder att leverantören inte skrivit något om saken — inte att det är omöjligt. Vad banken faktiskt tillåter avgörs när du signerar med BankID, och programmet läser bankens eget svar framför den här tabellen.

Bra att veta

  • Enskild firma har oftast tekniskt ett privatkonto även när det används i firman. Lämna rutan Företagskonto urbockad om du är osäker.
  • Tabellen ovan är vad leverantören SKRIVIT. Programmet frågar dessutom banken själv varje gång listan hämtas, och bankens eget svar går alltid före tabellen — därför kan Anslut vara spärrad även för en bank som står som Ja här.
  • Har banken flera konton kopplas alla du kryssade i hos banken, inte bara det första. Varje konto blir en egen rad med egen synkning.
  • Synken hämtar bara bokförda händelser. Reservationer tas inte med — de kommer med av sig själva när banken bokför dem, och kvittensen räknar hur många som väntade.
  • Samma dubblettskydd gäller som vid CSV-import: en händelse som redan hämtats skapas inte igen, så du kan synka hur ofta du vill.
  • Första hämtningen tar allt banken orkar leverera, och den måste ske direkt vid kopplingen: full historik finns typiskt bara ungefär en timme efter signeringen, sedan begränsar många banker till de senaste 90 dagarna.
  • Vill du se exakt vad som saknas står variabelnamnen utskrivna både på Bank-sidan och under Inställningar → Koppla ihop med andra tjänster → Nycklar & kopplingar. Värden visas aldrig, bara om de är satta.

Vanliga fel och lösningar

Jag kan inte öppna PEM-filen med nyckeln
Den behöver aldrig öppnas. Lägg hela innehållet på urklipp från terminalen och klistra in i Vercel — kommandot är inte detsamma på de två datorerna. Mac, i Terminal: pbcopy < "sökväg/till/nyckeln.pem". Windows, i PowerShell: Get-Content nyckeln.pem | Set-Clipboard. Innehållet ska börja med -----BEGIN PRIVATE KEY----- och sluta med -----END PRIVATE KEY-----.
Kortet står på Vilande fast jag har lagt in variablerna
Miljövariabler slår igenom först när appen byggts om. Kör Redeploy hos Vercel. Kontrollera också att PEM-innehållet kom med i sin helhet, inklusive raderna -----BEGIN PRIVATE KEY----- och -----END PRIVATE KEY-----.
Testa nycklarna svarar att nycklarna inte nådde fram
Läs hela svaret: står det vad ENABLE_BANKING_PRIVATE_KEY innehåller (certifikatet, den publika nyckeln, en sökväg, en avhuggen fil) är det den privata nyckelfilen som ska in i stället, hela innehållet från -----BEGIN PRIVATE KEY----- till -----END PRIVATE KEY-----, följt av Redeploy. Applikationen kan annars stå som Inactive: en produktionsapp aktiveras först när du länkat ditt eget bankkonto i kontrollpanelen — knappen Activate by linking accounts, välj land, bank och kontotyp och signera med BankID; aktiveringen sker direkt. Granskningen bakom Request activation behövs bara för appar som ska nå andra personers konton, vilket en egen installation aldrig behöver. Är app-id och certifikat från två olika applikationer stämmer inte signaturen heller.
Banken säger att samtycket har gått ut
Ett PSD2-samtycke är tidsbegränsat, och lagen kräver ny signering minst var 180:e dag. Kopplingen märks då med Samtycke utgånget — klicka Koppla bankkonto igen och signera om med BankID. Ingenting av det som redan hämtats försvinner. Slutdatumet på kortet är det banken själv bekräftade, inte en uppskattning, och kortet påminner en månad i förväg. Har banken inte sagt något datum står det Uppgift saknas i stället för en påhittad siffra.
Tar min bank företagskonton?
Tabellen ovan säger vad leverantören dokumenterat, bank för bank. Står det Uppgift saknas har leverantören inte skrivit något — det betyder inte nej. Programmet frågar dessutom banken själv: säger banken att den bara tar privatkonton spärras knappen Anslut med en förklaring, innan du signerar med BankID. Handelsbanken kräver att du har fullmakt för open banking-tjänster åt företaget, och den ordnar du i Handelsbankens internetbank först. Nordea kör företagskunder på tre olika system — Nordea, Nordea Corporate och Nordea First Card — och du väljer system genom att välja rätt bank i listan, inte genom att kryssa i Företagskonto.
Hämtningen tar flera minuter
Det är väntat för poster äldre än 90 dagar hos Swedbank och sparbankerna: banken förbereder dem i bakgrunden och svarar under tiden att den inte är klar. Programmet väntar in det i stället för att ge upp. Bortom tre år kan banken misslyckas helt, så första hämtningen frågar aldrig längre tillbaka än så.
Jag vill ta bort kopplingen helt
Klicka Koppla bort på raden. Då stängs samtycket hos banken också, inte bara här — kan banken inte bekräfta det får du veta det och kan återkalla åtkomsten i internetbanken. Transaktionerna som redan hämtats ligger kvar, de är bokföringsunderlag.
Måste jag ha bankkoppling?
Nej. CSV-importen från internetbanken gör samma jobb: samma matchning mot fakturor, samma bokföringsregler, samma avstämning. Bankkopplingen tar bort ett manuellt steg, den lägger inte till någon funktion.
Betalkanal: Stripe

Stripe kopplas med en restricted key som ni själva skapar och som bara får LÄSA. Programmet hämtar balanstransaktionerna — försäljningar, avgifter, återbetalningar, tvister och utbetalningar i en och samma tidslinje — och lägger dem i samma lista som bankhändelserna. Samma avprickning, samma bokföringsregler, samma månadsavslut. Ingenting bokförs automatiskt: raderna kommer in, reglerna och AI:n föreslår, och ni klickar. Avgiften dras inuti transaktionen hos Stripe, så varje rad bär både brutto, avgift och netto — avgiften bokförs på 6570 på samma verifikat som försäljningen, aldrig som en egen gissning.

  1. Logga in i Stripe och gå till Developers → API keys → Create restricted key. Namnge nyckeln så ni känner igen den, till exempel "Debet & Kredit (läs)".
  2. Ge Read på Balance transaction sources, Charges and refunds och Payouts. Allt annat lämnas på None. Aldrig Write någonstans, och aldrig en secret key (sk_) — den ger full skrivrätt på hela kontot och programmet behöver den inte.
  3. Klicka Create och KOPIERA NYCKELN DIREKT. I skarpt läge visas den en enda gång; missar ni det måste ni skapa en ny.
  4. Öppna Bank i programmet, slå på Stripe på kortet Betalkanaler, klistra in nyckeln och spara.
  5. Klicka Testa kopplingen. Svaret säger om nyckeln är skarp (rk_live_) eller sandlåda (rk_test_) och visar den senaste händelsen kontot har.
  6. Klicka Hämta historik en gång för att ta hem det Stripe lämnar ut. Därefter sköter nattjobbet 03:50 påfyllningen av sig själv.

Bra att veta

  • Kanalens konto är 1942 Stripe. Byter ni till ett konto utanför 1910–1949 försvinner kanalen ur bankavstämningen, månadsavslutets bankvillkor och banksaldot på startsidan — kortet varnar och räknar upp exakt vilka ytor det gäller.
  • En utbetalning från Stripe till bankkontot är en ÖVERFÖRING mellan två egna konton, aldrig en intäkt. Programmet känner igen den från båda hållen och föreslår avprickning på den andra raden, så samma pengar inte bokförs två gånger.
  • Har ni redan bokfört Stripe-historik för hand? Importen letar efter Stripes transaktions-id i era verifikat och föreslår avprickning i stället för nybokning när det hittas.
  • Stripe lämnar inget löpande saldo per transaktion. Programmet frågar saldot separat en gång per hämtning och stämplar det på den senast hämtade raden — det räknas aldrig fram genom att addera ihop raderna, för då hade en enda saknad rad gjort hela kedjan fel utan att det syntes. Föll rader vid hämtningen stämplas inget saldo alls, och månadsavslutet använder ert intygade saldo i stället.
  • Alla leverantörsavgifter bokförs på 6570 Bankkostnader, som är momsfritt. Betalningsförmedling är en undantagen finansiell tjänst. Har ni Stripe Billing, Radar eller Tax kan de avgifterna vara skattepliktiga tjänster i stället — programmet delar inte upp dem i den här versionen, och det står här i stället för att gömmas.

Vanliga fel och lösningar

Testa kopplingen säger att Stripe nekade läsningen (403)
Restricted key:n saknar en läsbehörighet. Stripes eget meddelande står i svaret och namnger vilken — gå tillbaka till nyckeln i Stripe och kryssa i den. Vilken behörighet själva listanropet kräver är inte entydigt dokumenterat hos Stripe, så programmet gissar aldrig: det återger Stripes besked ordagrant.
Kopplingen svarar men inga försäljningar kommer in
Kontrollera vilket läge nyckeln hör till. En rk_test_-nyckel läser sandlådan, som har helt egna objekt och aldrig innehåller er riktiga försäljning. Testa kopplingen skriver ut läget.
Hur långt tillbaka går historiken?
Det är inte dokumenterat hos Stripe, och därför lovar programmet ingenting. Hämta historik frågar från ett generöst golv och låter Stripe svara med det äldsta de har — sedan visar kortet det datum ni faktiskt fick.
Jag tappade bort nyckeln
Skapa en ny restricted key med samma behörigheter, klistra in den och spara. Den gamla kan återkallas i Stripe. Ingenting av det som redan hämtats försvinner, och dubbletter kan inte uppstå: dubblettskyddet bygger på Stripes transaktions-id, inte på nyckeln.
Betalkanal: PayPal

PayPal kopplas med er egen REST-app: ett client id och en hemlighet som ni själva skapar. Programmet läser transaktionslistan och lägger raderna i samma lista som bankhändelserna. Varje rad bär brutto, avgift och netto — PayPal drar avgiften inuti transaktionen — och PayPals eget utgående saldo per rad, så månadsavslutets bankvillkor kan stämma av kanalen mot PayPals utdrag. Ingenting bokförs automatiskt.

  1. Gå till developer.paypal.com och logga in med ert FÖRETAGSKONTO (inte ett privatkonto).
  2. Växla till Live om ni ska koppla den riktiga verksamheten. Sandbox har helt egna konton och egna transaktioner.
  3. Gå till Apps & Credentials → REST API apps och välj er app, eller skapa en ny.
  4. KRYSSA I TRANSACTION SEARCH på appen och spara. Det är steget alla glömmer: utan kryssrutan är nyckeln giltig och anropet nekas ändå.
  5. Kopiera Client ID och Secret. Öppna Bank i programmet, slå på PayPal på kortet Betalkanaler, klistra in båda, välj läge (Live eller Sandbox) och spara.
  6. Klicka Testa kopplingen. Nekas den med Transaction Search-felet: behörigheten gäller först för ett NYTT åtkomsttoken, och ändringen kan dröja innan den slår igenom på en app som redan används. Vänta en stund och testa igen innan ni felsöker vidare.
  7. Klicka Hämta historik för att ta hem det PayPal lämnar ut — som mest tre år bakåt, i 31-dygnsfönster efter varandra. Därefter hämtar nattjobbet 03:50.

Bra att veta

  • Kanalens konto är 1941 PayPal. Samma varning som för Stripe gäller om ni byter till ett konto utanför 1910–1949.
  • PayPal släpper transaktioner med några timmars fördröjning. Nattjobbet hämtar därför alltid två dygn bakåt — kvällens sista köp syns i morgon, inte i kväll.
  • Ett uttag från PayPal till bankkontot är en ÖVERFÖRING, aldrig en intäkt. Programmet parar ihop den med insättningen i bankflödet och föreslår avprickning på den andra raden.
  • En valutaväxling kommer som ett PAR av rader som delar transaktions-id. Programmet håller ihop dem som EN händelse och räknar aldrig om beloppen i tysthet: originalbelopp och originalvaluta står kvar på raden.
  • Händelsekoderna (T0006, T0200, T0400 …) tolkas på kodfamilj, inte på enskild kod. En kod utanför familjerna bokförs aldrig automatiskt — den räknas och namnges i hämtningens kvitto, så ni ser att den finns i stället för att den tyst tolkas fel.

Vanliga fel och lösningar

PERMISSION_DENIED, fast jag kryssat i Transaction Search
Två saker kan ligga bakom, och Testa kopplingen skiljer dem åt. Antingen används ett åtkomsttoken som utfärdades före kryssrutan — programmet hämtar alltid ett nytt token, så det gäller framför allt om ni testar med egna verktyg. Eller så har ändringen inte slagit igenom hos PayPal ännu; på en app som redan används kan det dröja. Vänta en stund och testa igen.
Client id och hemlighet avvisas (401)
Kontrollera att båda kommer från SAMMA app och samma läge. En Live-app och en sandlådehemlighet ser rätt ut var för sig och fungerar aldrig ihop. Läget väljs på kortet i programmet.
Sandlådan svarar men returnerar inga transaktioner
Om PayPals sandlåda alls lämnar ut data för Transaction Search är inte belagt. Ett tomt svar i sandlådan betyder därför inte nödvändigtvis att något är fel — koppla skarpt läge för att veta säkert.
Kan jag hämta äldre än tre år?
Nej. PayPal lämnar inte ut mer än tre år bakåt via transaktionssökningen. Kortet skriver ut det äldsta datum hämtningen faktiskt nådde, så ni ser var gränsen gick — och äldre poster får läggas in via SIE-import eller manuellt.
Leverantörsfakturor: inkorg, tolkning och bokföring

Leverantörsfakturor kommer in på tre sätt: leverantören mejlar PDF:en till din inkorgsadress (Inställningar → Ta emot leverantörsfakturor → Leverantörsinkorg), du laddar upp den i underlagsinkorgen och klickar Leverantörsfaktura, eller leverantören skickar en e-faktura som din egen Peppol-accesspunkt levererar till /api/inbound/peppol. Varje faktura blir ett utkast som AI:n tolkar — leverantör, fakturanummer, datum, belopp, valuta och momstyp — och som du bokför från tvåkolumnsvyn under Leverantörer → Ny leverantörsfaktura: formuläret till vänster förifyllt, fakturabilden till höger, pilar för att bläddra mellan allt som väntar.

Leverantörsfakturor: inkorg, tolkning och bokföring
  1. Kontrollera det förifyllda mot bilden. Fält AI:n är osäker på syns i tolkningsprocenten och i Obs-raden; fakturor från okända avsändare och möjliga dubbletter (samma leverantör + fakturanummer) flaggas alltid.
  2. Leverantören matchas på VAT-nummer, orgnr eller namn. Saknas den i registret: lägg upp den under Leverantörer (orgnr fyller i resten) och välj den.
  3. Utländsk faktura: valutan och Riksbankens kurs på fakturadagen fylls i, beloppet omräknas till SEK. Leverantör utan moms bokförs med omvänd betalningsskyldighet automatiskt: den beräknade momsen hamnar på 2645 och på 2614, 2624 eller 2634 beroende på momssatsen du väljer — momsdeklarationens ruta 20–22 och ruta 30, 31 eller 32. Satsen är den som gäller för varan eller tjänsten i Sverige och står aldrig på fakturan, så välj den själv. Varor från land utanför EU: välj momstypen Utanför EU, varor — fakturan bokförs utan moms på ett vanligt varukonto (4000/4010 eller lager). Beskattningsunderlaget i ruta 50 är tullvärdet Tullverket fastställer plus tull, avgifter och bikostnader fram till bestämmelseorten, inte fakturabeloppet: det bokför du på 4545–4547 först när tullräkningen kommer, med importmomsen på 2615, 2625 eller 2635.
  4. Bokför: kostnad, moms och skuld 2440 bokförs i serie C, PDF:en kopplas till verifikatet (7 års arkiv) och fakturan hamnar i listan att betala. Betalningen prickas av från Bank eller med Betala-knappen.
  5. Attest (valfritt): slå på Kräv attest under Inställningar → Ta emot leverantörsfakturor → Godkännande (attest) av leverantörsfakturor så måste en administratör attestera varje ny faktura innan den får betalas, både med Betala-knappen och vid bankavprickningen. Nya fakturor får märket Väntar på attest i reskontran; administratören klickar Attestera eller Avvisa (med motivering) på raden, och filtret Väntar på attest visar allt som är kvar. Medarbetare registrerar och bokför som vanligt men ser bara märket. Varje beslut loggas med vem och när.
  6. Registrera en subdomän för inkommande mejl Lägg till en subdomän i Resend, till exempel inbox.dindoman.se, och lägg mottagnings-MX:en bara där. Ingen brevlåda behövs: adressen på subdomänen är MX plus en webhook, inget mer. Knappar: Domains → Add Domain. Domain: inbox.DINDOMAN.se (Byt DINDOMAN mot din egen domän.) Resultat: Subdomänen står som Verified, och MX-posten pekar på Resend. Huvuddomänens MX styr vart företagets ALL post går. Den ska inte röras för en fakturainkorg.
  7. Skapa webhooken som lämnar mejlen till programmet Resend skickar varje inkommet mejl vidare till din installation. Välj händelsen email.received och peka den på adressen nedan. Knappar: Webhooks → Add Webhook. Endpoint URL: adressen som står i kortet (Hela adressen, sökvägen inkluderad — kopiera den med knappen.) Event: email.received Resultat: Webhooken står i listan, och Resend visar en signing secret för den.
  8. Lägg webhookens hemlighet som miljövariabel Hemligheten är hur programmet vet att mejlet verkligen kom från Resend och inte från någon som gissat adressen. Utan den är mejlmottagningen av, och kortet säger det rakt ut. Knappar: Settings → Environment Variables → Save → Redeploy. RESEND_WEBHOOK_SECRET: whsec_… (Signing secret från webhooken.) Resultat: Brickan "Webhook-hemlighet satt" tänds på det här kortet.
  9. Skriv in inkorgsadressen och berätta för leverantörerna Adressen du skriver in här är den som visas för dig och för dina leverantörer. Fakturor från okända avsändare markeras alltid som granska tills du godkänt adressen en gång. Knappar: Spara. Inkorgsadress: faktura@inbox.DINDOMAN.se (Måste ligga på subdomänen du la MX-posten på.) Resultat: Nästa faktura som mejlas dit ligger som utkast under Leverantörer → Ny leverantörsfaktura, tolkad och förifylld.
  10. Steget alla glömmer: Lägg mottagnings-MX:en på en SUBDOMÄN, aldrig på huvuddomänen. En MX-post på huvuddomänen kapar ALL inkommande mejl dit — ligger info@ hos Google slutar den fungera samma minut.

Bra att veta

  • Leverantörens förvalda kostnadskonto (eller kontot från förra fakturan) föreslås automatiskt — sätt det på leverantören så blir varje faktura ett klick.
  • Godkänn leverantörens mejladress första gången under Inställningar → Ta emot leverantörsfakturor → Leverantörsinkorg, så slipper fakturorna granskningsflaggan sedan.
  • E-faktura (Peppol BIS Billing 3.0) behöver ingen AI-tolkning: beloppen står i namngivna fält enligt EN 16931 och läses rakt av, så knappen Tolka med AI finns inte för dem. Transporten kräver en accesspunkt, och den är din egen — vi driftar ingen och tar ingen avgift per faktura. Uppsättningen står i docs/PEPPOL-MOTTAGNING.md.
  • En mottagen kreditnota (typkod 381) minskar skulden och ska bokföras med omvänt tecken. Programmet vänder inte tecknet åt dig — den flaggas för granskning i stället.
  • Attest är avstängt tills du slår på det, och fakturor som redan finns när du slår på det räknas som attesterade. En avvisad faktura ligger kvar i reskontran och kan öppnas igen om den ändå ska betalas.

Vanliga fel och lösningar

Betala-knappen är grå och säger att fakturan väntar på attest
Attest är påslaget och fakturan är ännu inte attesterad. Be en administratör attestera den på raden under Leverantörer (filtret Väntar på attest listar allt som väntar). Samma spärr gäller i Bank: en obetald faktura som väntar på attest föreslås inte som matchning. Vill ni inte använda attest stänger administratören av det under Inställningar → Ta emot leverantörsfakturor → Godkännande (attest) av leverantörsfakturor.
Ingenting händer när jag mejlar till adressen
Kontrollera i tur och ordning: MX-posten ligger på subdomänen (inte huvuddomänen), webhooken lyssnar på email.received, RESEND_WEBHOOK_SECRET är satt och appen ombyggd. Utan mejlmottagning fungerar flödet ändå — ladda upp PDF:en i underlagsinkorgen och klicka Leverantörsfaktura.
Betalfil till banken (pain.001)

Under Betalningar samlar du obetalda leverantörsfakturor i en betalfil i bankernas standardformat ISO 20022 pain.001, laddar upp den i internetbanken och markerar omgången som genomförd när banken har betalat. Då bokförs varje betalning på betaldagen, ett verifikat per faktura, exakt som med Betala-knappen. Förutsättning: företagets IBAN och BIC under Inställningar → Företaget, moms och F-skatt, i kortet Företagsuppgifter, moms och F-skatt — och bankgiro/plusgiro/IBAN på leverantörerna. Löner ingår inte i betalfilen: lönekörningen krediterar företagskontot med nettolönen på lönedatumet och räknas som utbetald då, så själva utbetalningen gör du i internetbanken.

  1. Bocka för fakturorna som ska betalas och sätt betaldag (den dag banken ska utföra betalningarna, tidigast idag). Fakturor som väntar på attest, är i annan valuta än SEK eller saknar konto på leverantören kan inte bockas för, raden visar varför.
  2. Klicka Skapa betalfil och ladda ner. Filen heter pain001-leverantorer-<betaldag>-<id>.xml och omgången får status Fil hämtad. Filen kan hämtas igen när som helst.
  3. Ladda upp filen i internetbanken: Swedbank Företag under Betala och överföra → Filer/Filöverföring → Skicka fil; SEB Företag under Betalningar → Filer → Skicka fil (ISO 20022 pain.001). Banken visar antal betalningar och totalsumma, som ska stämma med omgången. Godkänn med BankID.
  4. När banken har utfört betalningarna klickar du Markera som genomförd. Fakturorna bokförs som betalda på betaldagen (D 2440 / K 1930). Går något fel för en rad bokförs de andra ändå, och du kan klicka igen när felet är åtgärdat.

Bra att veta

  • Testa filen gratis i Validex (validex.net) första gången: ladda upp den, välj profilen för din bank och pain.001.001.03, och läs rapporten. Se docs/BETALFIL.md för detaljer.
  • OCR-nummer skickas som strukturerad referens (SCOR) så leverantören kan pricka av automatiskt; utan OCR går fakturanumret som meddelande.
  • Har du laddat upp filen i banken ska omgången markeras som genomförd, inte tas bort. Ta bort används bara för en fil som aldrig skickades.
  • Löner betalar du i internetbanken. Den anställdas clearing- och kontonummer står under Personal, och lönen är redan bokförd som utbetald från företagskontot på lönedatumet.

Vanliga fel och lösningar

Banken avvisar filen
Kontrollera att företagets IBAN och BIC under Inställningar → Företaget, moms och F-skatt, i kortet Företagsuppgifter, moms och F-skatt, gäller det konto som är anslutet till bankens filtjänst, och att avtalet för betalningar via fil (ISO 20022) är aktiverat hos banken. Kör filen genom Validex för att se exakt vilket fält banken klagar på. Bankgiro- och plusgironummer valideras redan när omgången skapas.
Knappen Skapa betalfil är grå
Företagets IBAN eller BIC saknas under Inställningar → Företaget, moms och F-skatt, i kortet Företagsuppgifter, moms och F-skatt, eller så är ingen rad vald. IBAN kontrolleras med kontrollsiffror, ett felskrivet IBAN räknas som saknat.
Kvittens från banken (camt.054)

Betalfilen går ut till banken, och camt.054 är kvittensen tillbaka: bankens egen fil över vad som faktiskt hände. Ladda upp den under Betalningar så prickas omgången av rad för rad. Utförda betalningar bokförs som betalda på BANKENS bokföringsdag — inte på den betaldag du önskade, utan den dag pengarna lämnade kontot. Betalningar som kom tillbaka bokförs inte alls: de flaggas med bankens kod i klartext och ligger kvar som obetalda, så de kommer med i nästa betalfil. Läser du in samma fil två gånger händer ingenting: filens innehåll räknas fram till en hash som bara får finnas en gång.

  1. Hämta filen där du lämnade betalfilen: Swedbank Företag under Betala och överföra → Filer, SEB Företag under Betalningar → Filer, Nordea i Corporate Netbank eller eGateway. Den heter oftast camt054, Debit Notification eller Credit Notification.
  2. Gå till Betalningar → Kvittens från banken (camt.054), välj filen och klicka Läs in kvittensen.
  3. Läs resultatet uppifrån: det som kom tillbaka och det som spärrades står först, sedan det som bokfördes. Varje rad visar belopp, bankens dag och — för återförda — bankens kod med förklaring.
  4. En omgång där varje rad är avprickad och ingen kom tillbaka markeras automatiskt som genomförd. Finns en återförd rad lämnas omgången öppen: den har ett ärende kvar.
  5. Åtgärda det som kom tillbaka (nytt kontonummer på leverantören, täckning på kontot) och ta med fakturan i en ny betalfil. Den ligger kvar som obetald och är valbar igen.

Bra att veta

  • Kvittensen matchar på referensen betalfilen skrev (EndToEndId), inte på belopp och namn. Två fakturor till samma leverantör på samma belopp kan därför aldrig blandas ihop.
  • Stämmer inte beloppet på öret mot raden bokförs ingenting — posten spärras och pekas ut. Programmet bokför aldrig ett belopp det inte känner igen.
  • En inbetalning från en kund som råkar ligga i samma fil prickas inte av här. Den hör hemma under Bank, och det står utskrivet på raden.
  • Reserverade poster (status PDNG) är ännu inte bokförda hos banken. De kommer med i nästa kvittens av sig själva.
  • Filen läses som ISO 20022 camt.054 i alla versioner från .02 och uppåt. En camt.053 (kontoutdrag) hör hemma under Bank, och beskedet säger det om du råkar välja fel fil.

Vanliga fel och lösningar

Programmet säger att filen redan är inläst
Då är den det, och avprickningen gjordes vid det tillfället. Ingenting bokförs om. Vill du se vad som hände öppnar du omgången under Betalfiler: avprickade rader visar bankens dag, återförda visar bankens kod.
Banken avvisade betalningarna innan de utfördes
Det beskedet skickas i en pain.002-statusrapport, inte i camt.054. Den läser vi inte: camt.054 är kvittensen på det banken faktiskt gjorde. Fick du en pain.002 hittar du de avvisade betalningarna i bankens egen vy, åtgärdar orsaken och skapar en ny betalfil — omgången här ligger kvar som Fil hämtad tills något faktiskt hänt.
En post kunde inte kopplas till någon betalfil
Posten saknar den referens vi skrev i betalfilen, eller så gäller den en betalning som gjordes direkt i internetbanken. Bokför den under Bank i stället — kvittensen prickar bara av betalfiler skapade här.
Måste jag använda kvittensen?
Nej. Knappen Markera som genomförd gör samma sak manuellt, med betaldagen som bokföringsdag. Kvittensen tillför två saker: bankens verkliga bokföringsdag, och beskedet om något kom tillbaka — som annars upptäcks först när leverantören hör av sig.
Körjournal och milersättning

Körjournalen är underlaget för skattefri milersättning med egen bil (25 kr/mil 2026). Registrera resor med datum, sträcka och syfte, och bokför ersättningen därifrån. Varje resa får ett eget verifikat daterat resans datum, på konto 7331 Skattefria bilersättningar (motkonto 2018 egen insättning i enskild firma, 2820 skuld till anställd eller ägare i aktiebolag och handelsbolag). Ligger en resa i en låst period eller ett avslutat räkenskapsår hoppas just den resan över med besked om vilken resa det gäller, medan övriga bokförs. En lång journal bokförs 300 resor i taget: beskedet säger hur många som återstår, klicka igen så tar programmet nästa portion. Journalen är det underlag Skatteverket vill se vid en kontroll.

Körjournal och milersättning
Anläggningsregister och avskrivningar

Inventarier över direktavdragsgränsen (29 600 kr 2026, halvt prisbasbelopp) med minst tre års livslängd läggs i anläggningsregistret. Billigare inköp dras av direkt på konto 5410 Förbrukningsinventarier. Registret skriver av planenligt: anskaffningsvärdet delas på den nyttjandeperiod du angav och fördelas per månad från och med den månad tillgången togs i bruk (K2 punkt 10.23; lämnas fältet tomt gäller inköpsmånaden) — precis den princip som noten i K2-årsredovisningen beskriver. Avskrivningen bokförs i serie E med dagens datum, på tillgångens avskrivningskonto (7820/7831/7832/7834/7835) mot ackumulerade avskrivningar (1119/1129/1159/1219/1229/1249/1259). Registret tar inventarier, datorer, maskiner, bilar, byggnader, markanläggningar och förbättringsutgifter på annans fastighet. Mark skrivs inte av och registreras inte: bokför anskaffningsvärdet direkt på konto 1130.

Anläggningsregister och avskrivningar
  1. Registrera tillgången med Ny tillgång: benämning, typ (styr konton), inköpsdatum, anskaffningsvärde exkl. moms och nyttjandeperiod i år.
  2. Är inköpet redan bokfört — till exempel via banken eller en importerad historik — bockar du ur Bokför inköpet nu. Annars skapas ett inköpsverifikat direkt.
  3. Klicka Bokför avskrivning t.o.m. <månad> när du vill. Programmet räknar fram vad planen säger till och med innevarande månad och bokför skillnaden mot det som redan är bokfört.
  4. Kör igen senare under året — månadsvis, kvartalsvis eller en gång i bokslutet. Resultatet blir detsamma: vid årets slut är hela årets planenliga avskrivning bokförd.
  5. Vid försäljning eller utrangering: Avyttra på tillgångens rad. Tillgången och de ackumulerade avskrivningarna bokas bort, och vinsten hamnar på 3973 eller förlusten på 7973.

Bra att veta

  • Nyttjandeperioden är din bedömning av hur länge tillgången används i verksamheten: 3–20 år för inventarier, 3–100 år för byggnader och markanläggningar. Datorer brukar sättas till 3 år, maskiner och inventarier till 5–10, byggnader till 20–50 (Skatteverkets 2–5 % per år, som K2 punkt 10.27 tillåter) och markanläggningar till 20.
  • Förvärvsmånaden räknas som en hel månad. En inventarie köpt 15 mars skrivs av med tio månader det första året.
  • Ackumulerad avskrivning kan aldrig passera anskaffningsvärdet — sista månaden tar restposten, så det blir aldrig några ören kvar.
  • 30-regeln och 20-regeln visas som skattemässig kontrollberäkning bredvid. Skillnaden mot den planenliga avskrivningen är utrymmet för överavskrivning (konto 2153 och 8853), en bokslutsdisposition som kommer som egen funktion.

Vanliga fel och lösningar

Huvudboken och anläggningsregistret säger olika saker
Rutan högst upp på sidan visar differensen per konto. Nästan alltid beror den på importerad historik där inventarier ligger på 1220 utan att finnas i registret — och det som inte finns i registret skrivs aldrig av. Registrera de saknade tillgångarna med rätt anskaffningsvärde och inköpsdatum, och bocka ur Bokför inköpet nu.
Knappen säger "Inget att bokföra"
Planen är redan ikapp till och med innevarande månad. Kom tillbaka nästa månad, eller i bokslutet.
Avskrivningen ser för liten ut mot förra året
Tidigare bokfördes skattereglernas maximum (30-regeln). Planenlig avskrivning enligt nyttjandeperioden är lägre — mellanskillnaden är avsedd att tas som överavskrivning, en bokslutsdisposition som inte påverkar den planenliga avskrivningen.
Bara administratörer kan bokföra avskrivningar
Avsiktligt: avskrivningsverifikatet bokförs som bokslutspost och går förbi periodlåsen. Be en administratör köra den.

Skatt, moms & lön9 artiklar

Momsdeklarationen

Moms-sidan räknar fram deklarationen ruta för ruta ur bokföringen — försäljning, utgående och ingående moms, EU-handel — för din valda period (månad/kvartal/helår). När du godkänner rapporten bokförs omföringen till redovisningskontot (2650) automatiskt, perioden låses, och du laddar ner eSKD-filen för uppladdning i Skatteverkets e-tjänst.

Momsdeklarationen

Vanliga fel och lösningar

Momsrapporten stämmer inte mot känslan
Fråga Rådgivaren "hur ser mitt momsläge ut?" — den räknar på samma bokföring och förklarar posterna.
"Godkänd momsrapport får inte ändras"
Avsiktligt skydd. Hittar du fel efteråt: rätta med ändringsverifikat i nästa period.
Periodisk sammanställning till EU

Säljer du varor eller tjänster momsfritt till momsregistrerade köpare i andra EU-länder ska försäljningen redovisas i en periodisk sammanställning, utöver momsdeklarationen. Kortet ligger på Moms-sidan och summerar försäljningen per köpares VAT-nummer ur samma verifikationsrader som momsdeklarationens ruta 35 och 39 — så kolumnerna kan inte glida isär från rutorna. Filen är Skatteverkets semikolonformat, färdig att ladda upp i deras e-tjänst.

  1. Kontrollera att varje EU-kund har rätt VAT-nummer på kundkortet. Numret är radens nyckel i sammanställningen — utan det finns ingen köpare att redovisa på.
  2. Öppna Moms och välj perioden. Kortet Periodisk sammanställning visar en rad per köpare med varuvärde, tjänstevärde och trepartshandel var för sig.
  3. Stäm av summorna mot momsdeklarationens ruta 35 (varor) och 39 (tjänster). De räknas ur samma rader och ska vara lika.
  4. Hämta filen och ladda upp den i Skatteverkets e-tjänst för periodisk sammanställning.

Bra att veta

  • Rytmen styrs av vad du säljer. Varor redovisas som huvudregel månadsvis; säljer du bara tjänster räcker kvartal. Valet står i dina inställningar och styr både kortet och skattekalenderns datum — programmet antar ingenting.
  • Kreditfakturor drar av. En kreditering minskar köparens belopp i den period krediteringen hör till, precis som i momsdeklarationen.
  • Avropslager redovisas med sina egna koder — X när varor förs över, Y vid återförsel och Z när köparen byts ut.
  • En period utan EU-försäljning ger ingen fil alls, och ska inte heller lämnas in. Kortet säger det i stället för att ladda ner en tom fil.
  • Sammanställningen ersätter inte momsdeklarationen och tvärtom. Båda ska lämnas, och de har olika sista dag.

Vanliga fel och lösningar

En kund saknas i sammanställningen
Antingen saknar kundkortet VAT-nummer, eller så är kundens momstyp inte EU omvänd skattskyldighet. En EU-kund utan giltigt VAT-nummer är en konsument i momshänseende och hör inte hemma här — rätta kundkortet och bokför om fakturan om momstypen var fel.
Summan stämmer inte med ruta 35
Vanligast är en kreditfaktura som hamnat i en annan period än originalet, eller en faktura där momstypen ändrats efter bokföringen. Öppna verifikaten bakom beloppet — kortet räknar på samma rader som rutan, så en differens är alltid en skillnad i underlaget, aldrig i formeln.
Måste jag lämna sammanställningen om jag redan lämnat momsdeklarationen?
Ja. Det är två skilda redovisningar: deklarationen visar dina totaler, sammanställningen visar vem köparen var. Skatteverket stämmer av dem mot köparens uppgifter i det andra landet.
Skattesidan: eget uttag, bolagsskatt eller delägare

Skattesidan anpassar sig efter bolagstypen. Enskild firma: egna uttag och insättningar bokförs mot eget kapital (2013/2018) — uttag är aldrig lön och aldrig en kostnad. Uttagssimulatorn visar vad ett uttag "kostar" i skatt och egenavgifter givet ditt resultat, med aktuella regelvärden (egenavgifter, schablonavdrag, skiktgräns), och F-skatten bokförs mot 2012 — aldrig som kostnad. Aktiebolag: preliminär bolagsskatt (20,6 % av det skattemässiga resultatet, ej avdragsgilla kostnader återlagda) och utrymmet för periodiseringsfond (25 %), plus påminnelsen att ägare tar ut ersättning som lön eller utdelning. Handelsbolag: delägarna beskattas för sina resultatandelar i egna deklarationer — N3A för fysisk person och dödsbo, N3B för en delägare som är juridisk person — och planeringen görs där.

Skattesidan: eget uttag, bolagsskatt eller delägare
K10 och 3:12-reglerna: gränsbeloppet för utdelning

Äger du kvalificerade andelar i ett fåmansaktiebolag avgör GRÄNSBELOPPET hur mycket utdelning som beskattas till 20 procent i inkomstslaget kapital i stället för som lön i inkomstslaget tjänst. Under Skatt → K10 fyller du i underlaget per beskattningsår och ser hela kedjan: årets gränsbelopp, sparat utdelningsutrymme, hur utdelningen fördelas och vad som förs vidare till nästa år. Hela beräkningen med lagrum per rad ligger publikt på /regler/k10.

  1. Reglerna byttes den 1 januari 2026 genom lag (2025:1361). Från beskattningsår 2026 finns bara EN regel: grundbeloppet fyra inkomstbasbelopp, plus lönebaserat utrymme, plus ränta på omkostnadsbeloppet. Lönekravet och 4-procentsspärren är upphävda, och sparat utdelningsutrymme räknas inte längre upp.
  2. Till och med beskattningsår 2025 valde du mellan förenklingsregeln (2,75 inkomstbasbelopp) och huvudregeln (ränta plus lönebaserat utrymme, med lönekrav och 4-procentsspärr). Programmet räknar båda och visar dem sida vid sida — men väljer inte åt dig, för lagen säger 'eller'.
  3. Bekräfta att andelarna är kvalificerade. Det beror på om du eller någon närstående varit verksam i betydande omfattning i bolaget (inkomstskattelagen 57 kap. 4 §), och det syns inte i bokföringen. Utan bekräftelsen räknas ingenting.
  4. Fyll i antalet ägda och totala andelar VID ÅRETS INGÅNG, ditt omkostnadsbelopp, ingående sparat utdelningsutrymme från förra årets K10 (punkt 1.9/1.11 eller 2.10/2.12), löneunderlaget för året före och din egen kontanta ersättning samma år.
  5. Utdelningen fördelas: det som ryms i gränsbeloppet tas upp till två tredjedelar i kapital (20 procent effektiv skatt) och förs till punkt 7.2 i Inkomstdeklaration 1. Det som överstiger beskattas i tjänst och förs till punkt 1.7.

Bra att veta

  • Löneunderlaget föreslås ur programmets egna lönekörningar men ska alltid kontrolleras: lagen räknar in ersättning till arbetstagare även i dotterföretagen, och de ligger utanför den här installationen. Förmåner och kostnadsersättningar ingår inte — bara kontant ersättning.
  • Omkostnadsbeloppet är vad andelarna kostat: anskaffningsutgift plus ovillkorliga aktieägartillskott. Det ligger hos dig som ägare, inte i bolagets bokföring, och matas därför in.
  • SRU-fil skapas för beskattningsår 2025, där Skatteverkets fältnamnstabell finns publicerad. För 2026 och framåt är filexporten spärrad — Skatteverket har inte publicerat någon fältnamnstabell för det nya regelverket. Beräkningen fungerar ändå; siffrorna förs in i Skatteverkets e-tjänst Inkomstdeklaration 1, där K10 skapas som bilaga.
  • K10-underlaget innehåller personnummer och en privatpersons skatteuppgifter. Bara administratören kan se och ändra det; granskaren läser. Medarbetare och anställda kommer inte åt raden alls.

Vanliga fel och lösningar

Beräkningen är spärrad och säger att ett regelvärde saknas
Ett nytt beskattningsår kräver nya rader i regeltabellen: inkomstbasbeloppet för året före och statslåneräntan den 30 november året före. Programmet räknar hellre ingenting än på ett gissat värde. Raderna kommer med programmets uppdateringar — kör en uppdatering (Sync fork på GitHub, sedan git pull och npx supabase db push) så följer årets värden med, och Uppdateringar i menyn visar vad som kommit. Det finns ingen inställningssida för regelvärden; brådskar det lägger en administratör raden direkt i tabellen rule_values i Supabase, med rätt giltighetstid.
Det lönebaserade utrymmet blev noll för ett år före 2026
Antingen ägde du mindre än fyra procent av kapitalet, eller så nådde din egen kontanta ersättning inte upp till lönekravet. Båda villkoren måste vara uppfyllda, och utrymmet blir då noll — inte reducerat. Sidan säger vilket av dem som stoppade.
Filexporten är spärrad
Fältkoderna för K10 finns bara för de beskattningsår vars fältnamnstabell Skatteverket publicerat och som lästs in. Är det 2026 eller senare: koderna för 2025 är byggda kring blankettens indelning i förenklingsregel och huvudregel, och den indelningen finns inte längre. Är det ett äldre år: har du sålt andelar under året, eller ägt dem bara en del av löneåret, hör de blankettpunkterna till beräkningar programmet inte gör.
Skattekontot mot konto 1630

Skatteverket stämmer av skattekontot varje månad, och bokföringen ska visa samma saldo på konto 1630 Avräkning för skatter och avgifter. Under Avstämning → Skattekontot mot konto 1630 läser du in kontoutdraget, och programmet prickar av det mot bokföringens 1630-rörelser rad för rad. Differensen visas inte bara — den delas upp i det som förklarar den: rader i utdraget som inte är bokförda, verifikat på 1630 som inte står i utdraget, och utdragets ingående saldo. För varje obokförd rad finns ett konteringsförslag, räknat ur samma motor som resten av programmet konterar med.

  1. Hämta utdraget: logga in hos Skatteverket, gå till E-tjänster och blanketter → Skattekonto → Transaktioner och välj Bokförda (fritt datumintervall) eller Kontoutdrag (förvald period). Ladda ner filen — eller markera tabellen på skärmen och kopiera den.
  2. Klicka Förhandsgranska. Kontrollera att datum, text och belopp står i rätt kolumner, och att det Skatteverket belastat kontot med är negativt. Stämmer saldokedjan inte rad för rad säger programmet det och sparar ingenting förrän du bekräftat.
  3. Spara utdraget. Samma utdrag två gånger gör ingenting — innehållet räknas fram till en hash som bara får finnas en gång.
  4. Läs kortet högst upp: bokfört saldo på 1630, utdragets saldo, differensen och vad den består av. Posterna summerar till differensen — gör de inte det står det utskrivet hur mycket som är oförklarat.
  5. Gå igenom raderna utan verifikat. Har du redan bokfört händelsen prickas den av automatiskt (exakt datum och belopp, eller samma belopp inom tio dagar när det bara finns EN kandidat). Är den inte bokförd klickar du Bokför förslaget.

Bra att veta

  • Kontering per posttyp: inbetalning D 1630 / K 1930. Debiterad preliminärskatt K 1630 mot 2510 i aktiebolag och mot 2012 i enskild firma och handelsbolag — ägarens egen skatt är aldrig en kostnad i verksamheten. Moms mot 2650, arbetsgivaravgifter mot 2731, avdragen skatt mot 2710: de reglerar en skuld som redan är bokförd, de skapar ingen ny.
  • Intäktsränta på skattekontot är skattefri (inkomstskattelagen 8 kap. 7 §) och bokförs på 8314. Kostnadsräntan är inte avdragsgill (inkomstskattelagen 9 kap. 8 §) och går på 8423. Förseningsavgift och skattetillägg är offentligrättsliga sanktionsavgifter, inte skatter, och är inte avdragsgilla (inkomstskattelagen 9 kap. 9 §) — de går på 6992. Både 8423 och 6992 återläggs i årsavslutet.
  • Två rörelser på samma belopp inom tiodagarsfönstret prickas INTE av. Ett skattekonto har många rader på samma belopp, och en hopparning på måfå döljer just det avstämningen ska hitta.
  • Enskild firma använder normalt inte 1630 alls: skatterna är dina privata och går via 2012. Sidan säger det, och avstämningen fungerar först om du valt att lägga upp skattekontot på 1630.
  • Månadsavslutet läser samma utdrag. Ett av dess sju villkor är att skattekontot är avstämt för månaden, så en avstämning här bockar av villkoret där — och tvärtom: står villkoret rött är det den här sidan du ska öppna.

Vanliga fel och lösningar

Kolumnerna gick inte att känna igen
Exportvalen i e-tjänsten ger olika rubriker. Klistra in tabellen med rubrikraden i stället för att ladda upp filen, eller ladda ner den på nytt under Transaktioner → Kontoutdrag. Öppna inte filen i Excel före uppladdning — tal och teckenkodning ändras då.
En rad har inget förslag
Texten matchar ingen känd skattekontopost, eller så är det den slutliga skatten. Den slutliga skatten är en avräkning mot årets bokförda skatt och kan innehålla både skuld, reduktioner och en differens — den hör till årsavslutet. Programmet gissar hellre inte: bokför raden manuellt mot 1630 under Verifikat.
Differensen är ungefär lika stor som utdragets ingående saldo
Det är väntat, och det står i kortet högst upp. Bokföringens 1630 bär hela kontots historia medan utdraget täcker en period, så allt som bokförts före perioden ligger kvar som ingående saldo. Kortet räknar med den posten i uppdelningen — går ekvationen ihop är avstämningen klar, även när differensen inte är noll. Saknar utdraget saldokolumn går det ingående saldot inte att räkna fram, och då säger kortet hur mycket som är oförklarat i stället för att visa en uppdelning som ser fullständig ut.
Differensen finns kvar fast alla rader är bokförda
Då ligger skillnaden i verifikat på 1630 som inte står i det här utdraget — de listas i kortet högst upp. Vanligast är att de tillhör en annan period: läs in perioden de hör till innan du rättar något.
Jag prickade av fel rad
Klicka Lossa på raden. Verifikatet rörs inte. Rader som bokfördes härifrån går inte att lossa — rätta eller ta bort verifikatet under Verifikat, så försvinner kopplingen med det.
Autogiro: medgivanden och dragningar

Drar du återkommande avgifter — abonnemang, medlemsavgifter, träningskort — skapar programmet de två filer Bankgirot vill ha: medgivandeunderlaget och betalningsunderlaget. Filerna laddar du ned och lämnar till banken själv. Vi skickar ingenting, har ingen anslutning till Bankgirot och tar ingen avgift per dragning — samma sak som med betalfilen till leverantörerna.

  1. Teckna Autogiroavtal med din bank. Autogiro förutsätter ett eget bankgironummer och ett eget kundnummer hos Bankgirot (sex siffror, står i avtalet).
  2. Skriv in kundnumret under Inställningar → Få betalt av kunder → Autogiro och bankgironumret under Inställningar → Företaget, moms och F-skatt, i kortet Företagsuppgifter, moms och F-skatt. Öppningsposten i varje fil bär båda, så ingen fil kan skapas utan dem.
  3. Lägg upp medgivanden under Autogiro. Betalarnumret är ditt eget nummer på betalaren och den enda nyckeln mellan medgivandet och dragningen — det får aldrig återanvändas. Ett medgivande med bankkontonummer kräver clearingnummer, kontonummer och betalarens person- eller organisationsnummer i tolv siffror.
  4. Ladda ned medgivandefilen och lämna den till banken. De medgivanden som skickats får status Skickad och kommer inte med igen.
  5. Skapa en dragning ur obetalda kundfakturor för kunder med medgivande, ladda ned betalningsunderlaget och lämna det till banken. Lämnas betalningsdagen tom skrivs GENAST i filen — närmast möjliga bankdag.
  6. Inbetalningarna kommer tillbaka via banken och prickas av mot fakturorna i bankavstämningen, på OCR-numret precis som alla andra inbetalningar.

Bra att veta

  • Medgivandet är betalarens fullmakt att dra pengar från kontot. Programmet sparar därför både datumet det lämnades och hur — blankett, e-tjänst eller internetbank — och en makulering raderar aldrig raden utan sätter ett slutdatum.
  • Medgivanderaden bär clearingnummer, kontonummer och personnummer. Bara administratören ser och hanterar den; medarbetaren som skapar dragningen behöver bara betalarnumret.
  • Referensen i filen blir fakturans OCR-nummer. Det är den som gör att Bankgirots återredovisning går att pricka av mot rätt faktura.
  • Efter första nedladdningen är dragningen låst. Filen kan vara inlämnad, och då räcker det inte att ändra här — makulera dragningen hos Bankgirot före betalningsdagen i stället.

Vanliga fel och lösningar

Kunden syns inte i listan över fakturor att dra
Antingen saknar kunden ett medgivande, fakturan är inte bokförd, den är i annan valuta än kronor, eller så ligger den redan i en annan dragning. Två dragningar på samma faktura drar pengarna två gånger, så en faktura kan bara ligga i en.
"Ange personnummer med sekel eller organisationsnummer med de två inledande nollorna"
Ett tiosiffrigt nummer går inte att tolka entydigt: 5561234567 kan vara ett organisationsnummer utan nollorna eller ett personnummer utan sekel, och de två pekar på olika personer. Skriv personnummer som ÅÅÅÅMMDDNNNN och organisationsnummer som 00NNNNNNNNNN.
"Referensen innehåller tecknet … som inte finns i ISO-8859-1"
Bankgirots filformat är Latin-1. Svenska tecken går bra; emoji och andra tecken gör referensen oläslig, och då går inbetalningen inte att pricka av mot fakturan.
Lön, lönespecifikationer och AGI

För aktiebolag och handelsbolag: lägg upp anställda under Personal (namn, personnummer, månadslön, skatteavdrag enligt tabell, semesterregel och eventuell förmånsbil), kör lön under Lön — bruttolön, semesterlön, förmåner, arbetsgivaravgift, personalskatt och netto bokförs automatiskt på rätt konton. Arbetsgivaravgiften räknas med den procentsats som gällde på lönedatumet, så en lön som körs i efterhand får rätt års sats, och avgiften bokförs på 2731 i hela kronor precis som den deklareras i AGI:n. Örena går till 3740 öresutjämning så att avräkningskontot går jämnt ut. Nettolönen krediteras 1930 på lönedatumet och körningen markeras som utbetald samma dag, så bokföringen är klar i och med körningen. Själva utbetalningen gör du i internetbanken till kontot som står på den anställda under Personal. Varje körning ger en lönespecifikation som PDF (maskerat personnummer, ackumulerat i år) som mejlas till den anställda med ett klick, och en AGI-fil (XML på individnivå) för uppladdning hos Skatteverket senast den 12:e nästa månad (den 17:e i januari och augusti, och nästa vardag när dagen infaller på en helg — lagen om beräkning av lagstadgad tid 2 §). Programmet visar den dag som faktiskt gäller efter varje lönekörning.

Lön, lönespecifikationer och AGI

Bra att veta

  • Ge den anställda rollen Anställd (kopplad till personalregistret) så ser hen sina egna lönespecar under Min lön — och inget annat.
  • Skatteavdraget hämtar du ur Skatteverkets skattetabell för personens kommun — fråga Rådgivaren om du är osäker.
  • Semesterlagen ger två sätt att räkna semesterlön och lagen väljer inte åt dig: sammalöneregeln (16 a §) för vecko- och månadslön, procentregeln (16 b §) med tolv procent av intjänandeårets lön. Programmet frågar per anställd under Personal → Semester och räknar ingenting förrän du svarat. Väljer du sammalöneregeln behövs också antalet arbetsdagar per månad som lönen delas med — det talet står i anställnings- eller kollektivavtalet, inte i lagen, och programmet fyller inte i det åt dig.
  • Skattepliktiga förmåner registreras i lönekörningen och hamnar i rätt ruta i individuppgiften: 012 övriga förmåner, 013 bilförmån, 018 drivmedel vid bilförmån och 098 nettolöneavdrag för drivmedel. Bilförmånens värde räknas fram ur inkomstskattelagen 61 kap. 5–9 §§ när du registrerat bilen under Personal — nybilspriset hämtar du ur Skatteverkets billista, precis som skatteavdraget hämtas ur skattetabellen.
  • Ärlig begränsning: bostadsförmån, ränteförmån, sjukvårdsförsäkring och ett förmånsvärde som Skatteverket justerat räknas inte av programmet — de kräver värdetabeller eller beslut som inte följer med. Programmet säger det rakt ut i stället för att gissa, och de redovisar du direkt i Skatteverkets e-tjänst.

Vanliga fel och lösningar

"Lön för perioden är redan körd"
En anställd kan bara ha en körning per period. Blev den fel: rätta med ändringsverifikat och kontakta support för att justera underlaget.
Lön-sidan säger att lön gäller AB/HB
I enskild firma tar du inte lön — du gör egna uttag (se Skatt & eget uttag).
Semesterlöneskulden kan inte bokföras
Någon anställd saknar underlag — anställningsdatum, beräkningsregel eller, vid sammalöneregeln, arbetsdagar per månad. Listan på sidan Semesterlöneskuld säger vem och vad. En skuld som hoppat över en person ser rätt ut i balansräkningen och är fel i sak, så knappen öppnas först när alla är med.
"Statslåneräntan saknas" när bilförmånen ska räknas
Bilförmånens räntedel bygger på statslåneräntan vid utgången av november året före beskattningsåret (inkomstskattelagen 61 kap. 5 §). Ett nytt år kräver en ny rad i regeltabellen — programmet använder hellre ingen ränta än fjolårets.
Årsavslut, bokslut och deklaration — per bolagstyp

Årsavslutet guidar genom checklistan (alla månader låsta, momsperioder redovisade, reskontror avstämda, avskrivningar bokförda) och bokför sedan bokslutet, skapar nästa räkenskapsår med ingående balanser och låser året. Vad som bokförs beror på bolagstypen. Deklarationsunderlagen exporteras som SRU-filer som laddas upp i Skatteverkets filöverföringstjänst, och hela året kan tas ut som SIE 4 till revisorn.

Årsavslut, bokslut och deklaration — per bolagstyp
  1. Enskild firma: årets resultat 8999 → 2019, eget kapital-underkontona nollställs mot 2010. Förenklat årsbokslut (K1) och NE-bilagans rutor beräknas; SRU-filer NE + INK1.
  2. Aktiebolag: bolagsskatt beräknas på skattemässigt resultat och bokförs 8910 → 2510, årets resultat 8999 → 2099, och i nya året förs resultatet till 2098. Efter bolagsstämman bokför du resultatdispositionen (utdelning 2898, balanserat 2091) från samma sida. K2-årsredovisning att skriva ut, SRU-filer INK2/INK2R/INK2S.
  3. Handelsbolag: resultatet fördelas efter delägarnas andelar till 2019/2029/2039/2049 och varje delägares uttag, insättningar och resultat konsolideras till kapitalkontot. Underlag per delägare (kapital vid årets början och slut, uttag, insättningar, resultatandel) skrivs ut, och varje delägare får sin egen SRU-fil: N3A för fysisk person och dödsbo, N3B för en delägare som är juridisk person.
  4. Nästa räkenskapsår följer ditt räkenskapsår automatiskt — även brutet.

Bra att veta

  • Exportera SIE + arkiv innan du avslutar året — avslutet kan inte ångras.
  • Det som Skatteverket fastställer (bolagsskatt, egenavgifter) är preliminärt här; deklarationen är facit.
  • Rutan innan du avslutar året visar årets resultat, hur mycket av det som redan är bokfört på 8999 i importerad historik och exakt vilket belopp som bokförs nu. Är hela resultatet redan överfört bokförs inget nytt resultatverifikat.
  • Checklistan stämmer av reskontrorna mot de fakturor som var öppna på bokslutsdagen — även en faktura från ett tidigare år som fortfarande var obetald då, precis som saldot på 1510 och 2440 kräver. Finns ingen reskontra alls för året (SIE-importerad historik) är kontrollen uppfylld, för det finns inget att stämma av.
  • Aktiebolag: medelantal anställda till noten i årsredovisningen anger du på årsavslutssidan. Lämnar du fältet tomt räknas antalet fram ur lönekörningarna, vilket ger 0 för ett importerat år.
  • Beskattningsbar inkomst avrundas nedåt till helt tiotal kronor innan bolagsskatten räknas ut (1 kap. 7 § inkomstskattelagen). Sidan visar både det överskott som deklareras i INK2 och det avrundade underlaget.
  • Handelsbolag: blanketten följer vem delägaren ÄR, inte hur stor andelen är. En fysisk person eller ett dödsbo lämnar N3A som bilaga till sin Inkomstdeklaration 1; är delägaren ett aktiebolag eller ett annat handelsbolag lämnas N3B i stället, med den juridiska personens egen deklaration. Programmet väljer blankett ur delägarens uppgifter under Inställningar → Släppa in andra → Delägare, så fyll i om delägaren är fysisk eller juridisk person innan du hämtar filerna.

Vanliga fel och lösningar

Varför står det preliminär skatt i K2-årsredovisningen?
K2-årsredovisningen visar den beräknade bolagsskatten som en preliminär rad i resultaträkningen och som skatteskuld i balansräkningen så länge skatten inte är bokförd. Årets resultat i årsredovisningen är därmed samma tal som skatteberäkningen längre ned på sidan, och balansräkningen går ihop även i ett importerat år där resultatet redan är bokfört mot 2099. När du avslutar året bokförs skatten 8910 till 2510 och raden blir den bokförda skatten.
SRU-zipen innehåller en KONTROLL.txt
Då gick inte balansräkningens sidor ihop när räkenskapsschemat INK2R byggdes. Filen säger hur stor differensen är. Kontrollera att avskrivningar, skatt och årets resultat är bokförda, och att inga konton ligger utanför BAS kontointervall.
Rapporter & export

Resultat- och balansräkning, huvudbok och verifikationslista — för valfri period, som PDF eller CSV. SIE 4-exporten innehåller hela räkenskapsåret och läses av alla svenska bokföringsprogram och av din revisor. Exportfriheten är din yttersta säkerhet: allt kan alltid tas ut.

Rapporter & export

AI-funktionerna4 artiklar

Rådgivaren

Rådgivaren är en bokföringsexpert i chatten som läser din bokföring innan den svarar — saldon, verifikat, momsläge, obetalda fakturor — och söker på webben när den behöver färsk information. Den är tekniskt spärrad till läsning: den kan aldrig ändra något. Svaret skrivs fram medan det kommer, mening för mening, så du kan börja läsa direkt — och räcker de första raderna klickar du Avbryt svaret: det som redan hunnit skrivas står kvar i samtalet. Konversationerna sparas per användare i historiken.

Rådgivaren

Bra att veta

  • Fråga konkret: "kan jag dra av lunch med en kund?", "hur ser mitt momsläge ut?", "vad kostar ett uttag på 30 000?".
  • Rådgivaren kräver en Anthropic-nyckel (webbsökningen) — AI-bokföraren fungerar däremot med valfri modell, även lokal.
  • Svaren är vägledning, inte rådgivning — dubbelkolla viktiga beslut.
Egna konteringsregler och egen kunskap

Under Inställningar → AI-bokföraren finns två fritextfält: Konteringsregler styr AI-bokförarens förslag (t.ex. "alla inköp betalas privat → kreditera 2018"), och Egen kunskap till AI-rådgivaren ger rådgivaren kontext om just ert företag (bransch, rutiner, vanliga motparter). Ingetdera kan skriva över de hårdkodade säkerhets- och bokföringsreglerna. Alla ändringar sparas i en historik med vem och när.

Egna konteringsregler och egen kunskap
Lokal AI-modell

Vill du inte skicka underlag till en molnleverantör: kör en OpenAI-kompatibel modell lokalt (Ollama, LM Studio) och ange endpointen under Inställningar → AI-bokföraren → Egen/lokal modell. Läs villkoret FÖRST, för det avgör om vägen alls är öppen för dig: det förutsätter att programmet kör på samma maskin som modellen. Kör du programmet i molnet ska fältet lämnas tomt — localhost är då serverns egen adress och inte din dator, programmet avvisar adressen redan vid sparning, och en ifylld adress kopplar dessutom bort din API-nyckel. Går programmet på egen maskin (pnpm dev eller självhostning) skriver du http://localhost:11434/v1; kör modellen på en egen server skriver du dess https-adress, t.ex. https://llm.mitt-foretag.se/v1. Modellnamnet skrivs INTE i fältet AI-modell — det är en rullgardin med Claude-modeller. Låt den stå kvar på standardvalet, så kör programmet llama3.1 mot din adress; en annan lokal modell väljer du med miljövariabeln AI_MODEL. AI-bokföraren fungerar då helt utan att något lämnar din infrastruktur, och kostnaden är noll. Rådgivarens webbsök kräver fortfarande en Anthropic-nyckel.

Lokal AI-modell
AI-förbrukning och kostnader

AI-förbrukning (menyn, endast administratörer) visar varje AI-anrops tokens, svarstid och en uppskattad kostnad — per månad, funktion och dag. Kostnaden beräknas när anropet görs och fryses med sin prisversion, så historiken räknas aldrig om. Sätt en månadsbudget så visas en varning när uppskattningen når den — det hårda taket sätter du hos AI-leverantören. Vi stänger med flit aldrig av något åt dig: budgeten här varnar, den spärrar inte.

AI-förbrukning och kostnader

Bra att veta

  • Modellvalet under Inställningar → AI-bokföraren styr priset, och spannet är fem gånger. Leverantörens pris per miljon tokens in/ut: Claude Haiku 4.5 kostar 1/5, Claude Sonnet 5 (standardvalet) 2/10, Claude Opus 5 5/25 och Claude Fable 5 10/50. Etiketten bäst, dyrast säger ingenting om att konteringen blir bättre — byt först när ett underlag faktiskt blir fel.
  • Så känns det hårda taket när det slår till: alla AI-ytor slutar fungera SAMTIDIGT — AI-bokföraren, inköpslistan, tolkningen av leverantörsfakturor, Rådgivaren, AI-supporten i supportbubblan och marknadens textförslag. Nekandet kommer från leverantören, så statusraden under Nycklar & kopplingar kan mycket väl fortsätta visa aktiv: den vet bara att nyckeln finns. Kör Testa AI-kopplingen under Inställningar → AI-bokföraren, så står orsaken i klartext.
  • Slut krediter känns likadant. Fyll på under Settings → Billing → Buy credits hos Anthropic, så fungerar allt igen direkt — ingenting behöver konfigureras om.

Marknad7 artiklar

Koppla Facebook och Instagram

Marknad publicerar genom ERA egna konton och ERA egna nycklar. Ni skapar en egen app hos Meta, ni är dess administratör, och nyckeln ligger i er installation — vi kan inte publicera åt er ens om vi ville. Det är också därför ni slipper det som annars gör Meta-kopplingar tunga: ingen granskning hos Meta krävs, eftersom granskning enligt Metas egna villkor krävs först när appen ska användas av någon UTAN roll i den. Ni har rollen — appen kan stå kvar i utvecklingsläge för alltid, och Live-vippan högst upp lämnas orörd. Räkna med ett kvarts arbete, en gång. Bilderna till den här artikeln läggs till när uppsättningen körts skarpt en gång — Metas panel har byggts om flera gånger, och en skärmdump som inte stämmer är sämre än ingen.

Hela uppsättningen steg för steg (docs/META-PUBLICERING.md)
  1. Skapa appen i företagets namn Skapa en app på developers.facebook.com, i ert eget företags namn — men döp den utan orden Facebook, Instagram eller Meta i namnet, det tillåter Meta inte. Vid use case-steget: välj Other (i skrivande stund märkt "going away soon" — den kan alltså ha bytt plats eller namn) och därefter apptypen Företag. Knappar: Mina appar → Skapa app → Other → Företag. Resultat: Appen finns i listan Mina appar, med apptypen Företag. Ingen granskning hos Meta krävs, eftersom granskning enligt Metas egna villkor krävs först när appen ska användas av någon UTAN roll i den. Ni har rollen — appen kan stå kvar i utvecklingsläge för alltid, och Live-vippan högst upp lämnas orörd.
  2. Lägg till de två produkterna Lägg till Facebook-inloggning för företag och Instagram. Utan den första kan ingen logga in och delegera åt oss; utan den andra når vi ingen Instagram-publicering. Instagram-produktens egen sida vill leda in er i "API setup with Instagram business login" (Add account, webhooks) — hoppa över hela det avsnittet, vår väg är Facebook-inloggningen. Knappar: Lägg till produkt → Facebook-inloggning för företag → Instagram. Resultat: Båda produkterna står i vänstermenyn under appen.
  3. Klistra in callback-adressen hos Meta Kopiera callback-adressen nedan och klistra in den hos Meta under Valid OAuth Redirect URIs. Meta jämför tecken för tecken: går programmet att nå både med och utan www måste BÅDA adresserna stå i listan, och en förhandsadress hos Vercel byter namn vid varje driftsättning. Programmet varnar för båda fallen bredvid adressen. Knappar: Facebook-inloggning för företag → Inställningar → Valid OAuth Redirect URIs → Spara ändringar. Valid OAuth Redirect URIs: adressen som står i kortet (Kopiera den med knappen — skriv den aldrig av.) Resultat: Adressen står i listan hos Meta, tecken för tecken lika med den här.
  4. Ange adressen till er integritetspolicy Ange en adress till er integritetspolicy PÅ ER EGEN PUBLIKA WEBBPLATS. Meta kräver att deras robot kan nå den, så den kan inte peka på den här installationen — kör ni lokalt eller bakom brandvägg är installationen per definition onåbar. En text att klistra in finns i docs/INTEGRITETSPOLICY-MALL.md. Knappar: Inställningar → Grundläggande → Webbadress för integritetspolicy. Resultat: Fältet är ifyllt och adressen går att öppna i ett privat fönster. En trasig länk är enligt Metas villkor grund för åtgärd mot appen. Den kontrolleras av en robot, inte av en människa som förstår att ni menade väl.
  5. Kopiera App-ID och App-hemlighet hit Hämta App-ID och App-hemlighet från HUVUDappens App settings → Basic (Inställningar → Grundläggande). Klistra in dem i fälten nedanför den här guiden, spara — och tryck Koppla. Ni skickas till Meta, loggar in och godkänner. Därefter väljer NI vilken sida Marknad ska publicera till; programmet väljer aldrig åt er. Knappar: Inställningar → Grundläggande → Visa → Spara → Koppla. App-ID: 1234567890123456 (En identifierare, ingen hemlighet.) App-hemlighet: ••• (Ett lösenord. Klistras in en gång och visas aldrig igen.) Resultat: Kanalkortet står på Kopplad, och sidväljaren frågar vilken sida ni vill publicera till.
  6. Steget alla glömmer: Valet i wizardens use case-steg går INTE att ändra efteråt. Rätt väg är Other och därefter apptypen Företag. Väljer ni "Create an app without a use case" får appen apptypen Ingen, som inte kan få våra produkter — och enda vägen ur det är att skapa en ny app.

Bra att veta

  • Nycklarna är två och de dör olika. Publiceringsnyckeln har ingen utgång alls; statistiknyckeln lever omkring 60 dagar. Går statistiknyckeln ut tystnar statistiksidan medan publiceringen fortsätter som vanligt — det är inte ett fel, och kortet säger vilken av dem som gått ut.
  • Meta varnar aldrig när en nyckel slutar gälla; det står ordagrant i deras dokumentation. Programmet kontrollerar därför nyckeln varje natt, växlar den automatiskt vid 20 dagar kvar och hör av sig vid 14 om växlingen inte gått igenom.
  • Den nattliga kontrollen håller dessutom appen vid liv. Nittio dagar utan ett enda anrop mot Meta och samtliga nycklar ogiltigförklaras, utan väg tillbaka — en firma som publicerar två gånger per kvartal skulle annars ligga i riskzonen.
  • Vissa Facebook-sidor kräver en extra behörighetsprövning hos Meta (Page Publishing Authorization) innan de går att publicera till. Det går inte att läsa av i förväg — Meta skriver själva att det inte finns något sätt för en app att avgöra det. Gör den i sidans inställningar innan ni behöver den.
  • Kopplade ni med bara grundbehörigheterna går det att utöka i efterhand: knappen Be om fler behörigheter på kanalkortet skickar er till Meta igen och lägger till meddelanden och statistik utan att kopplingen görs om från början. För Instagram-meddelanden krävs dessutom en inställning i mobilen: Instagram-appen → Inställningar → Meddelanden → tillåt åtkomst för anslutna verktyg. Utan den lämnar Meta inte ut era meddelanden till något verktyg alls.
  • LinkedIn och Google Företagsprofil finns inte som kanaler. LinkedIn kräver ett partnerprogram för att få publicera som företaget — det enda de släpper fritt publicerar som DIG som person, vilket bryter mot det Marknad lovar. Google kräver att varje företag ansöker om åtkomst per eget Cloud-projekt och väntar på manuellt godkännande. Båda står som Kommer senare, och båda omprövas när nästa Meta-version pinnas.

Vanliga fel och lösningar

Statistiksidan är tom fast publiceringen fungerar
Två möjliga skäl, och kortet säger vilket. Antingen har statistiknyckeln gått ut — den är en annan nyckel än den som publicerar och lever bara omkring 60 dagar. Eller så har kontot under 100 följare: Meta lämnar inte ut följarsiffror alls under den gränsen, och det är normalfallet för ett nystartat konto.
Meddelanden-fliken i Inkorgen finns inte hos oss
Fliken tänds av behörigheterna, inte av var programmet kör — meddelanden hämtas med samma pollning som kommentarerna och fungerar även bakom brandvägg. Tryck Be om fler behörigheter på kanalkortet (pages_messaging för Messenger, instagram_manage_messages för Instagram), och slå på "tillåt åtkomst för anslutna verktyg" i Instagram-appens meddelandeinställningar. Kommentarer fungerar oavsett.
Ett inlägg gick ut på Facebook men inte på Instagram
De två har olika klockor och olika krav. Facebook schemaläggs HOS META och går ut även om programmet är avstängt; Instagram schemaläggs hos er installation. Dessutom hämtar Meta bilden själv vid publicering, så en helt lokal bildlagring bakom brandvägg går inte att nå. Kalenderkortet skriver ut vilken klocka som gäller per kanal, och det röda kortet visar Metas eget svar i klartext.
Hur felsöker jag när något inte fungerar?
Tryck Testa anslutningen på kopplingskortet. Panelen säger vilket STEG som fallerade och visar Metas eget svar osammanfattat — den raden fungerar även när den här artikelns bilder blivit gamla. Kopplingens historik längst ned visar dessutom varje förnyelse, varje test och varje avbrott med tidpunkt.
Kopplingen faller direkt när jag trycker Koppla
Nästan alltid callback-adressen. Meta jämför den tecken för tecken mot det som står under Valid OAuth Redirect URIs — ett saknat www, ett bortglömt snedstreck eller en förhandsadress som bytt namn räcker. Kopiera adressen med knappen i kortet i stället för att skriva av den.
Instagram-sidan visar ett eget app-id — ska jag ta det?
Nej. Instagram-produktens egen sida visar ett eget "Instagram app ID" och "Instagram app secret" — det är FEL nycklar, och kopplingen fungerar inte med dem. Ta HUVUDappens värden under Inställningar → Grundläggande.
Meta-dialogen frågar inte om behörigheterna, den bara släpper igenom mig
Meta återanvänder era tidigare inställningar när ni redan godkänt appen en gång — dialogen visar då bara en Fortsätt-knapp, och det ni ville lägga till beviljas aldrig. Välj Redigera inställningar i dialogen i stället, så visas behörigheterna på nytt och ni kan bevilja dem igen.
Min Facebook-sida finns inte i sidväljaren
En sida som ägs av en företagsportfölj kan saknas i listan Meta lämnar ut, trots att ni har fullständig åtkomst till den. Sidväljaren har därför ett eget fält för sidans id: skriv in det där, så hämtas sidan direkt i stället för via listan. Sidans id står i Meta Business Suite under Sidor.
Skriv, publicera eller schemalägg ett inlägg

Ett inlägg föds som utkast och kommer bara vidare genom ett klick. Det är inte en artighet utan hur programmet är byggt: varken en automatik, en nattkörning eller AI:n kan flytta ett inlägg ur utkast. Vägen är Skapa → Förhandsgranska → Publicera nu eller Schemalägg → Publicerad. Två knappar, två utfall: Publicera nu skickar inlägget till Facebook och Instagram i samma klick, Schemalägg lägger det i kön till en tid ni väljer.

  1. Marknad → Skapa inlägg. Menygruppen börjar där med flit — man skriver först och planerar sen. Ordningen i menyn är Skapa inlägg, Mina utkast, Kalender, Inkorg, Statistik, Webbanalys och Mediabank.
  2. Välj kanaler (de är klickbara kort), skriv texten och lägg till bilder ur Mediabanken. Instagram kräver minst en bild; Facebook gör det inte.
  3. Har ni lagt in en AI-nyckel finns kortet Skriv med AI. Välj ton och tryck Generera utkast — förslaget hamnar i TEXTRUTAN, aldrig i flödet, och ni ändrar fritt innan något sparas.
  4. Titta på förhandsvisningen. Vi kortar aldrig er text åt er: räknaren säger vad som händer på varje kanal, och rutan visar hur den ser ut.
  5. Ska det ut nu: tryck Publicera nu, den primära knappen längst till höger. Inlägget går till valda kanaler direkt, och ni får ett kvitto — "Ute på Facebook och Instagram ✓" med en länk till det riktiga inlägget, hämtad ur Metas svar. Gick en kanal inte igenom står den för sig med Metas eget svar i klartext, hellre än en grön bock över allt.
  6. Ska det ut senare: välj tid och tryck Schemalägg. Är ni fler än en skrivande användare hamnar en medarbetares inlägg på Väntar godkännande tills administratören godkänner det i kalendern — det gäller Publicera nu lika mycket som en schemaläggning.
  7. Är ni inte klara: tryck Spara utkast. Utkastet hamnar på Marknad → Mina utkast med senast ändrat överst, och menyraden visar en siffra så länge något ligger och väntar. Ett utkast har ingen tid och syns därför aldrig i kalendern.
  8. Följ inlägget i kalendern. Färgen säger var det står, och kortet säger vilken kanal som håller klockan.

Bra att veta

  • Två klockor, och skillnaden är fysisk. Facebook schemaläggs HOS META och går ut även om datorn är avstängd. Instagram har ingen sådan funktion — där håller er egen installation tiden, och en dator som sover när klockan slår missar inlägget. Kalenderkortet skriver ut vilket som gäller.
  • Facebook behöver minst tjugo minuters framförhållning — men BARA för schemalagda inlägg. Meta kräver tio räknat från att vi lämnar över inlägget, och överlämningen sker inom fem minuter; tjugo är de talen plus marginal, inte en siffra vi hittat på. Publicera nu går som ett vanligt inlägg, förbi Metas schemaläggare, och har inget framförhållningskrav alls.
  • Drar ni ett redan överlämnat Facebook-inlägg till en annan dag ligger det kvar på den gamla tiden HOS META tills kön hunnit flytta det där också. Kortet säger det rakt ut i stället för att visa en tid som inte gäller ännu.
  • Bilder konverteras till JPEG och beskärs när ni laddar upp dem, inte när inlägget ska ut — och beskärningen visas innan bilden sparas. JPEG är Metas enda bildformat, och ett fel om det tre dagar senare går inte att förklara i efterhand.
  • Tidsförslaget påstår aldrig mer än underlaget bär. Står det "er bästa tid" är den räknad ur era egna publicerade inlägg och raden säger hur många. Har ni färre än ett tjugotal står det i stället att det är en vanlig tid.

Vanliga fel och lösningar

Inlägget står som Misslyckades
Kortet visar Metas eget svar i klartext. Handlar det om nyckeln eller behörigheten står Behöver omkoppling — då hjälper inget omförsök, utan kopplingen görs om under Inställningar → Publicera i sociala kanaler, på kortet Sociala kanaler. Är felet övergående försöker programmet igen efter 1, 5 och 25 minuter innan det ger upp, och knappen Försök igen ställer inlägget i kön på nytt utan att röra tiden.
Det står Delvis publicerat
Inlägget gick ut på en kanal men inte på den andra — oftast Facebook men inte Instagram. Det är varken publicerat eller misslyckat, och därför har det en egen färg. Vanligaste orsaken är att Meta inte kunde hämta bilden: Meta hämtar den själv över internet, så en installation med helt lokal lagring bakom brandvägg når de aldrig.
Går det att publicera direkt, utan att schemalägga?
Ja. Publicera nu är den primära knappen i composern och skickar inlägget till valda kanaler i samma klick — Facebook som ett vanligt inlägg utan Metas schemaläggare, vilket också tar bort kravet på tjugo minuters framförhållning. Löftet är oförändrat och det är fortfarande programmets enda absoluta: ingenting lämnar installationen utan ett uttryckligt klick, på Publicera nu eller på Schemalägg. Varken automatik, nattkörning eller AI kan göra det åt er.
Var ligger utkasten jag inte publicerat?
På Marknad → Mina utkast, en egen menyrad med senast ändrat överst och en siffra så länge något ligger där. Utkasten låg tidigare i kalendern, men ett utkast har ingen tid och hörde aldrig hemma där. Siffran räknar påbörjat arbete som väntar på ett beslut — den räknar aldrig schemalagda inlägg, som redan fått sitt.
Kan jag ta bort ett inlägg som redan är schemalagt?
Ett inlägg som ännu inte lämnat installationen tar ni bort som vanligt. Har Facebook redan fått det går det inte att ta bort härifrån — att dölja det för er hade inte tagit bort det hos Meta. Ta bort det i Metas egen planerare i stället.
Statistiken: vad talen bygger på

Statistiken hämtas varje natt och lagras hos er. Det är inte en cache utan ett arkiv: Meta sparar bara nittio dagar av sina egna mätetal, så allt äldre än så finns bara här — och bara om vi skrev ned det från dagen ni kopplade. Sidan gör aldrig ett anrop till Meta när ni öppnar den, och därför står era siffror kvar även den natt Meta inte svarar.

  1. Marknad → Statistik. Välj period 7, 30 eller 90 dagar — knapparna räknar om på plats och hämtar ingenting nytt.
  2. Kolumnerna högst upp är räckvidd, interaktioner, följare och er bästa publiceringstid. Ett streck betyder att vi inte har mätt, aldrig att svaret är noll.
  3. Diagrammet visar tolv veckor — längre än perioden ovan, så att trenden syns. Den innevarande veckan är nedtonad därför att den alltid är ofullständig.
  4. Insiktsraden skrivs av AI:n men räknas av oss. Tryck Visa underlaget för att se exakt de rader som skickades.
  5. Exportera ger en semikolonseparerad fil med samma rader som sidan visar.

Bra att veta

  • Statistiken går på en ANNAN nyckel än publiceringen. Den som publicerar har ingen utgång; den som hämtar statistik lever i ungefär sextio dagar och växlas automatiskt innan dess. Går den ändå ut säger sidan "statistiken har tystnat" medan inläggen fortsätter gå ut precis som vanligt.
  • Metas siffror kan släpa upp till fyrtioåtta timmar. Den innevarande veckan är alltså alltid ofullständig, och det är väntat — inte ett ras.
  • Under hundra följare lämnar Meta inte ut följarsiffror alls. För ett nystartat konto är det normalfallet de första månaderna, och sidan skriver ut skälet i stället för att visa fyra nollor.
  • "Bästa tid att publicera" finns inte som data från Meta — den metriken är borttagen. Talet räknas ur ERA EGNA inlägg, och rutan säger hur många det bygger på. Under ett tjugotal inlägg visas den inte alls: trettiofem rutor över femton inlägg är gissningar, inte statistik.

Vanliga fel och lösningar

Varför är toppinläggstabellen tom?
Siffror per enskilt inlägg hämtas inte som förval. Metas mätetal för hela kontot är dokumenterade och belagda; formen på mätetalen per inlägg är det inte, och vi skriver hellre ingen siffra än en vi inte kan stå för. Tabellen tänds när formen är bekräftad mot ett skarpt konto.
Kurvan ligger platt sedan en vecka
Titta på raden längst ned: den säger när vi senast hämtade. Har hämtningen inte körts på flera dygn är det schemat som står still, inte er räckvidd. Är hämtningen körd men misslyckad står Metas eget svar överst på sidan.
Varför visar Meta andra tal än ni?
Vi frågar efter dygnsvärden och summerar dem över perioden ni valt; Metas egen app visar ofta unika värden över perioden. Två olika frågor ger två olika svar, och båda är riktiga. Vi väljer dygnsvärdena därför att de går att spara och jämföra bakåt — Metas periodvärden går inte att bygga en historik av.
Webbanalys och Annonsanalys: vad besöken gjorde, och vad de kostade

Besöksinsikten bor på TVÅ ytor sedan 2026-09-09, och de svarar på olika frågor. Marknad → Webbanalys svarar på vad besöken GJORDE på sajten: källor, dygn, veckorytm och landningssidor, ett block per mätverktyg. Marknad → Kampanjuppföljning → Annonsanalys svarar på vad besöken KOSTADE och FAKTURERADE: tratten källa/kampanj → order → fakturerat → betalt, där de tre sista stegen är KRONOR ur er egen huvudbok, kreditnota-justerade — den delen fungerar utan en enda nyckel och kan inget annat verktyg visa. Trattens topp — besöken före ordern och annonsklicken före besöken — fylls av era EGNA konton: PostHog, Google Analytics 4 och Meta-annonskontot, var och en frivillig och oberoende. Programmet lägger ALDRIG en pixel, ett skript eller en kaka på er webbplats: det läser aggregat — antal per dygn, källa och sida — server-sida en gång per dygn, och inga personuppgifter hämtas någonsin. Skillnaden mot Statistik-sidan är vad som mäts: Statistik mäter INLÄGGET (räckvidd, interaktioner), Webbanalys mäter BESÖKET. De slås aldrig ihop.

Hela uppsättningen steg för steg (docs/BESOKARINSIKT.md)
  1. Marknad → Webbanalys för besöken, Marknad → Kampanjuppföljning → Annonsanalys för kronorna. Båda har samma periodväljare, och den är bokföringens — innevarande månad, kvartal eller räkenskapsår, aldrig "senaste 30 dagarna": kronorna läses ur perioder som kan vara låsta, och en rullande period som skär mitt i en låst går inte att stämma av mot något.
  2. Utan kopplad besöksstatistik börjar tratten vid ordern, och hålet före den står namngivet i vyn — det är inte ett fel, det är ärlighet. Webbanalys visar då ett kom-igång-kort i stället för fyra nollor. Vill ni se besöken: Inställningar → Mäta besök och annonser → Webbanalys.
  3. Tre oberoende kopplingar fyller trattens topp, och de kostar olika mycket arbete: PostHog cirka tre minuter, Meta-annonsklicken två (ingen ny nyckel — de läses med Marknads befintliga koppling), GA4 tjugo till trettio genom fyra Google-system. Har ni PostHog räcker den ensam. Varje uppsättning står steg för steg nedan och på kortet Inställningar → Mäta besök och annonser, där ni faktiskt gör den.
  4. Välj var er PostHog bor EU Cloud, US Cloud eller en egen instans. Kör ni självhostad PostHog anger ni adressen till er instans (https) — men det stödet är bästa förmåga: självhostad PostHog är enligt PostHog själva officiellt osupportad och saknar taggade utgåvor. Region: EU Cloud (Ett val, inte ett fält.) Resultat: Regionväljaren står på er region, och fältet för projekt-id tänds.
  5. Hämta projekt-id:t Projekt-id:t är ett tal — inte projektets namn och inte en nyckel. Det står i PostHog under Settings → Project. Knappar: Settings → Project. Projekt-id: 12345 (Ett rent tal.) Resultat: Talet står i fältet Projekt-id på kortet.
  6. Skapa en API-nyckel med bara läsrätt för frågor Skapa en API-nyckel i PostHog med läsrätt för frågor — scopet heter Query Read i PostHogs gränssnitt — och ingenting mer. Finns projektbundna nycklar i er PostHog: ta en sådan. En personlig nyckel slutar gälla den dag personen lämnar kontot. Knappar: Settings → Personal API keys → Create personal API key → Query Read. API-nyckel: phx_… (Klistras in på kortet och admin-låses.) Resultat: Nyckeln är sparad, och kortet visar Nyckel sparad utan att någonsin visa värdet.
  7. Svara på samtyckesfrågan och testa kopplingen Svaret på "Kör ni samtyckesbanner?" återges ordagrant som en mätlägesrad på fliken. Någon samtyckesgrad räknas aldrig fram — besök som nekat samtycke finns inte i någon data. Tryck sedan Testa kopplingen. Knappar: Testa kopplingen. Resultat: Testet svarar ja, och Webbanalys byter från kom-igång-kortet till besökssiffror efter nattjobbet (03:40) — eller direkt om ni trycker Hämta nu.
  8. Steget alla glömmer: Adressen i er insamlingssnippet (eu.i.posthog.com / us.i.posthog.com) är ett INSAMLINGSVÄRDE och svarar aldrig på frågor. Därför är regionen ett val i en meny här, inte ett fält — läsadressen kan programmet själv.
  9. Hämta egendoms-id:t i GA4 Egendoms-id:t är ett rent tal och står i GA4 under Administratör → Egendomsinformation, uppe till höger. Det är INTE mät-id:t G-XXXXXXX ur spårningskoden — det talet fungerar inte här. Knappar: Administratör → Egendomsinformation. Egendoms-id: 123456789 (Ett rent tal, inte G-XXXXXXX.) Resultat: Talet står i fältet Egendoms-id på kortet.
  10. Aktivera Google Analytics Data API API:et måste slås på en gång, i ett Google Cloud-projekt. Öppna console.cloud.google.com, välj ETT BEFINTLIGT projekt (skapa inget nytt om ni redan har ett — tjänstekontot behöver bara ett hem). Det är ett annat API än Google Analytics Admin API, och det är Data API:et som läser siffrorna. Knappar: APIs & Services → Library → Google Analytics Data API → Enable. Resultat: API:et står som Enabled i projektet. Aktiveringen kostar ingenting och kvoten är i praktiken ett icke-problem — testet visar hur mycket av dygnets kvot som är kvar.
  11. Skapa ett tjänstekonto med NOLL roller Tjänstekontot är den identitet programmet läser som. Det ska INTE ha några IAM-roller alls i Google Cloud — hoppa över rollsteget helt. Läsrätten ges i GA4, inte här. Knappar: IAM & Admin → Service Accounts → Create service account → Done. Service account name: bokforing-lasare Grant this service account access: hoppas över — noll roller Resultat: Tjänstekontot står i listan, med en e-postadress som slutar på .iam.gserviceaccount.com.
  12. Ladda ner JSON-nyckeln och klistra in den Skapa en nyckel av typen JSON och klistra in hela filens innehåll i fältet på kortet. Programmet delar filen vid sparandet och visar ett kvitto på delningen direkt i kortet, så ni ser vad som behölls och vad som slängdes. Knappar: Keys → Add key → Create new key → JSON → Create. JSON-nyckelfil: hela filens innehåll Resultat: Kortet visar tjänstekontots e-postadress som synlig identifierare — den privata nyckeln blir den enda hemligheten och admin-låses, och allt annat i filen kastas. Vi lagrar mindre än vi fick: projekt-id, certifikat-adresser, nyckel-id och id-nummer kastas. Behöver ni adressen igen för nästa steg står den kvar i kortet; nyckeln renderas aldrig.
  13. Lägg tjänstekontot som Läsare på GA4-egendomen Detta är steget alla glömmer. Kopiera tjänstekontots e-postadress ur kortet och lägg till den som Läsare PÅ EGENDOMEN i GA4 — inte i Google Cloud. Tryck sedan Testa kopplingen. Knappar: Administratör → Åtkomsthantering för egendom → + → Lägg till användare → Läsare → Lägg till. E-postadress: bokforing-lasare@DITT-PROJEKT.iam.gserviceaccount.com (Står kvar i kortet efter delningen — kopiera den därifrån, skriv den aldrig av.) Resultat: Testa kopplingen svarar ja, och GA4-blocket dyker upp på Webbanalys.
  14. Steget alla glömmer: Tjänstekontots adress måste läggas som Läsare PÅ GA4-EGENDOMEN — i GA4 under Administratör → Åtkomsthantering för egendom. INTE som IAM-roll i Google Cloud, där ska rollerna vara noll. Det är det steget ett 403-svar nästan alltid betyder.
  15. Skriv in annonskonto-id:t Annonsklicken kostar ingen ny nyckel: de läses med Marknads befintliga Meta-koppling. Id:t står i Annonshanteraren och börjar med act_. Annonskonto-id: act_1234567890 (Står i Metas annonshanterare.) Resultat: Klickkortet och avstämningsraden fylls på Annonsanalys.
  16. Se till att kopplingen bär behörigheten Annonsklick Varnar annonskortet om behörigheten Annonsklick betyder det att er Meta-koppling inte bär ads_read ännu. Tryck Be om fler behörigheter på kanalkortet under Inställningar → Publicera i sociala kanaler — och välj Redigera inställningar i Metas dialog, annars återanvänder Meta era gamla val och behörigheten beviljas aldrig. Knappar: Be om fler behörigheter → Redigera inställningar. Resultat: Varningen på annonskortet försvinner, och klicken börjar hämtas av nattjobbet.
  17. Steget alla glömmer: Kopplingen måste bära behörigheten Annonsklick (ads_read). Saknas den räcker det inte att trycka Be om fler behörigheter — välj Redigera inställningar i Metas dialog, annars återanvänder Meta era gamla val och det nya beviljas aldrig.

Bra att veta

  • Trattens grundmening: botten är räknad ur huvudboken och är EXAKT. Toppen är vad mätverktyget fick mäta och är ett GOLV — inte ett facit. Därför gör en samtyckesbanner aldrig kronsiffrorna fel: varje order är räknad, även när besöket som ledde till den nekade mätning.
  • Källorna summeras aldrig. GA4-sessioner, PostHog-sessioner och Meta-klick mäter olika saker med olika definitioner — en hopslagen "totalt antal besök" vore en osanning som ser ut som precision. De står bredvid varandra, var och en med sin källa utskriven.
  • Ny kund och återköp redovisas var för sig i kampanjtabellen. Kampanjen som värvade kunden äger kundens senare köp (första kampanjen vinner) — utan delningen ser en gammal kampanj ut att sälja i evighet.
  • Ohänförd trafik och ohänförda intäkter hamnar i en namngiven rad "Utan kampanj" — aldrig bortsorterade, aldrig utspridda på de andra raderna.
  • Siffrorna hämtas av ett nattjobb (03:40) som rättar de senaste fjorton dygnen varje natt — analyssiffror är inte slutgiltiga direkt. Sidorna läser aldrig ett API när ni öppnar dem, och färskhetsstämpeln per källa är alltid synlig. Hämta nu ligger på Webbanalys och går en gång i timmen.
  • Avstämningsraden är den rad ingen annan kan visa: Metas klick, besöksstatistikens sessioner, ordrarna och de bokförda kronorna i samma mening — annonsplattformen känner inte fakturan, bokföringsprogrammen känner inte annonskontot. Annonskontots kostnadssiffra är statistik och blir aldrig ett verifikat; fakturan är underlaget.

Vanliga fel och lösningar

Vad händer med JSON-filen jag klistrar in?
Programmet delar den vid sparandet och visar ett kvitto på delningen direkt i kortet, så ni ser vad som behölls och vad som slängdes: tjänstekontots e-postadress behålls som synlig identifierare, den privata nyckeln blir den enda hemligheten och admin-låses, och allt annat i filen kastas — projekt-id, certifikat-adresser, nyckel-id, id-nummer. Vi lagrar mindre än vi fick. Behöver ni adressen igen för att lägga den som Läsare på egendomen står den kvar i kortet; nyckeln renderas aldrig.
Annonskortet varnar om behörigheten Annonsklick
Er Meta-koppling bär inte ads_read ännu. Tryck Be om fler behörigheter på kanalkortet under Inställningar → Publicera i sociala kanaler — och välj Redigera inställningar i Metas dialog, annars återanvänder Meta era gamla val och det nya beviljas aldrig.
Varför visar GA4:s egen panel fler besök än fliken?
Fliken visar vad som hämtats till och med i går — nattjobbet går 03:40 och dagens besök finns inte här ännu. Dessutom är toppen ett golv: besök som nekat mätning finns inte i någon data. Färskhetsstämpeln på kortet säger exakt vad siffrorna täcker.
Kan jag se vilka personer som besökte sajten?
Nej, och det går inte att slå på. Frestelsen saknas i koden: frågorna mot analysverktygen är registrerade på ett ställe, och ett maskinellt prov underkänner varje fråga som rör en identitet eller saknar aggregat. Kopplingen mot ordrarna sker enbart via utm-parametrar — en webbadress, ingen identitet.
Besökskortet visar gamla siffror och en mening om att PostHog var upptaget
PostHogs frågetak gäller hela er organisation, inte bara vår nyckel — en strypt natt visas som en mening med senaste lyckade hämtningsdatum, aldrig som en nolla. Programmet backar och försöker igen nästa natt; Hämta nu på Webbanalys går en gång i timmen om ni inte vill vänta.
GA4-testet säger att mitt id är ett mät-id
G-XXXXXXX är mät-id:t ur spårningskoden — fel tal. Egendoms-id:t är ett rent tal och står i GA4 under Administratör → Egendomsinformation, uppe till höger.
GA4-testet svarar 403 fast nyckeln är rätt
Det är steget alla glömmer: tjänstekontots adress måste läggas som Läsare PÅ GA4-EGENDOMEN — i GA4 under Administratör → Åtkomsthantering för egendom, inte som IAM-roll i Google Cloud (där ska rollerna vara noll). Testknappen skriver ut vilken adress som saknar läsrätt på vilken egendom, med Googles eget svar bredvid.
GA4-testet säger att Google Analytics Data API inte är aktiverat
API:et måste slås på en gång, i ett Google Cloud-projekt: öppna console.cloud.google.com, välj ETT BEFINTLIGT projekt, gå till APIs & Services → Library, sök Google Analytics Data API och tryck Enable. Det är ett annat API än Google Analytics Admin API.
Inkorgen: svara i tid, och bara när ni själva trycker

Kommentarer på era inlägg — och direktmeddelanden till företaget, när behörigheterna är på plats — hämtas hit med jämna mellanrum, tillsammans med inlägget de gäller. Ingenting skickas någonsin utan att ni trycker på Svara — AI-förslaget hamnar i textrutan och stannar där. Och en sak är viktigare än allt annat i inkorgen: Meta ger företaget ett DYGN att svara på ett direktmeddelande, sedan stänger fönstret.

  1. Marknad → Inkorg. Flikarna delar upp kommentarer och meddelanden, och kanalfiltret väljer konto.
  2. Klicka på en tråd. Överst står inlägget kommentaren sitter på, under det hela konversationen — era egna svar är märkta med vem som skickade dem.
  3. Skriv svaret själv, ta ett snabbsvar, eller tryck Föreslå svar med AI. Förslaget säger vad det bygger på och går att skriva om eller rensa.
  4. Tryck Svara. Svaret ställs i kö och går i väg inom fem minuter — det är samma väg som inläggen tar, och det är därför knappen svarar direkt.
  5. Är tråden ett verkligt kundärende: tryck Skapa lead. Den hamnar i pipelinen i steget Lead, och tråden sparas då för alltid i stället för att gallras.

Bra att veta

  • Nedräkningen står bredvid varje meddelandetråd OCH ovanpå utkastet. Klockan går medan förslaget ligger still — att generera ett utkast förlänger ingenting.
  • När dygnet gått finns ingen väg härifrån: tråden stängs med skälet utskrivet, och svaret får gå från Messenger eller Instagram — eller vänta på kundens nästa meddelande, som öppnar ett nytt fönster. Metas förlängning för mänskliga handläggare används inte i den här versionen.
  • Kommentarer har inget svarsfönster. Regeln gäller bara direktmeddelanden.
  • Vi läser meddelanden till FÖRETAGET. Aldrig till dig som person — det går inte ens att be Meta om den behörigheten.
  • Raden "senast hämtat" är ärligare än en grön prick. Vi hämtar tätare när det händer något och glesare när det är tyst: Metas anropsbudget växer med er räckvidd, så ett nystartat konto har minst att röra sig med.

Vanliga fel och lösningar

Fliken Meddelanden finns inte hos oss
Meddelanden kräver behörigheter som inte ingår i grundkopplingen — fliken tänds när kopplingen bär dem. Tryck Be om fler behörigheter på kanalkortet under Inställningar → Publicera i sociala kanaler, och slå på "tillåt åtkomst för anslutna verktyg" i Instagram-appens meddelandeinställningar i mobilen. Meddelandena hämtas sedan med samma pollning som kommentarerna och fungerar även bakom brandvägg.
Finns det regler som svarar automatiskt?
Nej, och det kommer inte heller. Programmets enda absoluta löfte är att ingenting lämnar installationen utan ett klick, och en regel som svarar åt er bryter det löftet — oavsett hur väl den är skriven.
Mitt svar står som "gick inte i väg"
Metas eget svar står i tråden. Vanligaste orsakerna är att kommentaren tagits bort hos Meta, eller att nyckeln behöver kopplas om. Programmet försöker tre gånger och slutar sedan — vi skickar aldrig i evighet en text någon skrev för en vecka sedan.
Företagsprofilen: vad AI:n vet om er

Allt AI:n skriver i ert namn — inläggsutkast, svarsförslag i inkorgen, förslagen i kalendern — bygger på en profil. Ni kan skriva den själva, eller låta programmet läsa er webbplats och föreslå en. Väljer ni det andra får ni ETT FÄLT I TAGET, med en rad under som säger var uppgiften kommer ifrån: Ur hemsidan — Om oss, Ni skrev det själva, eller Gissning ur hemsidan. Ett fält med en källa går att rätta; ett fält utan källa går bara att misstro. Guiden tar ett par minuter och görs en gång.

  1. Marknad → Skapa inlägg → Kom igång, eller Inställningar → Publicera i sociala kanaler → kortet Företagsprofil. Skriv adressen till er webbplats och tryck Läs sidan.
  2. Vi hämtar er robots.txt först och lyder den, läser högst 20 sidor på samma domän och kör ingen JavaScript. Den gröna raden visar exakt vad vi läste och hur lång tid det tog — den är ett kvitto, inte ett påstående.
  3. Läs igenom bransch, tonläge och tjänster. Rätta det som blivit fel: då byter fältet källa till er egen, och en ny läsning skriver aldrig över det ni själva skrivit.
  4. Svara på de tre frågorna — vem ni vill nå, vad ni vill få ut av det och hur ofta ni vill publicera. Vill ni inte svara nu finns genvägen "Hoppa över — gissa utifrån hemsidan så rättar jag sedan", och då står svaren märkta som gissningar tills ni rättar dem.
  5. Profilen sparas i kortet Företagsprofil under Inställningar → Publicera i sociala kanaler och går att ändra när som helst. Ingenting publiceras någonsin utan att någon trycker på Publicera nu eller Schemalägg.

Bra att veta

  • Profilens "Skriver aldrig om" är det snabbaste sättet att få bättre utkast. Skriv in prisuppgifter, garantier eller vad ni annars aldrig nämner — AI:n får det som ett förbud, inte som ett önskemål.
  • Er webbplats behandlas som TEXT, aldrig som instruktioner. Skulle någon lägga in en mening riktad till en AI på en sida vi läser är den fortfarande bara text på en webbsida — och allt den föreslår hamnar i ett formulär ni godkänner fält för fält innan något sparas.
  • Har ni ingen webbplats fungerar allt ändå: hoppa över läsningen och fyll i fälten själv. De styr lika mycket då.
  • Profilen är administratörens. En medarbetare LÄSER den — annars skulle deras utkast skrivas utan den — men ändrar den inte, av samma skäl som företagsnamnet ligger hos administratören.

Vanliga fel och lösningar

Det står att vi inte fick läsa
Er robots.txt stänger ute robotar, och vi lyder den. Det är inte ett fel på er sida — det är så filen ska fungera. Antingen öppnar ni för DebetKreditMarknad i robots.txt och läser om, eller så fyller ni i profilen för hand.
Vi hittade ingen läsbar text
Sidan byggs troligen med JavaScript i webbläsaren, och vi kör ingen JavaScript. Det är ett medvetet val: en läsare som kör kod från andras sidor är en helt annan sak än en som läser text. Fyll i profilen själv.
AI:n skrev fel bransch
Tryck Ändra på fältet och skriv rätt. Källan byts då till "Ni skrev det själva", och nästa gång ni läser om webbplatsen rörs inte det fältet.
Vi har läst om sidan men ingenting ändrades
Fält ni själva rättat skrivs aldrig över av en ny läsning. Vill ni att AI:n ska få gissa igen: töm fältet först, och läs sedan om.
Förslagen i kalendern: var de kommer ifrån

Panelen till höger i kalendern lämnar förslag på inlägg. Den skiljer sig från andra sådana paneler på ett sätt som är hela poängen: varje förslag måste peka på något vi FAKTISKT vet om er, och under förslaget står vad det var. Fem källor finns — er profil, er statistik, oanvända bilder i Mediabanken, vad folk frågar om i inkorgen, och era egna fakturahändelser. Den sista är den ingen annan kan bygga: ett marknadsverktyg vet inte att ett jobb blev klart. Ett bokföringsprogram vet det, på dagen.

  1. Marknad → Kalender. Panelen Förslag från AI ligger till höger, under kalendern på liten skärm.
  2. Tryck Hämta förslag. Vi räknar först ihop underlaget ur er egen databas — inga anrop till Meta — och ber sedan AI:n skriva förslag som var och en pekar på en rad i det underlaget.
  3. Läs raden Bygger på under varje förslag. Den är skriven av programmet, inte av AI:n, och säger exakt vilken uppgift förslaget vilar på.
  4. Tryck Öppna i editorn på det ni vill använda. Det skapas som UTKAST i composern, med bilderna förifyllda om förslaget pekade ut några. Ingen kanal är vald och ingen tid är satt.
  5. Skriv om texten som ni vill och tryck Schemalägg när ni är nöjda. Innan dess har ingenting lämnat installationen.

Bra att veta

  • Förslag som inte kunde kopplas till något vi vet om er stryks innan ni ser dem, och panelen säger hur många. Hellre tre förslag vi kan motivera än fem vi inte kan.
  • BELOPP FÖLJER ALDRIG MED. Att en slutfaktura gått i väg används som händelse; vad den var på läses inte ens ut ur databasen. Ett inlägg får aldrig avslöja er prisbild.
  • Panelen hämtar inget förrän ni ber om det. Förslagen bygger på fakturor och kommentarer som ändras under dagen — en lista som ritades i morse hade sett färsk ut utan att vara det.
  • Är panelen tom står skälet utskrivet: ingen AI-nyckel, tom företagsprofil, eller för lite att bygga på ännu.

Vanliga fel och lösningar

Panelen säger att företagsprofilen är tom
Förslagen bygger på vad ni gör, vem ni skriver till och vad som fungerat. Utan profilen skulle de bli gissningar om en byggfirma i allmänhet. Kör guiden under Marknad → Kalender → Kom igång.
Vi får inga förslag ur fakturorna
Vi tittar på fakturor som skickats eller betalats de senaste sju dagarna, och bara på sådana med ett kundnamn. En händelse äldre än så är inte längre en händelse — ett tack för ett jobb som blev klart för tre veckor sedan är märkligt.
Kan förslagen publicera något av misstag?
Nej. Öppna i editorn skapar ett utkast utan vald kanal och utan tid. Vägen ut ur programmet går genom knappen Schemalägg, och den vägen går inte genom någon AI.

Administration14 artiklar

Ge din redovisningsbyrå åtkomst

En byrå som ska sköta din löpande bokföring behöver TVÅ saker av dig, och de gör olika saker. Nyckeln (Inställningar → Släppa in andra → Byråns åtkomst) låter byråns egen översikt läsa några räknare ur din bokföring — antal, datum och deadlines, inga belopp. Kontot (Inställningar → Släppa in andra → Användare) är en vanlig inloggning i det här programmet, och det är först med det byrån kan bokföra något. Bara nyckeln räcker alltså för att de ska SE att något behöver göras, men inte för att de ska kunna göra det. Du utfärdar båda själv, och du kan ta tillbaka båda när som helst — en byrå kan aldrig ge sig själv åtkomst.

  1. Nyckeln: Inställningar → Släppa in andra → Byråns åtkomst → Ny nyckel. Skriv byråns namn (och gärna en notering om vem på byrån som fick den) och skapa. Nyckeln börjar på dkb_ och visas EN gång — kopiera den direkt och skicka den till byrån på ett säkert sätt, till exempel i er lösenordshanterare. Tappas den bort återkallar du raden och skapar en ny.
  2. Kontot: Inställningar → Släppa in andra → Användare → Lägg till användare. Ange handläggarens e-postadress och välj rollen Medarbetare — bokföring, fakturering, CRM och bank, aldrig lön eller inställningar. Engångslösenordet visas en gång; ge det till personen säkert och be hen byta vid första inloggningen.
  3. Ett konto per person på byrån, inte ett delat. Systemloggen visar vem som gjorde vad, och ett delat konto gör den kolumnen värdelös.
  4. Skicka adressen till din installation med. Byråns översikt länkar in hit, men den bär ingen inloggning — handläggaren loggar in här som vanligt, med kontot ovan.
  5. När uppdraget tar slut: återkalla nyckeln under Byråns åtkomst OCH ta bort kontot under Användare. Det är två saker, och det ena stänger inte det andra.

Bra att veta

  • Revisor och byrå är inte samma sak. En revisor som bara ska läsa året får rollen Granskare (läser allt, ändrar ingenting) eller en SIE 4-fil. En byrå som ska bokföra åt dig behöver Medarbetare — Granskare kan inte bokföra en enda rad.
  • Rollerna upprätthålls på databasnivå, inte bara i menyerna. En byrå med rollen Medarbetare når alltså aldrig lönespecar eller dina sparade nycklar, oavsett vilken adress som skrivs in.
  • Nyckeln och kontot är oberoende av varandra. Återkallar du nyckeln slutar byråns översikt visa dina siffror direkt, men handläggaren kan fortfarande logga in — och tvärtom.
  • Under Byråns åtkomst står när nyckeln senast användes. En nyckel som aldrig använts betyder att byrån inte har lagt in den hos sig ännu.

Vanliga fel och lösningar

Byrån ser våra siffror men säger att de inte kan bokföra
Då har de nyckeln men inget konto. Nyckeln är läsande och ger bara räknarna i deras översikt. Lägg upp handläggaren under Inställningar → Släppa in andra → Användare med rollen Medarbetare.
Byrån kan bokföra men deras översikt är tom
Omvända fallet: kontot finns, men ingen nyckel är utfärdad — eller så har den återkallats. Skapa en ny under Inställningar → Släppa in andra → Byråns åtkomst och skicka den till dem; den gamla går inte att återuppliva, med flit.
Vad ser byrån egentligen med nyckeln?
Sju uppgifter, och de står uppräknade på sidan Byråns åtkomst: obokförda händelser, omatchade banktransaktioner, verifikat utan underlag, datum för senaste verifikatet, hur långt bokföringen är låst, nästa momsdeadline och räkenskapsårets start, slut och status. Inga belopp, inga motparter, inga verifikat, ingen lön.
Kan vi ge byrån åtkomst utan att de ser lönerna?
Ja, och det är vad rollen Medarbetare gör. Lön, personal och inställningar ligger utanför den, och gränsen upprätthålls av databasen.
Inställningar

Inställningar (endast administratörer) samlar allt som gäller hela företaget, i tretton avsnitt med en ständigt synlig sektionsmeny. Varje avsnitt heter det du vill göra, och raden under bär produktnamnen: Företaget, moms och F-skatt (Företagsuppgifter med logotyp, momsperiod, EU-handel och F-skatt, samt Bolagsform), Utseende och färger (accentfärg och bakgrund ändras direkt i hela appen), Få betalt av kunder (E-post och påminnelser via Resend, E-faktura via Peppol, Autogiro, Kreditupplysningar och Inkasso), Ta emot leverantörsfakturor (Leverantörsinkorg och Godkännande — attest), Räkenskapsår och periodlås (Räkenskapsår & verifikationsserier och Periodlåsning), Släppa in andra (Användare, Byråns åtkomst och — i handelsbolag — Delägare), AI-bokföraren (nyckel, modell, konteringsregler och egen kunskap till rådgivaren), Publicera i sociala kanaler (Sociala kanaler och Företagsprofil), Mäta besök och annonser (Google Analytics 4, PostHog och Meta-annonskontot), Koppla ihop med andra tjänster (Nycklar & kopplingar och API-nycklar), Säkerhetskopior, Byta hit från annat program (SIE-import, Verifikat via CSV eller Excel, register och ingående balanser) och Finns på andra sidor. Personliga val gör du i stället under Min profil.

Inställningar

Bra att veta

  • Sökfältet överst i sektionsmenyn söker på dina ord, inte bara på rubrikerna: skriv GA4, PostHog, Resend, Peppol, mejl, backup, attestera eller semester och du får rätt kort — raden under träffen säger vilket ord som gav den. Ord som hör hemma på en annan sida (momsrapport, kontoplan, avstämning) svarar med ett rakt besked om var de bor i stället för ett kort som nästan stämmer.
  • Sista avsnittet, Finns på andra sidor, pekar vidare till det som bor utanför sidan och saknar egen menyrad: AI-förbrukning, Systemlogg, Min profil, Kostnadsställen & projekt, Kampanjer, Personal och semesterregler, Registerutdrag och Byt hit från annat program.
  • Bolagsformen har ett eget kort under Företaget, moms och F-skatt. Den styr moms, skatt, årsavslut och vilka eget kapital-konton kontoplanen får — byter du form kompletteras kontoplanen automatiskt och befintliga verifikat rörs aldrig.
Gör programmet till ert: logotyp, färger och startsida

Tre inställningar gör programmet till företagets eget. Logotypen och accentfärgen är gemensamma och sätts av administratören under Inställningar. Startsidan är personlig och väljs av var och en under Min profil, så två kollegor kan landa på olika ställen i samma installation.

  1. Logotyp: Inställningar → Företaget, moms och F-skatt → kortet Företagsuppgifter, moms och F-skatt → Logotyp. Välj en PNG, JPG eller SVG på högst 1 MB och klicka Ladda upp. Den visas överst i menyn i stället för initialbrickan och företagsnamnet, och i huvudet på faktura-PDF:en. Ta bort-knappen återställer standardutseendet.
  2. Egen accentfärg: Inställningar → Utseende och färger → kortet Utseende → Egen färg. Välj i färgrutan eller skriv hexkoden, till exempel #4f6d7a, och klicka Använd färgen. De sex förvalen finns kvar och går att växla tillbaka till när som helst.
  3. Kontrollera kontrasten: under färgväljaren står vilken knapptext färgen ger (vit eller mörk) och vilken kontrast den når. Programmet väljer alltid den läsbaraste av de två, och varnar när färgen inte når WCAG AA på 4,5:1.
  4. Startsida: Min profil → Startsida. Välj mellan Översikt, Verifikat, Bank, Fakturor och Att göra. Nästa inloggning landar där.

Bra att veta

  • Logotypen ligger i en privat lagringsplats och visas via tillfälliga länkar, precis som kvittoarkivet. Den är alltså inte publikt åtkomlig för den som råkar gissa adressen.
  • En SVG-logotyp visas i menyn men inte på fakturan, eftersom PDF-motorn bara bäddar in bildpunkter. Vill du ha logotypen på fakturorna: ladda upp en PNG med genomskinlig bakgrund, gärna minst 400 pixlar bred.
  • Startsidan syns bara som val för de vyer din roll når. Granskare ser därför inte Att göra, och rollen Anställd har ingen valmöjlighet alls utan landar alltid på Min lön.

Vanliga fel och lösningar

Logotypen laddas inte upp
Kontrollera storleken (max 1 MB) och formatet (PNG, JPG eller SVG). Får du besked om att lagringsplatsen saknas har databasmigrationerna inte körts efter uppdateringen. Bara administratörer kan byta logotyp.
Färgen ser blek eller svårläst ut
Mycket ljusa och mycket mättade toner ger låg kontrast mot både vit och mörk text. Raden under färgväljaren visar kontrasten innan du sparar. Ligger den under 4,5:1: mörka eller ljusa ner tonen tills varningen försvinner.
Jag landar fortfarande på översikten
Valet gäller från nästa inloggning, inte i en session som redan är igång. Har din roll ändrats sedan du valde kan vyn dessutom ha blivit otillgänglig, och då används översikten i stället.
Nycklar & kopplingar — vad som behövs och var de hämtas

Under Inställningar → Koppla ihop med andra tjänster, i kortet Nycklar & kopplingar, ser du status för allt programmet kan kopplas till: databasen, AI:n, mejlen, e-fakturan och automatiken. Värden visas aldrig — bara om nyckeln är på plats, var den bor och vad som inte fungerar utan den. AI-raderna bär dessutom det senaste testkvittot: aktiv betyder inte längre bara att strängen finns, utan att Testa AI-kopplingen svarade ja, och när den gjorde det. Har testet aldrig körts står det så. Den här artikeln är kartan: den säger vilken nyckel som hör till vilket kort. Själva hämtningsguiden — varje klick, varje värde och steget alla glömmer — fälls upp på kortet där nyckeln faktiskt klistras in, med Visa guiden steg för steg, och står ordagrant likadan här i hjälpcentret under respektive artikel.

  1. Öppna Inställningar → Koppla ihop med andra tjänster → Nycklar & kopplingar — gula rader visar vad som saknas och länkar till rätt kort.
  2. AI-nyckeln (ANTHROPIC_API_KEY): Inställningar → AI-bokföraren. Guiden på kortet tar dig genom utgiftstaket, kreditköpet och nyckeln — i den ordningen, som är hela poängen. Nyckeln klistras normalt in på kortet; en nyckel som i stället ligger i miljön används när kortets fält är tomt, och kortet skriver ut vilken av de två som gäller.
  3. Mejlen (RESEND_API_KEY, INVOICE_FROM_EMAIL) och automatiken (CRON_SECRET): Inställningar → Få betalt av kunder → kortet E-post och påminnelser. Guiden där går igenom domänverifieringen, nyckeln, avsändaradressen och slumpsträngen till de schemalagda körningarna — med en Generera-knapp för den sista.
  4. Leverantörsinkorgen (RESEND_WEBHOOK_SECRET): Inställningar → Ta emot leverantörsfakturor → kortet Leverantörsinkorg. Guiden där bär subdomänen, webhooken och hemligheten — och webhook-adressen står utskriven med din egen domän i, med en kopieringsknapp.
  5. Bankkopplingen, e-fakturamottagningen, säkerhetskopian, Meta-kopplingen och besöksmätningen har guider på samma sätt, på sina egna kort. Den djupare referensen för varje nyckel ligger i docs/NYCKLAR.md i ditt repo — men kortets guide är den som följer den version du har installerad.

Bra att veta

  • Grundregeln: nycklar är lösenord. Bara i miljövariabler eller programmets avsedda fält — aldrig i mejl eller dokument.
  • Läcker en nyckel: skapa ny hos leverantören, radera (revoke) den gamla där — inte bara hos dig.
  • Miljövariabler i Vercel börjar gälla först efter en Redeploy.
  • Den här artikeln handlar om nycklarna PROGRAMMET behöver för att nå andra tjänster. Nycklarna du själv skapar för att dina egna system ska nå bokföringen är något annat — de står under Inställningar → Koppla ihop med andra tjänster → API-nycklar och beskrivs i artikeln Ditt eget API.
Ditt eget API: nycklar, behörigheter och vad de får göra

Programmet har ett öppet API som dina egna system kan läsa och skriva i — kassasystemet, webshoppen, en egen serverfunktion. Du skapar nyckeln själv under Inställningar → Koppla ihop med andra tjänster → API-nycklar: ingen ansökan, inget partneravtal och ingen avgift för att din data ska få prata med dina system. Nyckeln bär en behörighet du väljer, syns i en lista med när och varifrån den senast användes, och återkallas med ett klick.

API-referensen med alla adresser och recept
  1. Skapa nyckeln och ge den ett namn du känner igen Ge nyckeln ett namn du känner igen om ett år — namnet är det enda du ser sedan. Ge varje system sin egen nyckel: då kan du återkalla ett system utan att stänga av alla andra, och listan säger vem som faktiskt hörde av sig. Knappar: Skapa nyckel. Namn: Webshoppen Resultat: Nyckeln skapas och visas i klartext, en enda gång.
  2. Välj minsta behörighet som räcker Läsa hämtar fakturor, kunder, verifikat och nyckeltal och ändrar ingenting. Ta emot underlag lämnar in ordrar och e-fakturor till inkorgen men ser inget som redan finns. Bokföra skapar och bokför fakturor och verifikat. Behörighet: Läsa (Vidga aldrig en befintlig nyckel — skapa en ny.) Resultat: Nyckeln står i listan med sin behörighet utskriven. Bokföringens spärrar gäller identiskt för API:et och för dig: balanskravet, periodlåset, momslåset och avslutade räkenskapsår. Ett API-anrop kan inte skriva något du själv inte hade fått skriva.
  3. Lägg nyckeln som hemlighet i systemet som ska anropa Nyckeln skickas i Authorization-huvudet. Att bokföra kräver dessutom huvudet Idempotency-Key: 8–255 tecken du väljer själv, unika per affärshändelse — använd ditt eget ordernummer. Authorization: Bearer <din nyckel> Idempotency-Key: <ditt ordernummer> (Byt aldrig nyckel vid omförsök.) Resultat: Anropet svarar 200 och verifikatet dyker upp i bokföringen.
  4. Granska listan då och då Varje nyckel visar när och varifrån den senast användes. En nyckel som inte använts på länge ska återkallas. Återkallning biter mitt i ett pågående anrop, inte vid nästa inloggning. Resultat: Listan innehåller bara nycklar du känner igen och kan förklara.
  5. Steget alla glömmer: Nyckeln visas EN gång och sparas därefter bara som ett kontrollvärde — vi kan inte visa den igen, och det är med flit. Kopiera den innan du stänger rutan.

Bra att veta

  • Ge varje system sin egen nyckel med minsta behörighet. Då kan du återkalla ett system utan att stänga av alla andra, och listan säger vem som faktiskt hörde av sig.
  • Bokföringens spärrar gäller identiskt för API:et och för dig: balanskravet, periodlåset, momslåset och avslutade räkenskapsår. Ett API-anrop kan inte skriva något du själv inte hade fått skriva.
  • Att bokföra kräver huvudet Idempotency-Key: 8–255 tecken du väljer själv, unika per affärshändelse — använd ditt eget ordernummer. Samma nyckel igen ger samma verifikat tillbaka i stället för ett andra, så ett omförsök efter en timeout aldrig bokför dubbelt. Byt aldrig nyckel vid omförsök: det första anropet kan mycket väl ha bokfört.
  • Återkallning biter mitt i ett pågående anrop, inte vid nästa inloggning.
  • Hela referensen med adresser, fält och färdiga recept ligger på /api-docs — den är öppen och kräver ingen nyckel för att läsas.

Vanliga fel och lösningar

Når API-nyckeln kreditupplysningarna?
Nej. Lagrade kreditupplysningar är spärrade för både API-nycklar och byråns nyckel, och spärren sitter i databasen. Att lämna en upplysning vidare är kreditupplysningsverksamhet som kräver tillstånd.
Anropet svarar att behörighet saknas
Nyckeln har inte den behörighet anropet kräver. En nyckel för Ta emot underlag kan lämna in ordrar men inte läsa bokföringen, och en läsnyckel kan inte bokföra. Skapa en nyckel med rätt behörighet i stället för att vidga den befintliga.
Jag tappade bort nyckeln
Skapa en ny och återkalla den gamla. Nyckeln lagras aldrig i klartext, så ingen kan visa den för dig igen — inte vi heller.
Aktivera tvåstegsverifiering

Tvåstegsverifiering lägger ett steg till din inloggning: efter lösenordet skriver du in en sexsiffrig kod från en app i telefonen. Det är samma metod som banker, GitHub och Microsoft använder, och den gör lösenordet ensamt värdelöst för någon annan. Funktionen är valfri, personlig och slås på under Min profil → Säkerhet — den enda platsen; Inställningar har inget sådant kort, bara en länk vidare till Min profil under Finns på andra sidor. Funktionen finns i både licens- och community-versionen.

  1. Hämta en autentiseringsapp till telefonen om du inte redan har en: Google Authenticator, Microsoft Authenticator, Authy och 1Password fungerar alla lika bra. De följer samma standard, så du kan byta app senare.
  2. Öppna Min profil → Säkerhet i programmet och klicka Aktivera tvåstegsverifiering.
  3. Skanna QR-koden med appen. Kan du inte skanna — till exempel om appen sitter på samma dator — väljer du Ange nyckel manuellt i appen och klistrar in nyckeln som står under koden.
  4. Appen visar nu en sexsiffrig kod för Debet & Kredit som byts var trettionde sekund. Skriv in den koden i rutan och klicka Aktivera.
  5. Klart. Nästa gång du loggar in kommer ett extra steg efter lösenordet, där du skriver in koden som appen visar just då.

Bra att veta

  • Valet gäller ditt eget inloggningskonto. Har företaget flera användare slår var och en på det själv — en administratör kan varken slå på eller stänga av åt någon annan, eftersom koden bara finns i den personens telefon.
  • Byter du telefon: flytta över kontot i autentiseringsappen innan du nollställer den gamla. De flesta appar har en export- eller överföringsfunktion, och det tar en minut medan du fortfarande har båda telefonerna.
  • Vill du stänga av behöver du en kod från appen. Det är avsiktligt — annars skulle den som kommit över lösenordet kunna stänga av skyddet.
  • Kravet hålls av spärren framför programmet, inte av gränssnittet: en inloggning som stannat vid lösenordet når ingen sida alls, oavsett vilken adress som skrivs in. Vi använder Supabase Auth, samma inloggningsmotor som ligger under programmet i övrigt, och varken koden eller nyckeln lämnar din egen installation.

Vanliga fel och lösningar

Koden godkänns inte
Koden byts var trettionde sekund, så vänta på nästa och skriv in den. Fortsätter det: kontrollera att telefonens klocka ställs automatiskt. Tidsbaserade koder räknas ut ur klockan, och några minuters skillnad räcker för att koderna ska hamna fel.
Jag kan inte skanna QR-koden
Använd nyckeln som står under koden i stället. Välj Ange nyckel manuellt i autentiseringsappen, klistra in nyckeln och välj typen Tidsbaserad om appen frågar.
Appen visar flera koder — vilken ska jag ta?
Den som står under namnet på ditt Debet & Kredit-konto, oftast med din e-postadress under sig. Alla andra rader hör till andra tjänster.
Jag testade i demon och knappen var låst
Demokontot delas av alla som testar samtidigt, så ett kodsteg där skulle stänga ute nästa besökare. I din egen installation är knappen aktiv.
Knappen svarar att tvåstegsverifiering är avstängd i projektet
Då är TOTP avslaget i din Supabase-panel. Öppna projektet, gå till Authentication → Sign In / Providers och slå på Multi-Factor Authentication (TOTP). Kör du lokalt står samma inställning i supabase/config.toml under [auth.mfa.totp].
Tappat din autentiseringsapp?

Ingen fara, och ingen support att vänta på. Du är din egen administratör i den här installationen, så du löser det själv på ett par minuter: ta bort din tvåstegsfaktor i din Supabase-panel, logga in med lösenordet som vanligt och aktivera tvåstegsverifieringen igen med en ny telefon. Bokföringen påverkas inte alls — det är bara inloggningen som ställs om.

  1. Öppna supabase.com i webbläsaren och logga in på det konto du skapade projektet med. Kör du helt lokalt öppnar du i stället din egen Supabase Studio, normalt http://localhost:54323, och hoppar över inloggningen.
  2. Välj ditt projekt i listan — det heter oftast samma sak som ditt företag. Du landar på projektets översikt.
  3. Klicka på Authentication i menyn till vänster. Ikonen är en liten person, och den ligger ungefär mitt i menyn. Undermenyn öppnas.
  4. Välj Users i undermenyn. Nu visas en tabell med alla inloggningskonton i din installation, en rad per person, med e-postadressen i första kolumnen.
  5. Sök upp din egen e-postadress i sökrutan ovanför tabellen och klicka på raden så att användarens detaljer öppnas.
  6. Leta upp avsnittet Multi-Factor Authentication (kan också stå MFA factors). Där ligger din faktor som en rad, oftast med namnet Debet & Kredit eller Authenticator app och ett datum. Klicka på papperskorgen eller Remove factor på den raden och bekräfta.
  7. Finns inget sådant avsnitt i din version av panelen: klicka på de tre punkterna längst till höger på användarens rad i tabellen och välj Remove MFA factors i menyn. Det gör exakt samma sak.
  8. Gå tillbaka till programmet och logga in med e-post och lösenord. Nu kommer inget kodsteg — faktorn är borta.
  9. Öppna Min profil → Säkerhet och aktivera tvåstegsverifieringen igen med den nya telefonen. Räkna med en minut.

Bra att veta

  • Kommer du inte in i Supabase-panelen heller? Det är samma sak som att ha tappat nyckeln till huset: använd Forgot password på supabase.com, och har du tvåstegsverifiering även där ligger dina reservkoder från Supabase i lösenordshanteraren eller papperen där du sparade dem.
  • Har företaget flera användare kan administratören ta bort en kollegas faktor på precis samma sätt — hen har ju panelen. Ring personen och verifiera att det verkligen är hen som bett om det innan du gör det.
  • Ta för vana att kolla när du byter telefon: de flesta autentiseringsappar kan flytta över alla konton till den nya telefonen medan du har båda i handen.
  • Vi bygger medvetet inga egna reservkoder i den här versionen. En reservkod är ett lösenord till, som ska förvaras och som kan läcka — och eftersom du äger panelen har du redan en säkrare väg tillbaka.

Vanliga fel och lösningar

Jag hittar inte Authentication i menyn
Kontrollera att du står inne i ett projekt och inte på organisationens startsida. Menyn till vänster ska visa Table Editor, SQL Editor, Database, Authentication, Storage. Står det Projects, General och Billing är du en nivå för högt upp — klicka på projektnamnet först.
Användaren finns inte i listan
Listan visar bara konton i det projekt du har öppet. Har du flera Supabase-projekt: kontrollera att det är samma projekt som programmet är kopplat till, alltså samma Project URL som står i NEXT_PUBLIC_SUPABASE_URL i din hosting.
Faktorn är borttagen men kodsteget kommer ändå
Din webbläsare kan sitta kvar på en gammal session. Logga ut helt och logga in på nytt.
Sköt din databas säkert

Databasen är din bokföring — docs/DATABAS-SAKERHET.md är hela rutinen. Kortversionen: skydda kontot, håll nycklarna på rätt plats och kör aldrig rå SQL — programmet ÄR skyddet. Säkerhetskopian behöver du däremot inte sköta för hand: programmet tar den varje natt, till en lagring du själv äger.

  1. Slå på tvåfaktorsautentisering på ditt Supabase-konto i dag (Account → Security). Viktigaste enskilda åtgärden.
  2. Kontrollera säkerhetskopian under Inställningar → Säkerhetskopior → Säkerhetskopia: när kopian senast lyckades, var den ligger och om något underlag saknades. Är den inte uppsatt sätter du destinationen med miljövariabler vid driftsättningen — uppsättningen står i docs/SAKERHETSKOPIA.md.
  3. Kör aldrig SQL direkt i databasen — skydden (oföränderliga verifikat, roller) kan kringgås där. Rätta alltid via programmet.
  4. Kvartalskoll: öppna Inställningar → Släppa in andra → Användare och ta bort personer som slutat.
  5. Välj destination — och en annan än bokföringens Bokföringsnämnden kräver att kopian förvaras åtskild från originalet. En kopia i samma Supabase-projekt som bokföringen duger alltså inte — försvinner projektet försvinner båda. Uppsättningen VÄGRAR om destinationen visar sig vara samma projekt, också när den skrivits som projektets S3-ändpunkt. Välj EN av två: S3-kompatibel lagring (AWS S3, Backblaze B2, Cloudflare R2, MinIO, Wasabi) eller ett annat Supabase-projekt. Sätts båda spärras jobbet. Resultat: Du vet vilken av de två vägarna du ska sätta variabler för.
  6. Skapa bucketen själv Skapa bucketen i lagringens egen panel innan första körningen. Hos Supabase: Storage → New bucket, och EJ public. Hos en S3-leverantör: skapa bucketen och en nyckel med både skriv- OCH läsrätt. Knappar: Storage → New bucket. Bucketnamn: mitt-bokforingsarkiv Resultat: Bucketen finns, och den är inte publik. Nyckeln behöver läsrätt också: jobbet läser tillbaka filen efter uppladdningen och jämför hashen, och räknar kopian som tagen först då. En skrivrätt utan läsrätt ger en kopia ingen vet om den kan läsa.
  7. Sätt destinationens miljövariabler Destinationen sätts med miljövariabler vid driftsättningen, inte här på kortet: nycklarna till din lagring ska aldrig ligga i bokföringsdatabasen. Rutten använder dessutom samma CRON_SECRET som påminnelserna, plus SUPABASE_SERVICE_ROLE_KEY. Knappar: Settings → Environment Variables → Save → Redeploy. BACKUP_S3_ENDPOINT: adressen som står i kortet (Måste vara https.) BACKUP_S3_REGION: eu-north-1 (Utelämnas → auto.) BACKUP_S3_BUCKET: mitt-bokforingsarkiv BACKUP_S3_ACCESS_KEY_ID: nyckel-id från din lagring (Skapas hos S3-leverantören, inte här.) BACKUP_S3_SECRET_ACCESS_KEY: hemligheten till samma nyckel (Visas en gång när nyckeln skapas. Behöver både skriv- och läsrätt.) Resultat: Kortet slutar varna om att ingen destination är satt.
  8. Kontrollera första kvittot Nattjobbet loggar varje körning. Utan destination körs ingenting, men en varning loggas varje natt — en installation utan säkerhetskopia ska inte kunna gå obemärkt. Resultat: Kortet visar när kopian senast togs, hur stor den var och att hashen stämde.
  9. Steget alla glömmer: Bucketen skapas INTE automatiskt — migrationerna körs aldrig mot backupdestinationen. Skapa den själv innan första körningen, och se till att den INTE är public.

Bra att veta

  • Så fungerar den nattliga kopian: räkenskapsåret packas som en SIE-fil med underlagen, laddas upp till din lagring, läses tillbaka och jämförs mot sitt kontrollvärde — först då räknas kopian som tagen. En kopia som inte gick att läsa tillbaka är ingen kopia.
  • Destinationen måste ligga ÅTSKILD från bokföringen [BFNAR 2013:2 punkt 8.2], så samma Supabase-projekt duger inte — programmet vägrar sätta upp det.
  • Nycklarna till din lagring sätts som miljövariabler, inte i bokföringsdatabasen. Nycklarna till kopian ska inte ligga på det ställe kopian ska skydda dig mot att förlora.
  • Utöver den nattliga kopian kan du alltid exportera hela året själv under Rapporter & export → SIE 4 och arkiv-zip. Exportfriheten är din yttersta säkerhet.
  • Revisorn behöver aldrig databasåtkomst — ge rollen Granskare i programmet eller en SIE-fil.
  • En backup som aldrig testats är ett hopp, inte en backup. Den nattliga kopian testar sig själv genom att läsas tillbaka; provimportera ändå din SIE-export en gång så du vet att du kan.
  • Vägen tillbaka den dag originalet är borta står i artikeln Om allt är borta — så får du tillbaka bokföringen, och i sin helhet i docs/ATERSTALLNING.md. Läs den innan du behöver den.

Vanliga fel och lösningar

Säkerhetskopian har inte lyckats på flera dagar
Öppna Inställningar → Säkerhetskopior → Säkerhetskopia — där står skälet från senaste körningen. Vanligast är att lagringens nycklar bytts eller att utrymmet tagit slut. När du rättat något: tryck Kör en kopiering nu på samma kort, så vet du direkt om det fungerar i stället för att vänta på nattkörningen. Körningen är schemalagd och kräver CRON_SECRET; kör du själv med Docker måste raden för /api/cron/sakerhetskopia finnas i din crontab.
Programmet vägrar spara min destination
Destinationen ligger i samma projekt som bokföringen. En kopia i samma projekt försvinner med originalet, och bokföringsnämndens allmänna råd kräver att den förvaras åtskild. Välj en lagring hos en annan leverantör eller åtminstone ett annat projekt.
Kvittot säger att underlag saknades i lagringen
Kopian är fullständig som kopia, men originalet har luckor — det ska redas ut, inte döljas av en grön bock. Kortet räknar hur många bokförda underlag som saknades när arkivet byggdes.
Om allt är borta — så får du tillbaka bokföringen

Kontot låst, projektet raderat, hårddisken död. Den nattliga kopian ligger kvar på din egen lagring, åtskild från det som försvann, och hela vägen tillbaka finns beskriven i docs/ATERSTALLNING.md — de fem första avsnitten skrivna för dig, den tekniska bilagan för den som kör kommandona. Räkna med en halvtimme, varav det mesta är väntan på att ett nytt Supabase-projekt ska bli klart.

  1. Skaffa ett nytt, tomt Supabase-projekt och kör programmets databasuppsättning i det. Det är det steget som tar tid; själva återläsningen tar minuter.
  2. Hämta hem arkiven från din backup-lagring. Ett arkiv per räkenskapsår, som en vanlig zip-fil.
  3. Läs in dem. Varje verifikat bokförs genom samma funktion som när du bokför i programmet — inte rakt in i databasen — så att det som kommer tillbaka är samma bokföring som fanns.
  4. Kräv beviset: jämförelseverktyget ställer den återställda bokföringen mot arkivet rad för rad, saldo för saldo och kvitto för kvitto, och skriver GRÖNT eller RÖTT. Något mellanläge finns inte.

Bra att veta

  • Gör det här i dag, innan något händer: skriv ned nycklarna till din backup-lagring någon annanstans än i driften. Ligger de bara som miljövariabler i systemet som brann är kopian oåtkomlig.
  • Du får tillbaka varje verifikat med datum, konton, belopp, text och motpart, kontoplanen, räkenskapsåren, kvittona, momsrapporterna, periodlåsen, bokslutsstatusen och logotypen.
  • Du får INTE tillbaka: användare och inloggningar, API-nycklar, kund- och leverantörsregister, fakturornas betalstatus, offerter och order, anställda och lönekörningar, anläggningsregistret, banktransaktioner och bokföringsregler. Det är administrativa uppgifter, inte räkenskapsinformation — de sätts upp på nytt. Listan står också i klartext inuti arkivet självt.
  • Vill du ha kringsystemet tillbaka också är det en fullständig databaskopia du vill ha — Supabase egen backup, som ingår i deras Pro-plan. Den ersätter inte den åtskilda kopian (den ligger hos originalet), den kompletterar den.
  • Öva en gång om året mot ett tillfälligt projekt och kasta det efteråt. Det är skillnaden mellan att ha en säkerhetskopia och att tro att man har en.

Vanliga fel och lösningar

Kommer verifikationsnumren tillbaka som de var?
I ett tomt projekt, med alla verifikat inlästa i ordning, blir de desamma. Saknas ett verifikat i arkivet förskjuts resten — och då säger verktyget till om varje nummer som hamnade fel i stället för att låta det passera.
Jämförelsen skriver RÖTT
Då är återställningen inte fullständig, och bokföringen ska inte tas i bruk förrän det är utrett. Verktyget skriver ut exakt vilka konton, år eller rader som skiljer sig. Vanligaste orsaken är att ett arkiv saknas för ett av åren — kontrollera att hämtningen fick med alla.
Ett gammalt arkiv saknar arkivmanifest.json
Arkiv tagna innan manifestet fanns bär bara SIE-filen, och SIE-formatet har inget fält för motparten, bokslutsstatusen, momsrapporterna eller periodlåsen. Återläsningen säger då ifrån och lämnar dem till dig i stället för att tyst hoppa över dem. Nästa nattliga kopia skriver ett arkiv med manifest.
GDPR i praktiken — utdrag, radering och din dokumentation

Du som kör din egen installation är personuppgiftsansvarig — och systemet ger dig verktygen: registerutdragsfunktion, anonymisering och en förifylld registerförteckning. Hela guiden med biträdeskarta, rutiner och incidentmall finns i docs/GDPR.md; en färdig integritetspolicy-mall för ditt företag i docs/INTEGRITETSPOLICY-MALL.md.

  1. Registerutdrag (art 15): öppna Registerutdrag i programmet (admin), sök personen, skriv ut rapporten som PDF och lämna den — klart inom minuter i stället för dagar.
  2. Radering (art 17): CRM-poster och rådgivarkonversationer raderas direkt. Kund med bokförda fakturor: knappen Anonymisera (GDPR) i kunddialogen rensar kontakt- och adressuppgifter — fakturorna bär sina egna frysta uppgifter och påverkas inte.
  3. Det bokföringslagen kräver (verifikat, fakturor, löneunderlag, 7 år) bevaras med lagstöd — svara den registrerade med hänvisning till art 17.3 b.
  4. Fyll i luckorna i den förifyllda registerförteckningen i docs/GDPR.md och spara — det är din artikel 30-dokumentation.

Bra att veta

  • Kör du helt lokalt har du inga personuppgiftsbiträden alls — dokumentationens enklaste rad.
  • Skriv inte personnummer i fritextfält i onödan — minimering börjar vid tangenterna.
  • Varje anonymisering loggas i systemloggen — det är din bevisning att begäran hanterats.
E-post och påminnelser (Resend)

Fakturor, påminnelser och lönespecifikationer mejlas via din egen Resend-nyckel med din egen avsändardomän. Testmejl-knappen verifierar att allt är rätt uppsatt. Automatiska betalningspåminnelser skickas dagligen kl 07 UTC när de är påslagna: max två per faktura, aldrig tätare än ditt valda intervall, aldrig någon automatisk avgift.

E-post och påminnelser (Resend)
  1. Skapa konto och verifiera din avsändardomän Resend är din leverantör, inte vår — du äger avsändardomänen och relationen. Lägg till företagets domän under Domains och lägg in de DNS-poster Resend visar (SPF, DKIM och DMARC) hos den som har din domän. Verifieringen tar oftast några minuter. Knappar: Domains → Add Domain → Verify DNS Records. Resultat: Domänen står som Verified i listan under Domains.
  2. Skapa API-nyckeln Nyckeln är ett lösenord. Den visas en enda gång — kopiera den direkt till lösenordshanteraren, inte till ett mejl eller ett dokument. Knappar: API Keys → Create API Key. Name: Bokföringen (Ett namn du känner igen om ett år.) Permission: Sending access (Mer än så behöver programmet inte.) Resultat: Nyckeln visas i klartext en gång, och börjar med re_.
  3. Lägg nyckeln som miljövariabel där appen kör Nyckeln läggs INTE in här i appen utan som miljövariabler där appen kör. I Vercel: Settings → Environment Variables. Avsändaradressen måste ligga på den domän du nyss verifierade — en adress på en annan domän är det vanligaste skälet till att testmejlet aldrig kommer fram. Knappar: Settings → Environment Variables → Save → Redeploy. RESEND_API_KEY: re_… (Nyckeln från föregående steg.) INVOICE_FROM_EMAIL: faktura@DINDOMAN.se (En adress på den verifierade domänen. Byt DINDOMAN mot din egen.) Resultat: Efter Redeploy står kortet på "Resend-nyckel finns", och avsändaradressen visas som en egen bricka bredvid. Nycklar hör hemma i miljön, inte i bokföringsdatabasen. En databas som läcker ska inte samtidigt läcka rätten att mejla i ditt namn.
  4. Skicka testmejlet Knappen Skicka testmejl på det här kortet går till företagets egen inkorg. Kolla skräpposten också — ett förstagångsmejl från en ny domän hamnar ofta där tills mottagaren sett det en gång. Knappar: Skicka testmejl. Resultat: Mejlet ligger i företagets inkorg, med din egen avsändaradress.
  5. Sätt CRON_SECRET så att påminnelserna går av sig själva De automatiska påminnelserna körs av ett schemalagt jobb varje morgon kl 07 UTC, och jobbet vägrar starta utan en hemlighet — annars hade vem som helst kunnat trigga dina utskick. Strängen hittar du på själv; den ska bara vara lång och slumpmässig. CRON_SECRET: en lång slumpsträng (Minst 32 tecken. Tryck Generera så slumpas den fram här i webbläsaren.) Resultat: Varningen om att CRON_SECRET saknas försvinner från kortet, och varje körning loggas i Systemloggen med resultat och körtid.
  6. Steget alla glömmer: Miljövariabler börjar gälla först efter en Redeploy. Nyckeln kan vara rätt, sparad och betald — står den inlagd utan att appen byggts om sedan dess ser programmet den inte, och kortet säger fortfarande att den saknas.

Vanliga fel och lösningar

Jag har lagt in RESEND_API_KEY i Vercel men kortet säger fortfarande att den saknas
Vercel läser miljövariabler när appen byggs, inte när den körs. En nyinlagd variabel gäller därför först efter ett nytt bygge, hur många gånger du än laddar om sidan. Jämför tiderna: under Settings → Environment Variables står "Added X ago" på raden, och under fliken Deployments står tiden för det senaste bygget. Är variabeln nyare kör du Redeploy på den översta deployen, och laddar om sidan när den står som Ready. Stämmer tiderna redan: kontrollera att raden omfattar Production (inte bara Preview), att namnet är exakt rätt stavat utan mellanslag i värdet, och att du står i det Vercel-projekt som faktiskt kör din adress.
Jag har gjort Redeploy men programmet ser fortfarande ut som förut
Titta i adressfältet. Vercel ger varje enskilt bygge en egen permanent adress, till exempel din-app-abc123-dittnamn.vercel.app, och den adressen är fryst: den visar appen exakt som den var när just det bygget gjordes, med de nycklar som fanns då. Knappen Visit i Vercel och gamla bokmärken leder ofta dit. Logga in via huvudadressen (bara din-app.vercel.app, eller din egen domän) i stället. Den pekar alltid på det senaste bygget, och spara den som bokmärke.
Nyckeln är satt men testmejlet går inte iväg
Nyckeln säger hur mejlet skickas, inte varifrån. Appen behöver också INVOICE_FROM_EMAIL, en adress på en domän du verifierat i Resend. Saknas den skriver Nycklar & kopplingar ut "avsändaradress saknas" på raden. Lägg in den, kör Redeploy, och testa igen.
Leverantörsinkorgen säger också att nyckeln saknas
Den har en egen hemlighet och löses inte av att e-posten börjar fungera. Skapa en webhook i Resend mot /api/inbound/leverantorsfaktura med händelsen email.received, och lägg dess signeringsnyckel som RESEND_WEBHOOK_SECRET. Mottagnings-MX:en ska ligga på en SUBDOMÄN, aldrig på huvuddomänen — en MX-post på huvuddomänen kapar all inkommande post till företaget, inklusive din egen adress.
Domänen står kvar som Pending
DNS tar tid att spridas — vanligen minuter, ibland timmar. Kontrollera att posterna lagts på rätt domän och utan att din DNS-leverantör lagt till domännamnet en gång till i slutet av värdet.
Testmejlet kommer inte fram
Vanligaste orsaken är att avsändardomänen inte är verifierad i Resend (Domains), eller att avsändaradressen ligger på fel domän — sätt INVOICE_FROM_EMAIL till en adress på den verifierade domänen. Kolla också skräpposten.
Inga automatiska påminnelser skickas
Kontrollera i tur och ordning: automationen påslagen i Inställningar, RESEND_API_KEY och CRON_SECRET satta i din hosting, och Systemloggen — varje körning loggas där med resultat.
Systemloggen

Systemloggen (menyn, endast administratörer) visar vad automationerna gör och var fel uppstår: påminnelsekörningar med körtid, e-fakturaskick, lönespec-utskick och AI-fel. Filtrera på nivå, källa och text. Känsliga uppgifter (nycklar, tokens, personnummer) saneras innan de loggas. Knappen Kör påminnelser nu triggar påminnelseautomationen manuellt — säkert, eftersom körningen aldrig kan dubbelskicka.

Systemloggen
Supportbubblan: buggrapport, önskemål och support

Nere till höger på varje sida i programmet sitter en rund knapp med ett frågetecken. Den öppnar en ruta med tre vägar in: Rapportera en bugg, Önska en funktion och Support. Bubblan finns i alla installationer — även din egen på din egen domän — och syns för alla roller utom Anställd, som bara har Min lön.

  1. Rapportera en bugg: skriv en rubrik och beskriv vad du gjorde, vad som hände och vad du väntade dig. Lämna din e-postadress om du vill kunna få svar.
  2. Önska en funktion: samma formulär, men för sådant du saknar — beskriv gärna hur du skulle använda det.
  3. Support: sök i hjälpcentret direkt i rutan och klicka på en träff för att öppna hela artikeln, eller starta AI-supporten som guidar dig steg för steg utifrån hjälpcentret.
  4. Löser AI-supporten inte problemet föreslår den själv en buggrapport, och länken tar dig direkt till formuläret.

Bra att veta

  • Buggrapporter och önskemål går till utvecklarna av programmet (debea.se), inte till någon i ditt eget företag. Rutan visar innan du skickar exakt vad som följer med: rubrik, beskrivning, eventuell e-postadress, programversion och webbläsarens versionssträng.
  • Företagsnamnet skickas bara om du kryssar i rutan. Ingen bokföringsdata lämnar din installation.
  • AI-supporten kan bara läsa hjälpcentret — den ändrar aldrig något i bokföringen och ser inte dina siffror. Frågor om moms, avdrag och företagets egna belopp ställer du till Rådgivaren i menyn.
  • Supportchatten sparas inte, till skillnad från Rådgivarens konversationer. Stänger du rutan är samtalet borta.

Vanliga fel och lösningar

Fråga AI-supporten går inte att starta
AI-chatten kräver en AI-nyckel (Anthropic, sk-ant-…) i den här installationen. En administratör lägger in den under Inställningar → AI-bokföraren. Utan nyckel fungerar hjälpcentersökningen och buggrapporten som vanligt.
Buggrapporten går inte fram
Formuläret skickar över internet till debea.se — en installation utan utgående internetanslutning, eller en blockerare i webbläsaren, kan stoppa det. Felmeddelandet säger vilket. Innehållet ligger kvar i formuläret så du kan försöka igen.
Uppdateringar av programmet

Uppdateringar i menyn visar vad som är nytt, version för version — en egen menyrad längst ned, inte en sektion inne i Inställningar. Själva uppdateringen är två steg: ett klick på GitHub (Sync fork → Update branch) som hämtar koden, och sedan git pull följt av npx supabase db push i din klonade katalog som hämtar databasändringarna. Hela flödet står i docs/UPPGRADERING.md. Med aktiv uppdateringsprenumeration ingår årets regelvärden (basbelopp, avgiftssatser, momsregler) som annars åldras vid årsskiftet.

Uppdateringar av programmet
  1. Steg 1, i webbläsaren: öppna din fork på GitHub och klicka Sync fork → Update branch. Vercel bygger om appen automatiskt, 1–2 minuter.
  2. Steg 2, i terminalen i din klonade katalog: kör git pull och sedan npx supabase db push. Ber den om --include-all kör du git pull och npx supabase db push --include-all.
  3. Steg 3: öppna appen och läs Uppdateringar i menyn. Ligger databasen efter koden möts administratörer av en gul banner som skriver ut exakt vilka filer som saknas.

Bra att veta

  • git pull är steget alla glömmer. Migrationerna är filer — utan hämtningen finns de inte i din katalog, och db push svarar då "Remote database is up to date". Det ser ut som ett kvitto på att du är i fas, men betyder bara att ingenting fanns att köra. Kör git pull varje gång, också vid omkörningen med --include-all.
  • db push rör aldrig din bokföring. Verifikat, saldon, momsperioder och lönekörningar står kvar; det är nya tabeller, nya BAS-konton och nya spärrar som tillkommer.
  • Gick något fel med appen: Vercel sparar varje tidigare version. Öppna Deployments, välj den senaste fungerande och klicka Promote to Production. Databasen påverkas inte av en rollback av appen.

Vanliga fel och lösningar

Vercel säger "Deployment Blocked because … is not a member of your team"
Du kör appen på ett Vercel Team-konto. Sync fork gör ingen egen commit åt dig — den flyttar in våra commits med vårt författarskap kvar, och ett Team-konto vägrar bygga en commit vars författare inte är medlem i teamet. Det är ett kontovillkor hos Vercel, inte ett fel i koden eller i din databas. Lös det på ett av två sätt: (A) gör en egen liten commit i webbläsaren — öppna README.md i din fork, klicka pennan (Edit this file), lägg till en tom rad, klicka Commit changes… och välj Commit directly to the main branch; eller (B) hämta koden med en pull request i stället för Sync fork och slå ihop den med Squash and merge, så blir squash-commiten din. Bjud INTE in oss i ditt team: det kostar en plats i din prenumeration och ger en utomstående åtkomst till din produktionsinstallation. Ett personligt Hobby-konto drabbas aldrig av det här.
Windows: PowerShell säger att npx.ps1 inte kan läsas in eftersom körning av skript har inaktiverats
Det är Windows körningspolicy, inte ett fel i npx eller i uppdateringen. Kör Set-ExecutionPolicy -Scope CurrentUser RemoteSigned och svara J, kör sedan npx supabase db push igen. Vill du inte ändra policyn skriver du npx.cmd supabase db push i stället. På Mac förekommer det inte.
db push säger "Remote database is up to date" men bannern står kvar
Du körde db push utan git pull. Migrationsfilerna finns då inte i din klonade katalog, så det fanns bokstavligen ingenting att köra — beskedet gäller din tomma hög filer, inte databasen. Kör git pull och sedan npx supabase db push igen.
db push vägrar och ber om --include-all
Vanligt och väntat. Funktioner byggs parallellt, och en gren som blir klar senare kan ha fått ett lägre filnummer än något som redan ligger i din databas. Supabase kör inte in något i efterhand utan att du säger till. Kör git pull och sedan npx supabase db push --include-all. Din bokföring påverkas inte.

Vanliga frågor11 frågor

Är det lagligt att bokföra i ett eget program?

Ja. Skatteverket certifierar inga bokföringsprogram — kravet är att bokföringen följer bokföringslagen och god redovisningssed, och det är de kraven programmet är byggt runt: oföränderliga verifikat, obrutna nummerserier, balanskrav och 7 års arkivering, med export i myndigheternas egna filformat (eSKD, AGI, SRU, SIE 4).

Vad kostar driften?

Från 0 kr/mån på gratisnivåerna plus AI-användning på ungefär 10–50 kr/mån med egen nyckel — eller 0 kr med lokal modell. Gratisnivåerna har villkor: Supabase tar inga automatiska backuper och pausar projektet efter sju dagars stillhet, och Vercels Hobby-plan får enligt deras villkor bara användas privat, inte kommersiellt. Ett företag som kör i molnet landar därför på Supabase Pro (~25 USD/mån) och Vercel Pro (~20 USD/mån), eller kör allt lokalt utan abonnemang. Du ser varje öre själv under AI-förbrukning och hos dina leverantörer.

Vad händer med min data om programmet försvinner?

Ingenting — det kör på din infrastruktur och slutar aldrig fungera. Allt kan dessutom alltid exporteras i öppna format (SIE 4, CSV, PDF).

Kan revisorn få tillgång?

Ja — bjud in revisorn med rollen Granskare: hen läser allt (inklusive lön) men kan inte ändra en enda siffra. Eller exportera SIE 4 så läser revisorn året i sitt eget program.

Kan min redovisningsbyrå sköta bokföringen här?

Ja, och det är en annan sak än revisorn ovan. En byrå som ska BOKFÖRA behöver två saker av dig: en byrånyckel under Inställningar → Släppa in andra → Byråns åtkomst, som låter deras översikt läsa några räknare (antal, datum och deadlines — inga belopp), och ett eget konto under Inställningar → Släppa in andra → Användare med rollen Medarbetare, som är det enda som ger dem händer i bokföringen. Granskare räcker inte — den rollen kan inte ändra något. Steg för steg i hjälpcentret under Ge din redovisningsbyrå åtkomst.

Appen är långsam eller sover när jag öppnar den

Supabase gratisnivå pausar projekt efter 7 dagars inaktivitet — logga in på supabase.com och klicka Restore. Bokför du varje vecka händer det aldrig; betalnivån (~25 USD/mån) tar bort begränsningen helt.

Jag har glömt mitt lösenord

Använd Glömt lösenord på inloggningssidan. Administratören kan också återställa via Supabase-panelen (Authentication → Users).

Måste jag använda tvåstegsverifiering?

Nej, den är helt frivillig och avstängd tills du själv slår på den under Min profil → Säkerhet. Vi rekommenderar den ändå: det är den enskilt största skillnaden mellan ett konto som skyddas av ett lösenord och ett som skyddas av ett lösenord plus din telefon.

Jag har tappat telefonen med autentiseringsappen

Du löser det själv utan support: ta bort din tvåstegsfaktor i din Supabase-panel under Authentication → Users, logga in med lösenordet som vanligt och aktivera tvåstegsverifieringen igen med en ny telefon. Steg för steg i hjälpcentret under Tappat din autentiseringsapp? Bokföringen påverkas inte.

Hur säkerhetskopierar jag?

Programmet gör det åt dig varje natt: räkenskapsåret packas som en SIE-fil med underlagen, laddas upp till en lagring du själv äger, läses tillbaka och jämförs mot sitt kontrollvärde — först då räknas kopian som tagen. Läget står under Inställningar → Säkerhetskopior → Säkerhetskopia: när kopian senast lyckades, var den ligger och om något underlag saknades. Destinationen sätts med miljövariabler vid driftsättningen (nycklarna till din lagring ska inte ligga i bokföringsdatabasen); uppsättningen står i docs/SAKERHETSKOPIA.md. Kravet är att kopian förvaras ÅTSKILD från bokföringen [BFNAR 2013:2 p. 8.2], så samma Supabase-projekt duger inte — programmet vägrar sätta upp det. Utöver detta kan du alltid exportera hela året själv under Rapporter.

Kan jag byta tillbaka till Fortnox/Visma senare?

Ja — exportera SIE 4 härifrån och importera där. Ingen inlåsning åt något håll är hela poängen.