Extract & classify invoices & receipts with Gmail, OpenAI and Google Drive
Needs changesNeeds changes. This template uses 1 thing(s) that n8n 3.0 removes: Read PDF. 1 breaking item(s) found. Static check, last run 2026-10-19.
What to replace before upgrading
| Removed in 3.0 | Replace with |
|---|---|
| Read PDF Read PDF email attachments | Extract from File node, 'Extract From PDF' operation |
Nodes used (12)
- OpenAI
@n8n/n8n-nodes-langchain.openAi - Edit Fields (Set)
n8n-nodes-base.set - Code
n8n-nodes-base.code - No Operation, do nothing
n8n-nodes-base.noOp - If
n8n-nodes-base.if - Merge
n8n-nodes-base.merge - Google Drive
n8n-nodes-base.googleDrive - Webhook
n8n-nodes-base.webhook - Respond to Webhook
n8n-nodes-base.respondToWebhook - Gmail
n8n-nodes-base.gmail - Read PDF
n8n-nodes-base.readPDF - Filter
n8n-nodes-base.filter
What it does
Who is it for? Anyone who wants to automatically aggregate their invoices or receipts. Main beneficiaries: small business owners and freelancers. How it works 1. Creates a folder in Google Drive for uploading invoices and receipts. Responds (Webhook response) with URL to the created folder. 2. Gets all emails with attachments from a Gmail mailbox. 3. (Optional) Filters emails, e.g. exclude emails sent to specific address. 4. Filters only PDF attachments. 5. Classifies all PDF attachment contents with an AI model (is it a receipt or an invoice?). 6. Uploads receipts and invoices to the created Google Drive folder and optionally sends an email with the attachments to, e.g., your accountant. Pre-conditions/Requirements - Gmail and Google Drive accounts - A Google Cloud OAuth 2.0 Client ID or a service account with Google Drive and Gmail APIs enabled - OpenAI API account and API key Set up steps 1. Provide credentials for the nodes: Gmail, Google Drive, OpenAI. 2. Configure parameters in the "Configure" node. Most importantly: - "sendInvoicesTo" for the email address where invoices/receipts should be sent. 3. It uses a Webhook node trigger. It expects a body with a schema such as: json { "name": "getInvoicesAndReceiptsFromEmails", "description": "Finds and uploads to Google Drive all receipts and invoices from emails within a specified date range.", "parameters": { "type": "object", "properties": { "startDate": { "type": "string", "format": "date-time", "description": "The start date of the range to search for emails. Must be in ISO 8601 format." }, "endDate": { "type": "string", "format": "date-time", "description": "The end date of the range to search for emails. Must be in ISO 8601 format." }, "sendEmail": { "type": "boolean", "description": "Indicates whether to send an email with all receipts and invoices after processing. Must be true or false." } }, "required": "startDate", "endDate" } } Example body: json { "startDate": "2025-03-01T00:00:00Z", "endDate": "2025-04-01T00:00:00Z", "sendEmail": true } How to use with AI chat You can trigger the workflow with an AI chat that supports tool use, such as BrowseWiz. For setup instructions, read the blog post.