Du köper något, tänker ”jag loggar det senare”, och sedan händer senare aldrig. En vecka går, kvitton försvinner ner i jackor och ditt Google Sheet blir en gissningslek.
Utgiftsloggning i Telegram drabbar soloföretagare först, ärligt talat. Men byråägare som jonglerar kundkostnader och marknadschefer som försöker stämma av verktygskostnader känner av det också. Det här flödet fångar utgifter i samma ögonblick de uppstår och skickar in dem i Google Sheets med kategorier, valutakonvertering och totalsummor som faktiskt förblir korrekta.
Du får se hur automatiseringen fungerar, vad du behöver för att köra den och vilka ändringar de flesta gör för att den ska passa deras kategorier och rapporteringsstil.
Så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Telegram till Google Sheets, logga utgifter löpande
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "Agent", pos: "b", h: 48 }
n1["<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"]
n2@{ icon: "mdi:wrench", form: "rounded", label: "MCP Client", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Rename Fields", 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/>Get Voice File from Telegram"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Convert Voice to Text (Eleve.."]
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Input by Message Type", pos: "b", h: 48 }
n15["<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/>Download Receipt Image"]
n16@{ icon: "mdi:robot", form: "rounded", label: "Extract Receipt Data", pos: "b", h: 48 }
n17@{ icon: "mdi:robot", form: "rounded", label: "Classify Message Intent", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route to Expense or Query Pr..", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Parse and Split Multiple Exp..", pos: "b", h: 48 }
n20@{ icon: "mdi:brain", form: "rounded", label: "Intent Classification Model", pos: "b", h: 48 }
n21@{ icon: "mdi:brain", form: "rounded", label: "Expense Parsing Model", pos: "b", h: 48 }
n22@{ icon: "mdi:brain", form: "rounded", label: "Main Financial Assistant", pos: "b", h: 48 }
n23["<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 Message"]
n0 --> n23
n2 -.-> n0
n11 --> n17
n1 --> n14
n16 --> n11
n21 -.-> n19
n15 --> n16
n17 --> n18
n22 -.-> n0
n20 -.-> n17
n14 --> n11
n14 --> n12
n14 --> n15
n12 --> n13
n19 --> n0
n13 --> n11
n18 --> n0
n18 --> n19
end
subgraph sg1["MCP Server Flow"]
direction LR
n3@{ icon: "mdi:play-circle", form: "rounded", label: "MCP Server Trigger", pos: "b", h: 48 }
n4@{ icon: "mdi:wrench", form: "rounded", label: "Calculator", pos: "b", h: 48 }
n5@{ icon: "mdi:database", form: "rounded", label: "Total_Spent_Tool", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Balance_Tool", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Expenses_Tool", pos: "b", h: 48 }
n8@{ icon: "mdi:web", form: "rounded", label: "Exchange_Rate", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "Add_Expenses_Tool", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Read_Rows_Tool", pos: "b", h: 48 }
n4 -.-> n3
n6 -.-> n3
n8 -.-> n3
n7 -.-> n3
n10 -.-> n3
n5 -.-> n3
n9 -.-> n3
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 n1,n3 trigger
class n0,n16,n17,n19 ai
class n20,n21,n22 aiModel
class n2,n4 ai
class n14,n18 decision
class n5,n6,n7,n9,n10 database
class n13,n8 api
classDef customIcon fill:none,stroke:none
class n1,n12,n13,n15,n23 customIcon
Problemet: utgifter blir inte loggade när livet är stressigt
Utgiftsspårning fallerar i de små glappen mellan ”köp” och ”registrera”. Du sitter i en taxi, tar en kaffe med en kund, köper ett SaaS-tillägg, betalar i en annan valuta och lovar dig själv att du tar det vid skrivbordet. Sedan rullar dagen vidare. När du väl öppnar kalkylarket återskapar du historien från bankrader som säger saker som ”SQ *STORE 3941”. Det är långsamt, irriterande och det saboterar din rapportering i det tysta eftersom du slutar lita på totalsummorna.
Friktionen växer. Här är var det brukar haverera i verkligheten.
- Du tappar 10 minuter per utgift på att leta efter ”rätt” detaljer (leverantör, kategori, anteckningar), och det blir snabbt mycket på en vecka.
- Kvittofoton ligger i kamerarullen tills de är nedgrävda, vilket gör att du saknar skatteklar dokumentation när du behöver den.
- Köp i utländsk valuta loggas fel eftersom du ”konverterar senare”, och sedan glömmer du vilken kurs du tänkte använda.
- Kategoriseringen glider över tid, så en månad blir ”Måltider” till ”Restaurang”, och din analys blir ett städprojekt.
Lösningen: logga utgifter i Telegram, låt Google Sheets vara felfritt
Det här flödet gör Telegram till en lättviktig inkorg för utgifter. Du skickar ett meddelande till din bot direkt när det händer med vanlig text (”Uber till flygplatsen $34”), ett röstmeddelande medan du går eller ett kvittofoto direkt efter betalning. n8n känner av vilken typ av meddelande som kom in och skickar det till rätt hantering: röst transkriberas, kvittobilder skannas med datorseende och text tolkas direkt. Sedan avgör ett AI-steg om du loggar en utgift eller ställer en fråga (”Hur mycket har jag lagt på mat den här veckan?”). Om det är en utgift kan flödet dela upp flera poster, normalisera belopp, konvertera valutor till en basvaluta (USD som standard), tilldela en kategori från en definierad lista och lägga till en prydlig rad i Google Sheets. Till sist svarar den i Telegram med en bekräftelse eller en snabb insikt om din konsumtion.
Flödet startar med ett Telegram-meddelande. AI:n plockar ut belopp, handlare och kategori och använder en växelkursuppslagning vid behov. Google Sheets blir källan som gäller, medan Telegram fortsätter vara det enkla inmatningslagret som du faktiskt använder.
Det du får: automatisering vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du loggar 20 utgifter på en vecka: några måltider, transport, små mjukvaruköp och ett par kvitton. Manuellt, även en ”snabb” process tar kanske 5 minuter styck när du ska hitta kvittot, välja kategori och skriva anteckningar, alltså runt 100 minuter totalt. Med det här flödet vidarebefordrar du en bild eller skickar ett röstmeddelande i Telegram på ungefär 30 sekunder och väntar sedan en minut på bearbetning. Det blir cirka 10 minuters faktisk insats för hela veckan, och arket hålls uppdaterat löpande.
Det du behöver
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Telegram Bot API för att ta emot meddelanden och svara.
- Google Sheets för att lagra utgifter och totalsummor.
- ElevenLabs API-nyckel (hämta den i din ElevenLabs-panel) för rösttranskribering.
- Gemini eller en LLM-leverantör för att läsa kvitton och klassificera utgifter.
- API-nyckel för växelkurs (hämta den på leverantörens kontosida) för valutakonvertering.
Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och bekräftar att dina kolumner i Google Sheet matchar flödets fält.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett Telegram-meddelande triggar flödet. Du skickar text, ett röstmeddelande eller ett kvittofoto till din Telegram-bot, och Telegram-triggern fångar upp det direkt.
Meddelandet routas efter typ. En router delar upp flödet beroende på vad du skickade. Röstmeddelanden hämtar ljudbilagan och kör en transkriberingsbegäran. Kvittobilder hämtas och analyseras med Google Gemini så att du får strukturerade fält som belopp, valuta och handlare.
AI avgör avsikten och extraherar detaljerna. En intent-klassificerare separerar ”utgiftsloggning” från allmänna ekonomifrågor. Om du skrev flera utgifter i ett meddelande delar ett annat AI-steg upp dem i korrekt formaterade rader och tolkar sedan belopp, kategorier och anteckningar.
Sheets uppdateras och Telegram får ett användbart svar. Valutakonverteringar hämtas via en växelkurs-API vid behov, utgifter läggs till i Google Sheets och flödet svarar med en bekräftelse samt valfria totalsummor eller insikter (inklusive dagliga utgiftsvarningar när du passerar 100 USD).
Du kan enkelt ändra basvalutan och kategorilistan utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: konfigurera Telegram-triggern
Konfigurera Telegram som startpunkt så att arbetsflödet startar när en användare skickar ett meddelande.
- Lägg till noden Telegram Intake Trigger och behåll Updates inställt på
message. - Credential Required: Anslut era
telegramApi-uppgifter i Telegram Intake Trigger. - Bekräfta att triggerns webhook är aktiv efter att uppgifterna har sparats.
Steg 2: anslut Google Sheets
Dessa Google Sheets-verktyg används av MCP-verktygshubben för att läsa, söka och lägga till utgiftsdata. Gruppera alla Google Sheets-verktyg tillsammans för att hålla autentiseringsuppgifterna konsekventa.
- Öppna varje Google Sheets-verktygsnod: Daily Total Reader, Balance Lookup Tool, Expense Query Tool, Append Expense Rows och Sheet Row Reader.
- Credential Required: Anslut era
googleSheetsOAuth2Api-uppgifter för alla fem Google Sheets-verktygsnoder. - Ställ in Document ID på ert kalkylblads-ID (ersätt
[YOUR_ID]) och verifiera att bladintervallen är korrekta (t.ex. använder Daily Total ReaderC1:C10). - I Append Expense Rows, behåll Operation inställt på
appendoch bekräfta att kolumnmappningarna använder AI-uttrycken, som{{$fromAI('Expense_Date', ``, 'string')}}.
Expense Date, Expense Amount (USD)), annars kan tillägget misslyckas utan tydligt felmeddelande.Steg 3: konfigurera meddelanderouting och hantering av röst/kvitto
Routa inkommande meddelanden efter typ och hämta röst- eller bilddata vid behov.
- I Message Type Router, behåll de tre reglerna som identifierar text, ljud och bild med uttryck som
{{$json.message.toJsonString()}}och{{$json.message.document.mime_type}}. - Konfigurera Fetch Voice Attachment med File ID inställt på
{{$json.message.voice.file_id}}. - Konfigurera Retrieve Receipt Image med File ID inställt på
{{$('Telegram Intake Trigger').item.json.message.document.thumbnail.file_id}}. - I Voice Transcription Call, ställ in URL till
https://api.elevenlabs.io/v1/speech-to-text, Method tillPOSToch behåll Content Type sommultipart-form-data. - Credential Required: Anslut era
httpHeaderAuth-uppgifter i Voice Transcription Call för ElevenLabs API. - Credential Required: Anslut era
telegramApi-uppgifter i Fetch Voice Attachment och Retrieve Receipt Image.
Steg 4: bygg prompt-sammansättning och intentsrouting
Skapa den enhetliga prompten och klassificera intent så att arbetsflödet kan dela upp mellan utgiftsregistrering och frågehantering.
- I Assemble Prompt Fields, ställ in värdet för Prompt till
{{$json.text}}{{ $('Telegram Intake Trigger').item.json.message.text }}{{ $json.content.parts[0].text }}. - I Intent Classifier Step, ställ in Text till
{{$json.Prompt}}och behåll Prompt Type somdefinemed Has Output Parser aktiverat. - I Expense vs Query Branch, bekräfta att villkoret kontrollerar att Left Value
{{$json.text}}är lika medother. - Säkerställ att Message Type Router routar till Assemble Prompt Fields och att Intent Classifier Step routar till Expense vs Query Branch enligt exekveringsflödet.
Steg 5: konfigurera AI-extraktion och finansorkestrering
Konfigurera kvittotolkaren, utgiftsuppdelningen och den primära finansagenten med rätt LLM:er och verktyg.
- I Receipt Data Extractor, behåll Resource inställt på
image, Input Type påbinaryoch den detaljerade extraktionsprompten enligt angiven mall. - Credential Required: Anslut era Google Gemini-uppgifter i Receipt Data Extractor.
- I Split Expense Entries, ställ in Text till
{{$('Assemble Prompt Fields').item.json.Prompt}}och behåll Prompt Type somdefine. - Anslut LLM-noderna som modeller: Intent Model Core för Intent Classifier Step, Expense Parsing Core för Split Expense Entries och Primary Finance LLM för Finance Orchestrator. Credential Required: Anslut era Azure OpenAI-uppgifter i var och en av dessa LLM-noder (modell
gpt-4.1). - I Finance Orchestrator, behåll Text inställt på
{{$('Telegram Intake Trigger').item.json.message.text}}{{ $json.text }}och bekräfta att systemmeddelandet definierar finansreglerna. - Konfigurera Currency Rate Fetcher med URL inställd på
https://v6.exchangerate-api.com/v6/[CONFIGURE_YOUR_API_KEY]/pair/USD/{{$fromAI('exchange_currency')}}.
Steg 6: konfigurera utgående svar
Skicka finansassistentens svar tillbaka till användaren i Telegram.
- I Send Telegram Reply, ställ in Text till
{{$json.output}}. - Ställ in Chat ID till
{{$('Telegram Intake Trigger').item.json.message.chat.id}}så att svaren går till rätt konversation. - Credential Required: Anslut era
telegramApi-uppgifter i Send Telegram Reply.
Steg 7: testa och aktivera ert arbetsflöde
Kör kontrollerade tester för att verifiera routing, AI-tolkning och Google Sheets-uppdateringar innan ni slår på det för daglig användning.
- Klicka på Execute Workflow och skicka ett testmeddelande till er Telegram-bot (t.ex. en textutgift, ett röstmeddelande och ett bildkvitto).
- Verifiera att textmeddelanden går genom Message Type Router → Assemble Prompt Fields → Intent Classifier Step → Expense vs Query Branch → Finance Orchestrator.
- Bekräfta att utgiftsposter lägger till nya rader i Google Sheets via Append Expense Rows och att sammanfattningar skickas via Send Telegram Reply.
- Om resultaten ser korrekta ut, växla arbetsflödet till Active för att börja spåra utgifter i produktion.
Vanliga fallgropar
- Inloggningsuppgifter för Telegram Bot API kan löpa ut eller sakna behörigheter. Om meddelanden slutar trigga, kontrollera först bot-token och webhook-status i din BotFather-konfiguration.
- Om du använder Wait-noder eller extern bearbetning (transkribering eller kvittoanalys) varierar tiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in ert tonläge och era faktiska kategoriregler tidigt, annars kommer du att sitta och redigera output för alltid.
Vanliga frågor
Cirka 30 minuter om din Telegram-bot och ditt Google Sheet är redo.
Nej. Du kopplar mest konton och klistrar in några API-nycklar. ”Jobbet” är i princip bara att matcha fält mot kolumnerna i ditt Google Sheet.
Ja. n8n har ett gratis alternativ för egen drift 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 API-kostnader för dina AI- och transkriberingsleverantörer, samt din växelkurs-API.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och klarar n8n bra. Egen drift ger dig obegränsat antal körningar, men kräver grundläggande serverhantering.
Ja, och det bör du. Ändra basvalutan där flödet hanterar konvertering (växelkurs-hämtningen och fälten som skickas in i finance-agenten), och uppdatera sedan kategorilistan i systemprompten som används av ekonomi-LLM:en. Vanliga justeringar är nya kategorier för din verksamhet (som ”Underkonsulter” eller ”Annonskostnader”), att höja eller sänka tröskeln för den dagliga varningen vid 100 USD och att lägga till striktare regler för vad som räknas som ersättningsbart.
Oftast är det en ogiltig eller roterad bot-token, så n8n kan inte hämta uppdateringar längre. Uppdatera Telegram-inloggningen i n8n och bekräfta att boten fortfarande får ta emot meddelanden. Om det fungerar ett tag och sedan slutar kan även rate limits dyka upp när du processar många bilder eller röstmeddelanden efter varandra.
Väldigt många för ett mindre team.
För multimodala indata (text, röst, kvitton) och förgrenad logik är n8n oftast ett smidigare val eftersom du kan bygga mer komplexa flöden utan att betala per ”steg” på samma sätt. Det ger dig också en riktig väg för egen drift, vilket blir viktigt när du loggar stora volymer utgifter eller kör dagliga sammanfattningar. Zapier eller Make kan gå snabbare för en enkel setup ”Telegram-meddelande → rad i Google Sheets”, men de blir snabbt klumpiga när du lägger till OCR, transkribering och AI-klassificering. Vill du ha hjälp att välja rätt upplägg, prata med en automationsexpert.
När det här väl rullar slutar ditt kalkylark vara ett helgprojekt. Flödet tar hand om den repetitiva insamlingen så att dina siffror förblir trovärdiga hela månaden.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.