Kvitton misslyckas inte för att du inte bryr dig. De misslyckas för att de hamnar på fem ställen: din kamerarulle, WhatsApp, mejlen, en skrynklig papperslapp i fickan och ”jag tar det sen”. Och så kommer månadsavslutet och du gissar.
Om du är företagare och vill hålla utgifterna korrekta, en marknadsförare som jonglerar korttransaktioner mellan verktyg, eller en frilansare som bara vill att deklarationssäsongen ska vara smidig, så löser automatiserad kvittologgning i Telegram den irriterande delen. Du skickar ett kvitto. Det blir en prydlig rad i Sheets. Klart.
Den här guiden visar vad workflowet gör, vilka resultat du kan förvänta dig och vad du behöver innan du slår på det i n8n.
Så fungerar automatiseringen
Här är hela workflowet du kommer att sätta upp:
n8n Workflow Template: Telegram till Google Sheets, kvitton loggas direkt
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Trigger"]
n1@{ icon: "mdi:cog", form: "rounded", label: "Aggregate1", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Extract from File", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n5@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n7@{ icon: "mdi:wrench", form: "rounded", label: "Calculator", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Get a file1"]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Get a file2"]
n11@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet", pos: "b", h: 48 }
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send a text message"]
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code in JavaScript"]
n14@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet in Googl..", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "Upload file", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "Upload file1", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge1"]
n18@{ icon: "mdi:robot", form: "rounded", label: "Analyze an image", pos: "b", h: 48 }
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n20@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n21@{ icon: "mdi:robot", form: "rounded", label: "AI Agent1", pos: "b", h: 48 }
n22@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory1", pos: "b", h: 48 }
n23@{ icon: "mdi:wrench", form: "rounded", label: "Calculator1", pos: "b", h: 48 }
n24["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send a text message1"]
n25@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet in Googl..", pos: "b", h: 48 }
n26@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n20 --> n1
n19 --> n20
n17 --> n20
n8 --> n9
n8 --> n10
n8 --> n21
n3 --> n11
n21 --> n24
n1 --> n3
n7 -.-> n3
n23 -.-> n21
n9 --> n13
n10 --> n16
n10 --> n2
n15 --> n19
n16 --> n17
n5 -.-> n3
n22 -.-> n21
n18 --> n19
n0 --> n8
n2 --> n17
n13 --> n15
n13 --> n18
n11 --> n12
n4 -.-> n3
n6 -.-> n3
n26 -.-> n21
n14 -.-> n3
n25 -.-> n21
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n3,n6,n18,n21 ai
class n4,n26 aiModel
class n7,n23 ai
class n5,n22 ai
class n8,n20 decision
class n11,n14,n25 database
class n13 code
classDef customIcon fill:none,stroke:none
class n0,n9,n10,n12,n13,n17,n19,n24 customIcon
Därför spelar det roll: kvittohanteringen faller först
Kostnadsuppföljning börjar ofta med goda intentioner och slutar i ett rörigt kalkylark. Du köper något, säger till dig själv att du ska logga det senare, och kvittot försvinner in i mobilen. När du väl sätter dig blir den ”snabba uppdateringen” en långsam jakt på datum, belopp, leverantörer och kategorier. Än värre: manuell inmatning bjuder in små fel som skapar stor förvirring. En duplicerad transaktion eller ett saknat kvitto räcker för att du ska tappa förtroendet för siffrorna, och då känns budgetering och kassabeslut som gissningar.
Det går fort att tappa kontrollen. Så här brukar det brista i praktiken.
- Du lägger cirka 10 minuter per kvitto på att hitta det, läsa det och skriva in det i ett ark.
- Foton och PDF:er kopieras inte in rent, så belopp skrivs fel och kategorier driver över tid.
- Kvitton ligger utanför din bokföringskedja, vilket gör att du inte snabbt kan styrka ett köp i efterhand.
- Även när du loggar allt kan du ändå inte enkelt svara på frågor som ”mat förra månaden vs den här månaden” utan extra arbete.
Vad du bygger: en Telegram-bot som loggar kvitton åt dig
Det här workflowet gör Telegram till din inkorg för utgifter. Du meddelar din bot med en kvittobild, en PDF eller till och med ren text som ”10 nov – 2500 NGN – Uber”. n8n känner av vad du skickade, hämtar filen från Telegram och laddar upp den till Google Drive (så att du alltid har originalet sparat). Är det en bild kör den OCR och extrahering med en Gemini Vision-modell. Är det en PDF hämtar den dokumenttexten. Sedan omvandlar en AI-agent den råa texten till felfria, strukturerade fält som datum, belopp, beskrivning och kategori, och lägger till en ny rad i Google Sheets. Till sist får du en tydlig bekräftelse i Telegram, så att du vet att allt är loggat.
Workflowet innehåller även en andra ”fråga”-väg. När du skriver en fråga i stället för att skicka ett kvitto läser en AI-agent ditt Google Sheet i realtid, använder ett kalkylverktyg för totalsummor och svarar med riktiga svar direkt i Telegram.
Det här bygger du
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du samlar in cirka 20 kvitton i veckan. Manuellt, runt 10 minuter styck, blir det ungefär 3 timmar av småuppgifter som du sannolikt skjuter till fredag kväll. Med det här workflowet är loggningen i princip den tid det tar att vidarebefordra ett foto eller en PDF i Telegram (säg en minut), plus en kort väntan medan OCR och AI-agenten kör. Du får tillbaka de där 3 timmarna, och ditt ark är aktuellt i stället för ”uppdateras senare”.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Telegram för att skicka kvitton till din bot
- Google Sheets för att lagra dina utgiftsrader
- Google Drive för att spara kvittofiler
- Gemini API-nyckel (hämta den i Google Cloud Console)
Svårighetsnivå: Medel. Du kommer att kopiera ID:n, koppla OAuth-inloggningar och testa några meddelandetyper i Telegram.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Ett Telegram-meddelande triggar allt. Workflowet startar när din Telegram-bot tar emot ett foto, ett dokument (som en PDF) eller ett vanligt textmeddelande.
Meddelandetyp-routning avgör vägen. En Switch-nod kontrollerar vad som kom in och skickar det vidare till bildhantering, PDF-hantering eller finansagenten för ”ställ en fråga”.
Kvitton lagras och tolkas. För foton och PDF:er laddas filen ner från Telegram, laddas upp till Google Drive och konverteras sedan till användbar text (Gemini Vision för bilder, PDF-extrahering för dokument). Texten slås ihop med Drive-länken och skickas till AI-agenten för kvittohantering.
Strukturerade rader hamnar i Google Sheets (och du får ett svar). AI-agenten returnerar strukturerade fält som datum, belopp, beskrivning och kategori, och sedan lägger n8n till dem i ditt ark och bekräftar i Telegram. För frågor läser frågeagenten arket via en verktygsnod och skickar tillbaka ett svar i chatten.
Du kan enkelt ändra kategorierna och målarket så att det matchar hur du följer upp utgifter. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-implementeringsguide
Steg 1: Konfigurera Telegram-triggern
Sätt upp Telegram-lyssnaren som startar arbetsflödet varje gång ett nytt meddelande kommer in.
- Lägg till noden Telegram Incoming Trigger och ställ in Updates till
message. - Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter i Telegram Incoming Trigger.
- Spara arbetsflödet så att n8n registrerar Telegram-webhooken.
Steg 2: Routa meddelanden efter typ
Routa inkommande meddelanden till flöden för bild, dokument eller textfråga.
- I Route by Message Type, bekräfta att första regeln kontrollerar om bild finns med
{{ $json.message.photo[0].height }}. - Bekräfta att den andra regeln kontrollerar om dokument finns med
{{ $json.message.document.mime_type }}. - Säkerställ att output 1 är kopplad till Fetch Image File, output 2 till Retrieve Document File och output 3 till Finance Query Agent.
Steg 3: Konfigurera intag för bild och dokument (parallella grenar)
Hantera bild- och PDF-kvitton, lagra filer i Drive och extrahera innehåll för OCR.
- I Fetch Image File, ställ in File ID till
{{ $json.message.photo[0].file_id }}och Resource tillfile. Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter. - I Transform Binary Script, behåll standard-JavaScript som mappar binärdata till
base64Image. - Transform Binary Script skickar output till både Drive Upload Image och Gemini Image Analysis parallellt.
- I Drive Upload Image, ställ in Name till
{{ $json.result.file_unique_id }}och välj er Drive-Folder ID (ersätt[YOUR_ID]). Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter. - I Gemini Image Analysis, ställ in Resource till
image, Input Type tillbinaryoch Operation tillanalyze. Inloggningsuppgifter krävs: Anslut era googlePalmApi-inloggningsuppgifter. - I Retrieve Document File, ställ in File ID till
{{ $json.message.document.file_id }}och Resource tillfile. Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter. - Retrieve Document File skickar output till både Drive Upload Document och Extract PDF Content parallellt.
- I Drive Upload Document, ställ in Name till
{{ $('Retrieve Document File').item.json.result.file_id }}och välj målmappen (ersätt[YOUR_ID]). Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter. - I Extract PDF Content, ställ in Operation till
pdf. - Koppla Drive Upload Image och Gemini Image Analysis till Combine Image Streams; koppla Drive Upload Document och Extract PDF Content till Combine Document Streams.
[YOUR_ID]. Ersätt dem med era riktiga Google Drive-mapp-ID:n och Sheet-ID:n.Steg 4: Bygg pipeline för kvittohantering
Validera kombinerade indata, aggregera data och använd AI-agenten för att extrahera kvittodetaljer.
- Från Combine Image Streams och Combine Document Streams, koppla till Validate Combined Input, och sedan till Aggregate Receipt Data.
- I Aggregate Receipt Data, ställ in Aggregate till
aggregateAllItemData. - I Receipt Processing Agent, ställ in Text till
{{ $json.data }}, och behåll Prompt Type somdefine. - Koppla Gemini Chat Model som språkmodell för Receipt Processing Agent. Inloggningsuppgifter krävs: Anslut era googlePalmApi-inloggningsuppgifter i Gemini Chat Model.
- Koppla Conversation Memory och Structured Output Formatter som AI-subnoder för Receipt Processing Agent. Lägg till inloggningsuppgifter i Gemini Chat Model (parent), inte i dessa subnoder.
- Koppla Math Utility och Fetch Sheet Records som verktyg för Receipt Processing Agent. Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Fetch Sheet Records.
Steg 5: Konfigurera kvittolagring och Telegram-svar
Lagra extraherade kvittodata i Google Sheets och bekräfta till användaren i Telegram.
- I Append Expense Row, ställ in Operation till
append, välj ert Document ID ([YOUR_ID]) och Sheet NameSheet1. - Mappa kolumner: Date till
{{ $json.output.data.date }}, Category till{{ $json.output.data.category }}, Discription till{{ $json.output.data.description }}, Amount in Naira till{{ $json.output.data.amount }}, och google drive image till{{ $('Aggregate Receipt Data').item.json.data[1].webViewLink }}. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Append Expense Row.
- I Send Telegram Reply, ställ in Text till
{{ $('Receipt Processing Agent').item.json.output.message }}och Chat ID till{{ $('Telegram Incoming Trigger').item.json.message.chat.id }}. - Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter i Send Telegram Reply.
Steg 6: Sätt upp flödet för finansfrågeassistenten
Svara på textbaserade finansfrågor med en separat AI-agent och verktyg.
- I Finance Query Agent, ställ in Text till
{{ $json.message.text }}och behåll Prompt Type somdefine. - Koppla Secondary Gemini Model som språkmodell för Finance Query Agent. Inloggningsuppgifter krävs: Anslut era googlePalmApi-inloggningsuppgifter i Secondary Gemini Model.
- Koppla Conversation Memory 2, Math Utility 2 och Fetch Sheet Records 2 som AI-subnoder/verktyg för Finance Query Agent. Lägg till inloggningsuppgifter i Fetch Sheet Records 2 (parent är noden själv): Inloggningsuppgifter krävs: googleSheetsOAuth2Api.
- I Send Query Response, ställ in Text till
{{ $json.output }}och Chat ID till{{ $('Telegram Incoming Trigger').item.json.message.chat.id }}. Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter.
Steg 7: Testa och aktivera ert arbetsflöde
Validera både kvittohanteringen och finansfrågeflödet innan ni slår på arbetsflödet.
- Klicka på Execute Workflow och skicka ett bildkvitto till er Telegram-bot för att testa kvittovägen.
- Verifiera att en ny rad dyker upp i Google Sheets och att ni får en bekräftelse från Send Telegram Reply.
- Skicka en textfråga som “Hur mycket spenderade jag på mat förra månaden?” och bekräfta att Send Query Response svarar.
- När allt fungerar, växla arbetsflödet till Active för att möjliggöra användning i produktion.
Felsökningstips
- Google Drive- eller Google Sheets-inloggningar kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, börja med att kontrollera credential-status i n8n → Credentials.
- Om du använder Wait-noder eller extern rendering varierar process-tiderna. Öka väntetiden om efterföljande noder misslyckas på grund av tomma svar.
- Gemini-prompter och extraheringsregler börjar generiskt. Lägg in din kategorilista och exempelkvittton tidigt, annars kommer du att korrigera ”Övriga grejer” i all evighet.
Snabba svar
Cirka 30 minuter om dina Google- och Telegram-konton är redo.
Nej. Du kopplar främst inloggningar och klistrar in ett Sheet-ID och ett Drive-mapp-ID.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med kostnader för Gemini API-användning, som beror på hur många kvitton du bearbetar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du troligen. Du kan justera kategorilistan i prompten för Receipt Processing Agent, byta målark i Append Expense Row-noden och ändra Drive-mappen som används av Drive Upload Image/Document-noderna. Om du senare föredrar en annan AI-leverantör är Gemini Chat Model-noderna de främsta delarna du byter ut, medan Telegram- och Google-stegen kan vara oförändrade.
Oftast beror det på en felaktig bot-token eller att fel Telegram-inloggning är vald i någon av Telegram-noderna. Generera om token i BotFather, uppdatera den i n8n Credentials och bekräfta sedan att varje Telegram-nod (trigger, filhämtning, svar) pekar på samma inloggning. Om det bara fallerar vid nedladdningar kan boten sakna åtkomst till chatten där du skickar kvitton, så testa i ett direktmeddelande först. Kolla även körloggarna; Telegram-fel är oftast tydliga, ärligt talat.
Self-hosted n8n har ingen fast gräns för körningar, så det beror främst på din server och dina AI API-gränser. I n8n Cloud beror dina månatliga körningar på plan-nivå, och kvittobearbetning kan använda fler än en körning per kvitto eftersom det laddar ner, laddar upp, extraherar och loggar. I praktiken kör de flesta små team dussintals kvitton per dag utan problem, och skalar sedan upp när de är säkra på att extraheringen är stabil.
Ibland, ja. Det här workflowet har förgreningar (foto vs PDF vs fråga), filhantering till Drive, strukturerad AI-output och en ”fråga arket”-agent i realtid, vilket är den typ av logik som lätt blir krånglig eller dyr med Zapier-liknande prissättning per task. n8n ger dig också self-host-alternativet, vilket är viktigt om du vill ha förutsägbara kostnader och mer integritet. Om du bara behöver ”Telegram-meddelande → skapa en rad” kan Zapier eller Make vara snabbare att sätta upp. För allt som involverar OCR, kategorisering och att svara på utgiftsfrågor är n8n oftast det smidigare valet på sikt. Om du vill ha en second opinion innan du bestämmer dig, prata med en automationsexpert.
När det här väl rullar slutar kvitton vara ett helgprojekt och blir administration i bakgrunden. Ditt ark håller sig felfritt, dina filer är organiserade i Drive och workflowet svarar på utgiftsfrågor när du frågar.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.