Process invoices securely with OpenAI, Slack, and ERP webhooks
Quick overview This workflow accepts invoice documents via webhook, validates and de-duplicates them, extracts invoice data from PDFs with OpenAI, and either posts approved invoices to an ERP via HTTP or routes exceptions to Slack for human review before continuing.
How it works Receives a POST request on the /idp-ingest webhook containing an invoice document as a binary file. Validates the file type, size, and optional malware-scan status, then creates correlation and document metadata for downstream processing. Performs a duplicate check (demo logic) and routes duplicates or invalid intakes into an exception path. For new documents, extracts text from the PDF and sends the OCR text to OpenAI to return a structured invoice JSON. Evaluates the extracted invoice against a validation policy (required fields, non-negative amounts, line items, and confidence thresholds) and auto-approves or raises an exception. For exceptions, posts a detailed manual-review message to Slack, waits for a reviewer’s webhook-based decision, and routes approved vs. rejected outcomes. Posts approved invoices to an ERP endpoint using an Idempotency-Key header and then generates a sanitized audit log, while rejected/duplicate items are closed without ERP posting.
Setup Configure the /idp-ingest webhook in your source system to send a document binary file (or provide body.fileContent for the included Convert to File step) and capture the resume webhook URL used by the human-review wait step. Add OpenAI credentials for the OpenAI node and confirm the selected model and prompt/schema meet your compliance requirements. Add Slack OAuth2 credentials and update the target user/channel and message content for the manual-review notification. Update the ERP HTTP Request node with your real endpoint and authentication, and ensure the ERP honors the Idempotency-Key header. Replace the demo duplicate-check logic with an atomic lookup/insert in your database (for example Postgres or Redis) keyed by source_sha256 or source_id.
Related Templates
Verify Linkedin Company Page by Domain with Airtop
Automating LinkedIn Company URL Verification Use Case This automation verifies that a given LinkedIn URL actually belo...
Create a Speech-to-Text API with OpenAI GPT4o-mini Transcribe
Description This template provides a simple and powerful backend for adding speech-to-text capabilities to any applicat...
Build a Restaurant Voice Assistant with VAPI and PostgreSQL for Bookings & Orders
This n8n template demonstrates how to create a comprehensive voice-powered restaurant assistant that handles table reser...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments