{"product_id":"n8n-gmail-invoice-matching-openai-pdf-ocr-data-table-po-match","title":"n8n Gmail Invoice Matching: OpenAI PDF OCR + Data Table PO Match","description":"\u003ch3\u003eAutomatically match Gmail PDF invoices to your open PO records—using OpenAI OCR + data-table PO matching\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow watches a Gmail label for unread supplier invoice emails, extracts invoice details from PDF attachments with OpenAI, matches them against open purchase orders in n8n Data Tables, and then logs results—or drafts a Gmail reply when validation fails.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePolls Gmail every 10 minutes\u003c\/strong\u003e for unread messages in your configured invoice label and downloads all attachments.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eProcesses only PDF invoices\u003c\/strong\u003e: filters attachments to PDFs and stops if no PDF invoice is found.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eExtracts invoice fields with OpenAI PDF OCR\u003c\/strong\u003e, pulling out key data such as invoice number, vendor, PO reference, currency, total, and line items.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eNormalizes values\u003c\/strong\u003e by converting printed money formats into numeric amounts.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLoads matching context from n8n Data Tables\u003c\/strong\u003e: retrieves open purchase orders and previously seen invoices.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMatches invoices to purchase orders\u003c\/strong\u003e by PO number or—when needed—by vendor and closest amount.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eValidates correctness\u003c\/strong\u003e by checking duplicates, currency mismatches, tolerance breaches, and whether totals align with line items.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eClears or escalates\u003c\/strong\u003e:\n    \u003cul\u003e\n      \u003cli\u003eWhen valid, logs the invoice into \u003cem\u003einvoices_seen\u003c\/em\u003e with a cleared status.\u003c\/li\u003e\n      \u003cli\u003eWhen held, uses OpenAI to draft a short supplier query, logs the issue, and creates a \u003cstrong\u003eGmail draft reply\u003c\/strong\u003e in the original email thread.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eAP teams processing supplier invoices from email: auto-match PDFs to PO data and prevent duplicate processing.\u003c\/li\u003e\n  \u003cli\u003eSaaS operators centralizing invoice approval: keep a controlled audit trail in \u003cem\u003einvoices_seen\u003c\/em\u003e.\u003c\/li\u003e\n  \u003cli\u003eAutomation engineers reducing manual invoice triage by drafting supplier follow-ups for mismatches.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003en8n workflow nodes: \u003cstrong\u003eif\u003c\/strong\u003e, \u003cstrong\u003eset\u003c\/strong\u003e, \u003cstrong\u003ecode\u003c\/strong\u003e, \u003cstrong\u003eno op\u003c\/strong\u003e, \u003cstrong\u003egmail\u003c\/strong\u003e, \u003cstrong\u003emerge\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003eIntegrations\/tech: \u003cstrong\u003eGmail\u003c\/strong\u003e (label-based trigger + draft replies), \u003cstrong\u003eOpenAI\u003c\/strong\u003e (PDF text extraction + query drafting), and \u003cstrong\u003en8n Data Tables\u003c\/strong\u003e (open POs + invoices_seen).\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":45931118428339,"sku":"N8N-18954","price":53.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/MghzvXEU3BhUY5u4VUI0N_A5L70vqz.png?v=1788254275","url":"https:\/\/buyflowscripts.com\/products\/n8n-gmail-invoice-matching-openai-pdf-ocr-data-table-po-match","provider":"N8N Commerce","version":"1.0","type":"link"}