Modulkatalog/bookkeeping-agent
Modul, Ekonomi och sälj

Bokföringsagent

Kvitton in, verifikat ut till Fortnox eller Visma. 8 sek per faktura.

10/10
Tester godkända
7
Block per bundle
Ed25519
Signering
Produktion
Status
Ladda ner exempel-bundleVerifiera bundleBoka demo
Vad modulen gör

Bokforingsagent

Modul-ID: bookkeeping-agent Version: 1.0.0 Voice: kapaciti (svensk B2B-ton) Modell: claude-haiku-4-5

Vad gor modulen

Bokforingsagenten tar emot ett kvitto eller en faktura, antingen som ren OCR-text eller med forparsade falt fran ett upstream-system, och producerar ett komplett konteringsforslag enligt BAS-kontoplanen. Den extraherar leverantor, belopp, moms och datum, foreslar verifikatsrader pa de korrekta BAS-kontona, raknar fram en JSON-payload redo att skickas till Fortnox eller Visma, och flaggar anomalier som dubbletter, suspekta leverantorer och felberaknad moms. Varje verifikat referar till Bokforingslagen 1999:1078 kapitel 7 paragraf 2, sju ars arkiveringsplikt fran rakenskapsarets slut, sa att kedjan fran kalldokument till bokfort verifikat ar komplett vid revision.

Modulen ar byggd som ett tillagg ovanpa upphandlade ekonomisystem. Den ersatter inte redovisningskonsulten, den forbereder underlaget och gor 80% av jobbet pa atta sekunder per faktura. Varje korning producerar en signerad audit-bundle med hash-chain enligt kapaciti-modules-standarden.

Indata

{
  document_id: "string",
  document_type: "kvitto | faktura | kreditfaktura | annat",
  source: "ocr | email-attachment | manual-upload | supplier-api",
  raw_text: "string",
  metadata: { received_at, file_size_bytes, mime_type },
  detected_fields: { vendor_name, vendor_org_nr, invoice_number, invoice_date, due_date, total_amount_sek, vat_amount_sek, currency },
  company_context: { org_nr, fiscal_year_start, accounting_system: "fortnox | visma | bjorn-lunden" }
}

Validering sker i validateInput. Saknas raw_text, company_context eller om document_type ligger utanfor whitelistan kastas fel innan modellen anropas. Forparsade falt i detected_fields ar optionella men anvands aktivt om de finns, agenten verifierar dem mot raw_text och flaggar avvikelser.

Utdata

Modellen returnerar plain text i fast struktur. Finance-integrationen parsar nycklarna och kan kopiera EXPORT_FORMAT_FORTNOX direkt till en POST-request.

DOKUMENTBEDOMNING: validt | osakert | ogiltigt
ANLEDNING: <kort text>

EXTRAHERAT:
- LEVERANTOR, LEVERANTOR_ORGNR, FAKTURA_NUMMER, FAKTURA_DATUM, FORFALLODATUM
- BELOPP_INKL_MOMS_SEK, MOMS_SEK, MOMS_PROCENT, VALUTA

KONTERINGSFORSLAG:
- DEBET: <konto> | <belopp> | <kommentar>
- KREDIT: <konto> | <belopp> | <kommentar>

VERIFIKATIONS_TYP: leverantorsfaktura | kontantkvitto | kreditfaktura | utlagg
PERIODISERING_FORESLAG: ja-period-X | nej

ANOMALIER:
- <0-5 flaggor>

ESKALERA_TILL_REVISOR: ja | nej
ESKALERINGS_ANLEDNING: <text>

EXPORT_FORMAT_FORTNOX:
{ ... JSON ... }

BOKFORINGSLAGEN_REFERENS:
<retention-motivering>

BAS-kontoplan, de vanligaste valen

| Konto | Klass | Anvandning | |-------|-------|-----------| | 1510 | Tillgang | Kundfordringar | | 1630 | Tillgang | Skattekonto Skatteverket | | 1930 | Tillgang | Foretagskonto bank | | 2440 | Skuld | Leverantorsskulder | | 2641 | Skuld | Ingaende moms 25% | | 2642 | Skuld | Ingaende moms 12% | | 2643 | Skuld | Ingaende moms 6% | | 2710 | Skuld | Personalens kallskatt | | 2731 | Skuld | Sociala avgifter | | 3001 | Intakt | Forsaljning 25% inom Sverige | | 3041 | Intakt | Forsaljning 12% inom Sverige | | 4010 | Kostnad | Varuinkop inom Sverige | | 4056 | Kostnad | Inkop tjanster tredje land | | 4515 | Kostnad | Inkop tjanster EU omvand skattskyldighet | | 5410 | Kostnad | Forbrukningsmaterial | | 5611 | Kostnad | Drivmedel | | 5800 | Kostnad | Reskostnader | | 6212 | Kostnad | Mjukvara abonnemang | | 6230 | Kostnad | Telefon och internet | | 6552 | Kostnad | Konsultarvoden | | 6991 | Kostnad | Ovriga externa kostnader | | 7610 | Kostnad | Utbildning personal |

Momsverifiering

Vid svensk faktura kontrollerar agenten att den extraherade momsen stammer mot total inkl moms. 25% moms ger moms = total times 0.20. 12% ger 0.107143. 6% ger 0.056604. Avvikelse over 5% flaggas som ANOMALI och dokumentet markeras som osakert.

Vid utlandsk leverantor med omvand skattskyldighet bokas hela beloppet pa 4515 (EU-tjanster) eller 4056 (tredje land). Ingen ingaende moms ska bokas. Agenten kommenterar detta i konteringen och i ANOMALIER om kallan ar otydlig.

Anomalier

Fem mallar agenten letar efter: duplikatkvitto (samma leverantor, datum och belopp inom 30 dagar), suspekt leverantor (saknar orgnr och webbsida), onormalt belopp (enstaka post over 50000 SEK utan kontext), saknad moms pa svensk faktura, felberaknad moms (avvikelse over 5% mellan detected_fields.vat_amount_sek och beraknat). Vid tva eller fler anomalier eskalerar agenten till revisor.

Bokforingslagen och retention

Varje verifikat och underlag sparas i sju ar fran rakenskapsarets slut enligt Bokforingslagen 1999:1078 kapitel 7 paragraf 2. Modulen lagger in denna referens i varje output med motivering kopplad till dokumenttypen och rakenskapsaret. Audit-bundlen i sig ar en parallell retention-mekanism, signerad och hash-kedjad, sa att kopplingen kalldokument till verifikat till revisor-attest gar att verifiera matematiskt aven flera ar efter handelsen.

Audit-chain

Varje korning bygger en audit-trail med blocken input_received, context_loaded, agent_call, output_generated, voice_validated, output_validated, audit_sealed. Bundlen signeras med kapaciti-modules Ed25519-nyckel och verifieras med kapaciti-site/scripts/verify-audit-bundle.mjs eller lib/audit-chain.mjs::verifyBundle. Hash-kedjan ar genesis-baserad sa att ett enda manipulerat block bryter verifieringen fran och med det blocket.

Voice-profil

Output passerar validateAgainstVoice("kapaciti"). Forbjudna ord och tankstreck spelar mindre roll i den maskinlasbara delen men granskas anda for SVARSUTKAST och kommentarer.

Anvandning

import { BookkeepingAgent } from "kapaciti-modules/modules/bookkeeping-agent.mjs";

const agent = new BookkeepingAgent();
const res = await agent.run(invoiceInput, { writeBundle: "./bundles/inv-anthropic-may.json" });

if (res.error === "usage_cap") {
  // retry senare, claude CLI har natt rate-limit
}

console.log(res.output);
console.log("Audit-bundle:", res.bundle.run_id, "blocks:", res.bundle.entries.length);

Begransningar

Agenten ser inte PDF-bilagor direkt. OCR-laget maste leverera raw_text och eventuellt forparsade falt. Agenten ar konservativ vid utlandsk valuta och flaggar alltid vaxlingsbehov till manuell granskning. Periodiseringsforslag (PERIODISERING_FORESLAG) ar idag enkel logik baserad pa beloppets storlek och tjanstetypen, mer avancerad periodisering kraver kontextfran tidigare verifikat och kommer i v1.1.

v1.1 TODO

  • Periodiseringslogik kopplad mot kontoplanens kostnadskonton och bokslutsperiod
  • Auto-matchning mot tidigare leverantorer for konsistent kontering
  • Stod for kvittokrop med integration mot Skatteverkets representationsregler
  • Memory-card for tracking dubblettrisk per leverantor och faktura-nummer
  • Valutakonvertering med Riksbankens dagliga kurser
  • Stod for kreditfakturor kopplade till tidigare bokfort verifikat
Prova live

Kör bokföringsagent i webbläsaren.

Justera input-objektet eller använd starter-värdena. När du trycker på Kör modulen anropas samma agent som i produktion. Audit-kedjan byggs framför dig och hela sessionen signeras med Ed25519 i samma format som exempel-bundlen ovan.

Input (bookkeeping-agent schema)

JSON-payload som matchar modulens validateInput. Starter-värdena kommer från en riktig produktionskörning. Max 12 000 tecken.

Tecken: 976 / 12 000
Audit-kedja, live

Audit-kedjan visas här när scenariot körs

● Nyhetsbrev

EU AI Act, sandbox-status och svensk AI-infrastruktur.

En sammanfattning ungefär en gång i månaden. Vad förändrats i regelverket, vilka pilot-cases vi sett och vilka vendor-shifts som påverkar svenska bolag. Skickas av oss, inte av en automation som låtsas vara oss.

Uppgifterna används endast för nyhetsbrevet. Inga utskick utöver det utan separat samtycke. Avregistrera när som helst via länk i mailet.