Hoppa till innehåll

Kvittoagenten

Kvittoagenten är ögonen på inkommande kvittounderlag. Varje gång du laddar upp en bild eller PDF, vidarebefordrar ett mejl eller fotar i mobilappen triggas Kvittoagenten på ett receipt.uploaded-event.

Vendor-mappningar och kategoriseringsmönster som Kvittoagenten lärt sig specifikt för ditt företag ligger i Agentminnet:

Agentminne-fliken där Kvittoagentens (och övriga agenters) lärda regler lagras — vendor→konto-mappningar, konfidenströsklar, förtydligande undantag.

Kvittoagenten har två jobb:

  1. Extrahera fält — från bilden eller PDF:en läser den belopp, moms, leverantör, datum, OCR-referens.
  2. Matcha mot bankrader — letar efter en befintlig bankrad som motsvarar kvittot (samma belopp, samma datum ± några dagar, matchande motpart).

Resultatet är ett eller flera förslag:

  • Fältextrakt — ett strukturerat extrakt per fält med konfidens.
  • Matchning — om en bankrad hittas, ett förslag om att koppla kvittot till den raden.
  • Kategorisering — utifrån leverantörens historik eller fältmönster.

Två steg — Vision-OCR, sedan Haiku-tolkning

Section titled “Två steg — Vision-OCR, sedan Haiku-tolkning”

Kvittoflödet består av två modellanrop i kedja:

  1. ReceiptOCRService läser själva bilden med Claude Haiku 4.5 + Vision. Ingen mellanliggande klassisk OCR-tjänst — modellen tar bilden direkt och extraherar strukturerade fält (leverantör, belopp, moms, datum, momssats).
  2. Kvittoagenten läser de extraherade fälten via verktyget get_receipt och gör resten — matchar mot bankrader, föreslår kategorisering, skapar förslag i inkorgen.

Att dela upp jobbet så här gör två saker: vision-extraktionen kan cachas och köras oberoende av agentloopen, och själva agenten arbetar på pre-strukturerad text — vilket både går snabbare och gör injection-screenern effektivare (all OCR-text taggas som receipt_ocr innan agenten ser den).

Vision-steget ger stora kvalitetsvinster över klassisk OCR:

  • Layoutförståelse — modellen ser att “1 250,00 kr” i stor text högst upp är totalbeloppet, medan “250,00 kr” längre ner är momsen.
  • Moms-satser — separerar 25 %, 12 %, 6 % om kvittot specificerar flera rader.
  • Underskrifter och stämplar — noterar representationskvitton med deltagare skrivna på baksidan.
  • Dåliga bilder — skakig mobilkamera, skuggor, skrynkligt papper — fungerar bättre med Vision än med klassisk OCR.

Haiku räcker för i princip alla svenska kvitton. Gränsfall (handskrivna kvitton, ovanliga layouter, kvitton på andra språk) går vidare som “Behöver granskning” snarare än att eskaleras till en större modell — bättre att du tittar manuellt än att en större modell gissar.

För ett typiskt kvitto extraheras:

  • Leverantörsnamn — från sidhuvudet, logotypen eller stämpeln.
  • Totalbelopp — inkl moms.
  • Moms per sats — 25/12/6 % separerat om kvittot specificerar flera.
  • Datum — inköpsdagen.
  • OCR-referens — om det är en faktura snarare än ett kassakvitto.
  • Betalmetod — kontant, kort, swish, faktura.
  • Kategori-hint — restaurang, drivmedel, kontorsmaterial, resa (baserat på leverantören och innehållet).

Varje fält har en konfidens från 0 till 100 %.

Efter extraktionen letar Kvittoagenten efter en matchande bankrad:

  • Exakt beloppsmatch — samma belopp.
  • Datum inom ± 3 dagar — beroende på betalmetod.
  • Kortgiro-motpart — om kvittot är från SL och det finns en bankrad med “SL” eller kortgiro-kod.

Finner den en matchning skapas två kopplade förslag:

  1. Bokföringsförslag för kvittot (kontering mot rätt kostnadskonto).
  2. Avstämningsförslag för bankraden (matchad mot kvittots verifikation).

Båda godkänns samtidigt. Tillsammans betyder det att ett enda klick från dig kan bokföra kvittot, matcha bankraden och stänga reskontran — allt i ett svep.

Ett vanligt scenario: du har ett kvitto men har betalat privat (utlägg). Då finns ingen bankrad från företagskontot. Kvittoagenten:

  • Märker avsaknaden av matchning.
  • Föreslår kontering mot kostnadskontot.
  • Debiterar utläggskonto (2890 Privatkonto) istället för 1930 (bank).
  • Flaggar kvittot för utlägg i statusbaren så du ser att det kommer bokföras mot privatperson-kontot.

Senare reglerar du utlägget genom att antingen göra en överföring från företagskontot till ditt privata, eller låta utlägget stå som privat tillskott i företaget.

Representationskvitton har regler som Kvittoagenten hanterar specifikt:

  • Avdragsgränsen — max 60 kr per person och tillfälle för måltid. Överstigande belopp bokförs som ej avdragsgill representation (6073).
  • Specifikation — kvittot måste visa vilka som deltagit. Saknas specifikationen flaggar agenten att momsen inte får dras.
  • Belopp per deltagare — agenten försöker räkna ut antal deltagare om kvittot har information om det.

Saknas specifikation skickar agenten kvittot som “Behöver granskning” och ber dig fylla i manuellt — inte för att den inte kan extrahera, utan för att bokföringslagligt behövs kompletterande information.

Två parallella vägar för mejl:

  • kvitto+<tenant>@redofy.se — för att skicka in kvitton. Redofy identifierar dig via avsändaradress.
  • Vidarebefordra från mobilens mejl — har du fått ett digitalt kvitto (Uber, restaurang-tipset, bokning) vidarebefordrar du det direkt.

Agenten processar varje bifogad fil som ett eget kvitto. Flera kvitton i samma mejl hanteras separat.

Kvittobilder kan innehålla personinformation — kunder på restaurang, personnummer på specialkvitton, bilder som råkat komma med i ramen. Redofy:

  • Lagrar bilderna krypterat i Cloudflare R2 (EU-region).
  • Förbehandlar bilder för att skicka bara relevanta pixlar till modellen.
  • Raderar bilder efter 7 år (BFL-retention) förutom för anställdas privata resekvitton som raderas efter anställningens slut + arkivtid.
  • Ger ingen agent åtkomst till bilder som inte behövs för dess uppgift.

Stängs Kvittoagenten av händer följande:

  • Kvitton du laddar upp hamnar i Dokument → Kvitton som obehandlade.
  • Ingen automatisk OCR.
  • Inga matchningar mot bankrader.
  • Du måste manuellt fylla i belopp och moms och bokföra kvittot som vanligt.

Detta är sällan önskvärt — Kvittoagenten är en av de agenter som ger mest tidsbesparing per kostad kr.