Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

OpenAI + PostgreSQL: rensa banktransaktioner snabbt

Rickard Andersson Partner, Nodenordic.se

Kontoutdrag ser enkla ut tills du måste göra om dem till felfria, kategoriserade transaktioner. Då blir det PDF:er med märkliga layouter, CSV-filer utan rubriker och ett kalkylblad som “nästan” matchar förra månaden. Manuell rensning stjäl timmar och gör ändå att du tvivlar på totalerna.

Om du är en marknadsansvarig som försöker följa upp spend känns det här vid månadsskiftet. En småföretagare känner det när likviditeten blir tight och du behöver svar snabbt. Och en byråägare känner det när varje kund använder en annan bank. Den här OpenAI PostgreSQL-automationen gör stökiga kontoutdrag till sökbar, rapportklar data i ett enda flöde.

Nedan ser du hur arbetsflödet fungerar, vad det ersätter och vilka resultat du kan förvänta dig när det väl rullar.

Så fungerar den här automatiseringen

Hela n8n-flödet, från trigger till slutligt resultat:

n8n Workflow Template: OpenAI + PostgreSQL: rensa banktransaktioner snabbt

Problemet: kontoutdrag blir inte användbar data av sig själva

De flesta team har inte svårt att få tag på kontoutdrag. De har svårt att göra om utdragen till något du kan filtrera, söka i och lita på. PDF:er förstör kopiera/klistra in. CSV-exporter byter kolumnnamn utan förvarning. Excel-filer kommer med extra rubrikrader, sammanslagna celler och “hjälpsam” formatering som saboterar importer. Sedan kommer den verkliga tidstjuven: att kategorisera transaktioner konsekvent så att rapporterna inte blir en gissningslek. En liten avvikelse kan snabbt växa till en lång eftermiddag med “varför stämmer inte den här totalen?”.

Det blir snabbt mycket. Här brukar det oftast fallera.

  • Varje utdragsformat behöver sin egen manuella rensning innan du ens kan börja kategorisera.
  • Kategorisering glider över tid, så “Programvara” blir “Verktyg”, “Prenumerationer” och “SaaS” beroende på vem som rört det.
  • Kopiera/klistra-in-fel är tysta, vilket betyder att du ofta upptäcker dem först när rapporteringen ser fel ut.
  • Utan en databas kan du inte enkelt köra frågor, jämföra månader eller bygga dashboards utan att bygga om datat först.

Lösningen: ladda upp valfritt kontoutdrag, få felfria transaktioner i PostgreSQL

Det här n8n-arbetsflödet ger dig en enda “inlämningspunkt” för kontoutdrag och gör sedan grovjobbet automatiskt. Du laddar upp ett utdrag till en webhook-endpoint i det format du har (PDF, Excel eller CSV). Flödet identifierar formatet, extraherar texten eller tolkar arket och skickar det rensade innehållet till GPT-4 via en OpenAI Chat Model-nod. Därifrån plockar AI-agenten ut kontodetaljer, saldon och rad-för-rad-transaktioner, och normaliserar dem till en strukturerad transaktionslista med konsekventa kategorier som matvaror, restaurang, bränsle, shopping, hushållstjänster, sjukvård, underhållning, intäkter, avgifter eller övrigt. Till sist skriver den resultaten till PostgreSQL och returnerar en prydlig JSON-sammanfattning som du kan använda i andra verktyg.

Arbetsflödet startar med en uppladdning till /upload-statement. Det skickar PDF:er genom en PDF-läsare och kalkylblad genom en kalkylbladsparser, och slår sedan ihop båda vägarna till ett gemensamt AI-extraktionssteg. Efter en snabb sammanfattningspass sparar det transaktionerna och svarar med totaler och en kategorifördelning.

Det du får: automatisering vs. resultat

Exempel: så här ser det ut

Säg att du hanterar 4 kontoutdrag i veckan (två konton, plus ett kort, plus en export från en betalningsleverantör). Manuellt kanske du lägger cirka 30 minuter per utdrag på att rensa format och ytterligare 30 minuter på att kategorisera, alltså ungefär 4 timmar per vecka. Med det här flödet laddar du upp varje fil på en minut eller två, väntar på bearbetningen (oftast några minuter) och gör sedan en snabb stickkontroll. Realistiskt landar du på cirka 30 minuter i veckan i tillsyn i stället för en halv dag med kalkylbladsarbete.

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)
  • OpenAI för GPT-driven extraktion och kategorisering
  • PostgreSQL för att lagra transaktioner för rapportering
  • OpenAI API-nyckel (hämta den i OpenAI-dashboarden)

Kompetensnivå: Medel. Du kopplar in autentiseringsuppgifter, skapar en Postgres-tabell och testar webhooken med en provfil.

Vill du inte sätta upp det här själv? Prata med en automatiseringsexpert (kostnadsfri 15-minuters konsultation).

Så fungerar det

Uppladdning av kontoutdrag triggar allt. Du skickar en kontoutdragsfil till n8n:s webhook-endpoint (/upload-statement). Den enda ingången gör det enkelt att operationalisera i ett team.

Arbetsflödet förbereder och validerar filen. n8n bygger en rensad payload, kontrollerar filtypen och routar den till rätt väg. PDF:er går till en PDF-textextraktor, medan CSV/Excel-filer går genom kalkylbladsavkodning så att datat förblir strukturerat.

OpenAI extraherar och kategoriserar transaktionerna. Båda vägarna går in i samma AI Statement Parser. Den plockar ut transaktioner, saldon och kontoinformation och applicerar konsekventa kategorier så att din rapportering nedströms inte blir ett manuellt taggningsprojekt.

PostgreSQL blir din källa till sanning. Arbetsflödet sammanfattar vad som extraherades, lagrar de rensade posterna i Postgres och returnerar ett JSON-svar med antal transaktioner, totaler och en kategorifördelning.

Du kan enkelt ändra transaktionskategorierna så att de matchar din kontoplan utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera webhook-triggern

Konfigurera den inkommande webhooken för att ta emot uppladdade kontoutdrag och skicka filerna vidare i workflowet.

  1. Lägg till noden Incoming Statement Webhook och ställ in Path till /upload-statement.
  2. Ställ in Response Mode till responseNode så att workflowet kan returnera ett anpassat svar.
  3. I Options aktiverar ni Raw Body genom att sätta den till true för att acceptera filuppladdningar.
  4. Koppla Incoming Statement Webhook till Prepare File Payload.

Tips: Testa webhook-URL:en från noden Incoming Statement Webhook med ett exempel-PDF eller XLSX för att bekräfta att binära uppladdningar fångas upp.

Steg 2: Koppla filförberedelse och formatvalidering

Normalisera inkommande filer och routa dem baserat på format innan extrahering.

  1. I Prepare File Payload behåller ni JavaScript som det är för att mappa filename, contentType och uploadedAt till JSON.
  2. Öppna Validate File Format och ställ in villkoret Left Value till {{ $json.contentType }}.
  3. Ställ in villkoret Operation till contains och Right Value till application/pdf.
  4. Koppla true-utgången från Validate File Format till Read PDF Content och false-utgången till Decode Spreadsheet Data.

⚠️ Vanlig fallgrop: Om Validate File Format inte matchar MIME-typen korrekt kommer filer inte att routas till rätt extraheringsnod.

Steg 3: Sätt upp extrahering och AI-tolkning

Extrahera text från PDF:er eller kalkylblad och skicka innehållet vidare till AI-tolkaren.

  1. I Read PDF Content ställer ni in Operation till extractText.
  2. I Decode Spreadsheet Data ställer ni in Operation till parseExcel och behåller Header Row0.
  3. Koppla både Read PDF Content och Decode Spreadsheet Data till AI Statement Parser.
  4. I AI Statement Parser ställer ni in Model till gpt-4o-mini och behåller systemprompten samt strukturen för användarmeddelandet intakt.
  5. Credential Required: Anslut era openAiApi-uppgifter i AI Statement Parser.
  6. Säkerställ att innehållet i användarmeddelandet inkluderar uttrycket {{ $json.data || $json.extracted_text }} så att tolken får antingen PDF-text eller kalkylbladsdata.

Tips: Workflowet routar filinnehåll till AI Statement Parser från båda extraheringsvägarna, så att ni kan stödja uppladdningar av PDF och XLSX utan extra branching.

Steg 4: Konfigurera databehandling och utdata

Rensa och sammanfatta AI-utdata, lagra den och returnera ett svar parallellt.

  1. I Summarize Extracted Data behåller ni den angivna JavaScript-koden för att normalisera transaktioner och bygga sammanfattningsobjektet.
  2. Koppla AI Statement Parser till Summarize Extracted Data.
  3. Summarize Extracted Data skickar utdata till både Store in Database och Return API Response parallellt.
  4. I Store in Database ställer ni in Resource till database, Operation till insert och Table till bank_statements.
  5. Mappa kolumner med följande uttryck: raw_data{{ JSON.stringify($json) }}, bank_name{{ $json.account_info.bank_name }}, processed_at{{ $json.processed_at }}, total_income{{ $json.summary.total_income }}, account_number{{ $json.account_info.account_number }}, total_expenses{{ $json.summary.total_expenses }}, statement_period{{ $json.account_info.statement_period }}, total_transactions{{ $json.summary.total_transactions }}.
  6. Credential Required: Anslut era postgres-uppgifter i Store in Database.
  7. I Return API Response ställer ni in Respond With till json och använder det angivna uttrycket för Response Body:

{ "success": true, "message": "Statement processed successfully", "data": { "account": "{{ $json.account_info.account_number }}", "transactions_processed": {{ $json.summary.total_transactions }}, "total_expenses": {{ $json.summary.total_expenses }}, "total_income": {{ $json.summary.total_income }}, "categories": {{ JSON.stringify($json.summary.category_breakdown) }} } }

Steg 5: Testa och aktivera ert workflow

Verifiera end-to-end-bearbetning och aktivera workflowet för användning i produktion.

  1. Klicka på Test Workflow och skicka en fil till URL:en för Incoming Statement Webhook.
  2. Bekräfta att Read PDF Content eller Decode Spreadsheet Data körs baserat på filformatet och att AI Statement Parser returnerar JSON.
  3. Verifiera att Store in Database infogar en ny rad i bank_statements och att Return API Response returnerar ett payload för lyckat resultat.
  4. Slå på workflowet till Active för att börja bearbeta uppladdningar i drift.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • OpenAI-inloggningsuppgifter kan upphöra att gälla eller begränsas av projektinställningar. Om saker slutar fungera, kontrollera först status för din OpenAI API-nyckel och användningsgränser i OpenAI-dashboarden.
  • 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 din varumärkesröst tidigt, annars kommer du att redigera output i all evighet.

Vanliga frågor

Hur lång tid tar det att sätta upp den här OpenAI PostgreSQL-automationen?

Cirka 10 minuter om dina API-nycklar och databasen är klara.

Behöver jag kunna koda för att automatisera rensning av banktransaktioner?

Nej. Du klistrar in autentiseringsuppgifter, skapar en tabell och testar en uppladdning en gång.

Är n8n gratis att använda för det här OpenAI PostgreSQL-automationsflödet?

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 volymer. Du behöver också räkna med OpenAI API-kostnader (ofta några cent per utdrag, beroende på längd).

Var kan jag hosta n8n för att köra den här automatiseringen?

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 hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här OpenAI PostgreSQL-automationsflödet för mina egna utgiftskategorier?

Ja, och det bör du. Uppdatera prompten i noden AI Statement Parser (OpenAI) så att den inkluderar dina föredragna kategorier och ett par exempel. Vanliga anpassningar är att dela upp “Marknadsföring” i annonser vs. programvara, lägga till “Konsulter” och tvinga vissa handlare att alltid mappas till en kategori.

Varför misslyckas min OpenAI-anslutning i det här flödet?

Oftast är det en ogiltig eller utgången API-nyckel, så generera en ny nyckel och uppdatera den i n8n. Ibland handlar det om fakturering eller kvot, särskilt med större PDF-utdrag. Om det bara fallerar för vissa filer kan den extraherade texten vara tom eller rörig, så kontrollera vad PDF-extraktionssteget faktiskt skickar in i AI-noden.

Hur många kontoutdrag kan den här OpenAI PostgreSQL-automationen hantera?

På n8n Cloud Starter begränsas du av månadsvisa körningar, vilket innebär några tusen körningar för de flesta team. Om du hostar själv finns ingen körningsgräns; det beror främst på din server och OpenAI:s genomströmning. I praktiken kör team detta per utdrag eller per konto per månad, så volym är sällan flaskhalsen. Den större begränsningen är utdragets storlek eftersom längre filer kostar mer och tar längre tid att tolka.

Är den här OpenAI PostgreSQL-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det här flödet behöver grenlogik (PDF vs. kalkylblad), datashaping och en pålitlig skrivning till databasen, och n8n klarar det utan att förvandla allt till en hög av betalda “tasks”. Zapier eller Make kan ändå fungera om dina utdrag alltid har samma format och du bara behöver ett enkelt vidareflöde. Så fort du lägger till flera format, validering och sammanfattningar är n8n oftast det lugnare valet. Om du vill ha en second opinion, prata med en automatiseringsexpert och beskriv din nuvarande process.

När detta väl rullar slutar dina kontoutdrag att vara “dokument du bävar för” och blir felfri data du faktiskt kan använda. Sätt upp det en gång och lägg sedan tiden på beslut i stället för rensning.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Launch login modal Launch register modal