Koppla e-post och n8n – så kommer kvitton in automatiskt
Så läser du kvitton direkt från inkorgen: vem hämtar mejlen, vem tolkar innehållet (OCR/AI) och hur du kopplar n8n, vidarebefordran eller Microsoft 365.
Hantera bolaget enklare med Bokförat – prova kostnadsfritt.
Kom igångSteg för steg
1. 1. Förstå rollfördelningen – vem gör vad?
Det är två helt separata jobb. TRANSPORT: n8n (eller vidarebefordran) loggar in i inkorgen, hittar mejl med bilagor och skickar filen vidare till appen. n8n tolkar alltså INGENTING – det är bara ett rör. TOLKNING: appen gör OCR och AI-tolkning själv, i serverfunktionen som läser filen, plockar ut leverantör, datum, belopp, moms, valuta och timmar och lägger sedan förslag på matchning mot banktransaktion. Du behöver alltså inte köpa någon OCR-tjänst i n8n – låt n8n skicka rå PDF/bild och låt appen göra resten.
2. 2. Välj metod: vidarebefordran eller n8n
Enklast: skapa en regel i din e-post som vidarebefordrar allt med bilaga från leverantörer till en särskild adress, och ladda upp därifrån. Automatiskt: n8n pollar inkorgen var 15:e minut (Gmail-, Outlook- eller IMAP-nod), plockar bilagan och POSTar den till appens webhook. Välj n8n om du vill slippa allt handpåläggande.
3. 3. Bygg n8n-flödet
Noder i ordning: (1) Schedule Trigger var 15:e minut. (2) Gmail/Microsoft Outlook/IMAP – 'Get Many Messages', filtrera på has:attachment och gärna på ämnesord som kvitto, receipt, faktura, invoice, order. Filtrera hellre för brett än för smalt – smala filter är den vanligaste orsaken till att kvitton från t.ex. Google eller utländska leverantörer aldrig kommer in. (3) 'Download Attachment' så du får binärdata. (4) Convert to File / Extract → base64. (5) HTTP Request som POSTar till appen.
n8n-dokumentation4. 4. Konfigurera HTTP Request-noden mot appens webhook
Method: POST. URL: https://<din-app>/api/public/ingest/receipt. Headers: content-type: application/json och x-webhook-secret med värdet av N8N_WEBHOOK_SECRET. Body (JSON): external_id (mejlets id så inget dubbelimporteras), file_name, file_base64, mime_type, receipt_date, source: "email". Belopp och moms kan du lämna tomma – appen fyller i dem vid OCR. Det finns även /api/public/ingest/transaction för banktransaktioner och /api/public/ingest/match för färdiga matchningsförslag.
5. 5. Autentisering och hemlighet
Alla ingest-endpoints kräver headern x-webhook-secret. Värdet ligger som miljövariabeln N8N_WEBHOOK_SECRET och visas aldrig i appen. Roterar du den måste du uppdatera n8n-noden samma dag, annars får du 401 på varje körning.
6. 6. Verifiera importen
Kör flödet manuellt i n8n en gång. På Importstatus ser du varje anrop med statuskod, svarstid och eventuellt fel – 200 betyder att kvittot ligger i databasen. Därefter dyker det upp på Inlästa underlag, tolkas av OCR och får matchningsförslag mot banktransaktionerna.
7. 7. Om tolkningen blir fel
Öppna kvittot och kör om OCR – appen läser om filen och uppdaterar leverantör, belopp och valuta. Kvitton i USD/EUR växlas om till SEK innan matchning, så ett kvitto på 50 USD ska matcha en transaktion på cirka 550 kr, inte 50 kr. Blir fältet tomt saknas oftast text i PDF:en (ren bild) – då hjälper en skarpare bild eller manuell komplettering.
Vanliga fallgropar
- Bygga OCR i n8n – onödigt, appen tolkar filen själv. n8n ska bara transportera.
- För smala mejlfilter: kvitton från Google, Apple och utländska leverantörer har sällan ordet 'kvitto' i ämnet.
- Sakna external_id – då importeras samma mejl om och om igen vid varje pollning.
- Skicka länk till bilagan i stället för filinnehållet: appen behöver själva filen (base64) för att kunna läsa den.
- Personliga Hotmail/Outlook.com-konton kräver inloggning med användaren (tenant 'consumers'), inte app-behörighet.
Frågor och svar
Läs också
Hantera bolaget enklare med Bokförat – prova kostnadsfritt.
Kom igångGuiderna är allmän vägledning, inte skatterådgivning. Belopp och avgifter kan ändras – kontrollera alltid aktuella uppgifter hos Bolagsverket och Skatteverket.