Fakturor ska inte försvinna i chatttrådar, inkorgar och slumpmässiga mappar. Men det är precis vad som händer. Sedan fastnar du med att skriva om totalsummor, leta efter faktura-ID:n och undra om du redan bokförde den leverantören förra veckan.
Den här uppsättningen för fakturaloggning via Telegram träffar driftchefer först, eftersom det är de som städar upp röran. En bokförare känner av det vid månadsskiftet. Och en småbyråägare märker det när frågor om kassaflöde dyker upp mitt i ett projekt.
Det här flödet tar en faktura-PDF eller bild som skickas i Telegram, extraherar data med AI, kontrollerar dubbletter och saknade fält och loggar en strukturerad rad i Google Sheets med originalfilen sparad i Google Drive. Du får se hur det fungerar, vad du behöver och var folk oftast kör fast.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Telegram till Google Sheets, fakturor loggas rensat
flowchart LR
subgraph sg0["When chat message received Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Analyze image1", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "AI Agent1", pos: "b", h: 48 }
n3@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Get data", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Make data in json structure ..", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "check if Data exist or not i..", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Upload invoice to drive", pos: "b", h: 48 }
n8["<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/>no missing field - new data .."]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If - check missing field", pos: "b", h: 48 }
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Send missing field error on ..", pos: "b", h: 48 }
n11@{ icon: "mdi:message-outline", form: "rounded", label: "Duplicate entry send mail", 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/code.svg' width='40' height='40' /></div><br/>New data add using payload"]
n13@{ icon: "mdi:database", form: "rounded", label: "Append data to sheet", pos: "b", h: 48 }
n14["<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/>Check Mandatory fields"]
n15@{ icon: "mdi:message-outline", form: "rounded", label: "Send successful email", pos: "b", h: 48 }
n4 --> n6
n2 --> n5
n1 --> n2
n13 --> n15
n14 --> n9
n3 -.-> n2
n9 --> n8
n9 --> n10
n12 --> n14
n0 --> n1
n0 --> n7
n5 --> n4
n6 --> n12
n6 --> n11
n8 --> n13
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 n1,n2 ai
class n3 aiModel
class n6,n9 decision
class n4,n13 database
class n8,n12,n14 code
classDef customIcon fill:none,stroke:none
class n8,n12,n14 customIcon
Problemet: fakturor loggas sent, fel eller två gånger
Manuell fakturaloggning ser “snabb” ut tills du gör det varje dag. Du laddar ner en PDF, byter namn på den, lägger den i en mapp, öppnar ett kalkylark, skriver in fakturanummer, leverantörsnamn, datum, total och kanske rader, och dubbelkollar sedan att du inte redan loggat den. Missar du ett fält blir posten oanvändbar senare. Loggar du samma faktura två gånger glider siffrorna, vilket gör en enkel avstämning till en frustrerande detektivhistoria.
Friktionen byggs på. Så här fallerar det i verkligheten.
- Du kopierar totalsummor och faktura-ID:n för hand, vilket är där små stavfel skapar stor förvirring längre fram.
- Fakturor kommer i olika format (skanningar, foton, PDF:er), så “standardprocessen” slutar vara standard efter första udda leverantörsmallen.
- Dubbletter smyger sig in eftersom ingen vill söka i arket varje gång, särskilt på mobilen.
- När en obligatorisk detalj saknas märker du det dagar senare vid attest eller bokslut, inte när det hade varit lätt att fixa.
Lösningen: skicka fakturor i Telegram, få strukturerade rader i Sheets
Det här flödet gör fakturahantering till en enkel vana: du skickar fakturafilen via Telegram och låter automationen sköta resten. Så fort ett meddelande kommer in sparar n8n originalfakturan i Google Drive så att filen är trygg och sökbar. Sedan läser AI:n PDF:en eller bilden och plockar ut det du faktiskt behöver för uppföljning: faktura-ID, butik- eller leverantörsnamn, datum, total och rader. Därefter tvingar flödet den röriga extraktionen till strikt JSON, kontrollerar i Google Sheet om fakturan redan finns och validerar att obligatoriska fält är ifyllda. Om allt stämmer läggs en strukturerad rad till i Google Sheets och ett e-postmeddelande om lyckad hantering skickas. Om något är fel får du ett tydligt mejl som säger om det var en dubblett eller om viktiga fält saknas.
Flödet startar när en faktura skickas via Telegram. AI extraherar och strukturerar om fakturadatan till ett konsekvent format, och Google Sheets används som sanningskälla för dubblettkontroll och loggning. Till sist skickar Gmail rätt notis så att du slipper “gå och kolla” om det fungerade.
Vad du får: automation vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du hanterar 30 fakturor i veckan från underleverantörer och verktyg. Manuellt kanske du lägger cirka 6 minuter per faktura på att ladda ner, arkivera, öppna Sheets, skriva in fält och dubbelkolla dubbletter, vilket blir ungefär 3 timmar per vecka. Med det här flödet vidarebefordrar du PDF:en i Telegram (kanske 30 sekunder) och låter sedan AI-extraktion, dubblettkontroller och loggning i arket köras i bakgrunden. Även om bearbetningen tar några minuter bakom kulisserna sjunker din aktiva tid till runt 15 minuter för hela veckan.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att skicka faktura-PDF:er/bilder till flödet
- Google Sheets för att lagra strukturerade fakturarader
- Google Drive för att lagra originalfakturafilerna
- Gmail för att skicka mejl vid lyckad hantering, dubbletter och fel
- Google Gemini API-nyckel (hämta den från Google AI Studio)
Kunskapsnivå: Mellan. Du kopplar några konton, sätter upp autentiseringsuppgifter och bekräftar att kolumnerna i ditt Google Sheet matchar flödets förväntade fält.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Fakturan kommer in i Telegram. Du (eller ditt team) skickar en PDF eller ett foto av en faktura till en Telegram-chatt som är kopplad till n8n. Ingen specialformatering behövs, eftersom flödet är byggt för uppladdningar i verkligheten.
Filen lagras först. Fakturan laddas upp till Google Drive direkt, så även om extraktionen misslyckas har du fortfarande källdokumentet sparat och länkbart.
AI extraherar och rensar data. Google Gemini Vision läser fakturainnehållet och ett agentsteg formar sedan om det till strikt JSON. Det är den oglamorösa delen som betyder mest: konsekventa nycklar som invoice_id, shop_name, date, total och items så att arket förblir användbart.
Validering, dubblettkontroll och loggning. Flödet slår upp befintliga poster i Google Sheets för att fånga dubbletter, kontrollerar att obligatoriska fält finns och lägger sedan till en strukturerad rad. Gmail skickar ett mejl om lyckad hantering, en varning om dubblett eller en avisering om saknade fält beroende på vad som hände.
Du kan enkelt justera vilka fält som är obligatoriska så att de matchar dina bokföringsregler. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Chat Message Trigger
Det här arbetsflödet startar när en användare skickar ett chattmeddelande med en fakturafil.
- Lägg till noden Chat Message Trigger som din trigger.
- Öppna Options och aktivera Allow File Uploads.
- Ställ in Allowed Files Mime Types till
image/*, text/*, application/pdf. - Notera körflödet: Chat Message Trigger skickar utdata parallellt till både Inspect Image Content och Store Invoice in Drive.
data0.Steg 2: Anslut Google Drive och Google Sheets
Lagra den ursprungliga fakturafilen och kontrollera dubbletter i ert utgiftsark.
- Konfigurera Store Invoice in Drive med Credential Required: Anslut era
googleDriveOAuth2Api-uppgifter. - Ställ in Name till
=invoice_dataoch Input Data Field Name tilldata0. - Ställ in Drive till
My Driveoch Folder till/ (Root folder)om ni inte föredrar en annan plats. - Konfigurera Fetch Sheet Records med Credential Required: Anslut era
googleSheetsOAuth2Api-uppgifter. - Ställ in Document till
expense_tracker_n8noch Sheet tillExpense_Tracker. - I Filters, ställ in Lookup Column till
Entry_IDoch Lookup Value till{{ $json.output.invoice_id }}.
Entry_ID kommer dubblettkontrollen att misslyckas och kan skapa dubblettposter.Steg 3: Konfigurera AI-extraktion och strukturering
Arbetsflödet använder Gemini för att extrahera fakturadata från bilder och strukturerar sedan resultatet till ett strikt JSON-format.
- Konfigurera Inspect Image Content med Credential Required: Anslut era
googlePalmApi-uppgifter. - Ställ in Operation till
analyze, Resource tillimage, Input Type tillbinaryoch Binary Property Name tilldata0. - Ställ in prompten i Text till
What's in this image? Extract all the data And give a very formatted. Output Which has Differently listed Things of invoice. - I Invoice Structuring Agent, ställ in Text till
=Here is the invoice data - {{ $json.content.parts[0].text }}och behåll Prompt Type somdefine. - Säkerställ att Gemini Chat Engine är ansluten som språkmodell för Invoice Structuring Agent; Credential Required: Anslut era
googlePalmApi-uppgifter i Gemini Chat Engine. - I Format Output JSON, lägg till en tilldelning med namnet output med värdet
{{ $json.output }}.
invoice_id, shop_name, date och items. Justera prompten endast om schemat i ert nedströms-ark ändras.Steg 4: Konfigurera validering och routning av dubbletter
Det här steget avgör om fakturan är ny och om obligatoriska fält finns med.
- I Verify Existing Record, använd villkorsuttrycket
{{ Object.keys($items("Fetch Sheet Records")[0].json).length === 0 }}för att upptäcka tomma resultat. - Routa false-grenen från Verify Existing Record till Notify Duplicate Invoice.
- Routa true-grenen från Verify Existing Record till Select Invoice Payload.
- Granska Select Invoice Payload och säkerställ att källan är
$('Format Output JSON').first().json.outputnär arket är tomt. - I Check Required Fields, bekräfta att listan över obligatoriska fält innehåller
invoice_id,shop_name,date,Totalochitems. - Konfigurera Validate Missing Fields för att kontrollera att
{{ $json.status }}är lika medok. - Bekräfta att Pass Valid Payload returnerar payloaden från
$('Format Output JSON').first().json.outputnär status är ok.
Steg 5: Konfigurera utdataåtgärder och notifieringar
Lägg till giltiga fakturor i Google Sheets och skicka notifieringar vid lyckat resultat eller dubbletter.
- Konfigurera Append Row to Sheet med Credential Required: Anslut era
googleSheetsOAuth2Api-uppgifter. - Ställ in Operation till
appendoch bekräfta att Document ärexpense_tracker_n8noch att Sheet ärExpense_Tracker. - Mappa kolumner med de angivna uttrycken, till exempel Date till
{{ $json.date }}, Entry_ID till{{ $json.payload.invoice_id }}och Item_Name till{{ $json.items.map(item => item.Item_Name).join(', ') }}. - Konfigurera Notify Duplicate Invoice med Credential Required: Anslut era
gmailOAuth2-uppgifter och ställ in Send To till[YOUR_EMAIL]. - Ställ in ämnet i Notify Duplicate Invoice till
=Invoice Already Exists – {{ $json.invoice_id }}och behåll HTML-innehållet som angivet. - Konfigurera Send Success Notification med Credential Required: Anslut era
gmailOAuth2-uppgifter och ställ in Send To till[YOUR_EMAIL]. - Ställ in ämnet i Send Success Notification till
=New invoice - {{ $json.invoice_id }} added in the sheet..
Steg 6: Lägg till felhantering för saknade fält
När obligatoriska fält saknas skickar arbetsflödet en varning i stället för att skriva till arket.
- Från Validate Missing Fields, anslut false-grenen till Email Missing Field Alert.
- Konfigurera Email Missing Field Alert med Credential Required: Anslut era
gmailOAuth2-uppgifter. - Ställ in Send To till
[YOUR_EMAIL]och Message till=Missing filed - {{ $json.missing_fields.map(field => field).join(', ') }}. - Ställ in Subject till
Missing filed error.
Steg 7: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera varje gren och aktivera sedan för produktionsanvändning.
- Klicka på Execute Workflow och skicka ett chattmeddelande med en fakturabild eller en PDF-bilaga.
- Bekräfta att Inspect Image Content returnerar extraherad text och att Invoice Structuring Agent outputar strukturerad JSON.
- Verifiera dubblettlogiken genom att testa med ett befintligt faktura-ID och bekräfta att Notify Duplicate Invoice triggas.
- Testa en giltig faktura och bekräfta att Append Row to Sheet lägger till en ny rad och att Send Success Notification kommer fram.
- Testa en faktura med saknade fält för att säkerställa att Email Missing Field Alert skickas.
- När allt fungerar, växla arbetsflödet till Active för att köra i produktion.
Vanliga fallgropar
- Autentiseringsuppgifter för Google Sheets kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först statusen för n8n-inloggningen och att Google-kontot har åtkomst till rätt kalkylark.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera utdata i all evighet.
Vanliga frågor
Cirka 30–60 minuter om dina Google- och Telegram-konton är redo.
Nej. Du kopplar konton, klistrar in API-uppgifter och mappar några fält till kolumnerna i ditt Google Sheet.
Ja. n8n har ett gratis alternativ för egen hosting 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 in användningen av Google Gemini API, vilket beror på hur många fakturor du hanterar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och klarar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, men planera kolumnerna i arket först. Du kan justera vad som räknas som “obligatoriskt” i steget för validering av obligatoriska fält, och du kan forma om JSON:en i formateringssteget så att den matchar hur du följer upp fakturor (moms, valuta, förfallodatum, avdelning, projektkod). Om du vill byta AI-leverantör senare behåller du oftast samma krav på “strikt JSON” och byter bara ut noderna för extraktion/modell. Dubblettkontrollen kan också ändras till att matcha på leverantör + datum + total om faktura-ID:n inte är pålitliga.
Oftast är det ett bot/token-problem eller så är boten inte tillagd i rätt chatt. Kontrollera Telegram-uppgifterna i n8n igen och bekräfta sedan att triggern lyssnar på chatten där du skickar fakturor. Om det fungerar ibland och sedan fallerar i omgångar kan du slå i Telegrams begränsningar eller skicka för stora filer, så testa med en mindre PDF.
Många. På n8n Cloud är din praktiska gräns din månatliga körningskvot och hur snabbt din AI-extraktion går; om du kör egen hosting beror det främst på din server och Google API-kvoter.
För AI-tung fakturaextraktion är n8n oftast mer flexibelt eftersom du kan förgrena, validera och hantera dubbletter utan att göra scenariot till ett dyrt spindelnät. Egen hosting är också viktigt om du hanterar många fakturor och vill ha förutsägbara kostnader. Zapier eller Make kan fortfarande fungera om du bara behöver ett enkelt “fil mottagen → skapa rad”-flöde och klarar dig med enklare validering. Men när du bryr dig om strikt JSON, obligatoriska fält och dubblettlogik känns n8n mindre trångt. Om du är osäker, prata med en automationsexpert så får du ett rakt svar baserat på din volym och dina verktyg.
Logga fakturan en gång, korrekt, med filen bifogad. Efter det är det bara sökbara poster i Sheets och en Drive-mapp du kan lita på.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.