Invoice processing: Email to PostgreSQL database with GPT-4o & Discord alerts
Ready for 3.0Ready for 3.0. This template uses no nodes that n8n 3.0 removes. No removed nodes, versions or helpers found. Static check, last run 2026-10-19.
Nodes used (11)
- Email Trigger (IMAP)
n8n-nodes-base.emailReadImap - Discord
n8n-nodes-base.discord - Basic LLM Chain
@n8n/n8n-nodes-langchain.chainLlm - OpenAI Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenAi - Structured Output Parser
@n8n/n8n-nodes-langchain.outputParserStructured - Code
n8n-nodes-base.code - Extract from File
n8n-nodes-base.extractFromFile - If
n8n-nodes-base.if - Merge
n8n-nodes-base.merge - Edit Fields (Set)
n8n-nodes-base.set - Postgres
n8n-nodes-base.postgres
What it does
AI-Powered Invoice Processing: from Email to Database & Chat Notifications Automatically process PDF invoices directly from your email inbox. This workflow uses AI to extract key data, saves it to a PostgreSQL database, and instantly notifies you about the new document in your preferred chat application. The workflow listens for new emails, fetches PDF attachments, and then passes their content to a Large Language Model (LLM) for intelligent recognition and data extraction. Finally, the information is securely archived in the database, and a summary of the invoice is sent as a notification. > π This workflow is highly customizable. > It uses PostgreSQL, OpenAI (GPT), and Discord by default, but you can easily swap these components. > Feel free to use a different database like MySQL or Airtable, another AI model provider, or send notifications to Slack, MS Teams, or any other chat platform. > β οΈ Note: If the workflow fails to extract data correctly from invoices issued by certain companies, you may need to adjust the prompt used in the Basic LLM Chain node to improve parsing accuracy. --- Use Case - Automating accounts payable for small businesses and freelancers - Centralizing financial documents without manual data entry - Creating a searchable database of all incoming invoices - Receiving real-time notifications for new financial commitments --- Features - π§ Email Trigger (IMAP): Monitors a dedicated email inbox for new messages with attachments - π PDF Filtering: Automatically identifies and processes only PDF attachments - π€ AI-Powered Data Extraction: Uses an LLM (e.g., GPT-4o-mini) to extract invoice number, buyer/seller details, amounts, currency, and due dates - βοΈ Structured Data Output: Converts AI output to standardized JSON - π Database Write Logic: Prevents duplicates by checking invoice/company combo - ποΈ PostgreSQL Integration: Stores extracted data into company and invoice tables - π¬ Chat Notifications: Sends invoice summary as message to a designated channel --- Setup Instructions β οΈ API Access & Costs To use the AI extraction feature, you need an API key from a provider like OpenAI. Most providers charge for access to language models. You'll likely need a billing account. --- 1. PostgreSQL Database Configuration Ensure your database has the following tables: sql -- Table for companies (invoice issuers) CREATE TABLE company ( id SERIAL PRIMARY KEY, taxnumber VARCHAR(255) UNIQUE NOT NULL, name VARCHAR(255), address TEXT, createdat TIMESTAMP WITH TIME ZONE DEFAULT CURRENTTIMESTAMP ); -- Table for invoices CREATE TABLE invoice ( id SERIAL PRIMARY KEY, companyid INTEGER REFERENCES company(id), invoicenumber VARCHAR(255) NOT NULL, -- Add other fields: totaltopay, currency, duedate createdat TIMESTAMP WITH TIME ZONE DEFAULT CURRENTTIMESTAMP, UNIQUE(companyid, invoicenumber) ); Then, in n8n, create a credential for your PostgreSQL DB. --- 2. Email (IMAP) Configuration In n8n, add credentials for the email account that receives invoices: - IMAP host - IMAP port - Username - Password --- 3. AI Provider Configuration - Log in to OpenAI (or similar provider) - Generate API key - In n8n, create credentials and paste the key --- 4. Chat Notification (Discord) - Go to Discord > Server Settings > Integrations > Webhooks > New Webhook - Select channel - Copy Webhook URL - In n8n, paste URL into the Discord node --- Placeholders and Fields to Fill | Placeholder | Description | Example | |---------------------------|-------------------------------------------|------------------------------------------| | YOUREMAILCREDENTIALS | Your IMAP email account in n8n | My Invoice Mailbox | | YOUROPENAICREDENTIALS | API credentials for AI model | My OpenAI Key | | YOURPOSTGRESCREDENTIALS| Your PostgreSQL DB credentials in n8n | My Production DB | | YOURDISCORDWEBHOOK | Webhook URL for your chat system | https://discord.com/api/webhooks/... | --- Testing the Workflow 1. Send a test invoice to the inbox as a P