{
  "$schema": "https://promptfoo.tech/schemas/workflow-template.json",
  "name": "Make.com: Invoice Extraction with GPT-4o Vision",
  "slug": "make-invoice-processing-with-vision",
  "platform": "Make.com",
  "category": "make",
  "difficulty": "Advanced",
  "tags": [
    "make",
    "vision",
    "invoice",
    "accounting"
  ],
  "summary": "Watch a Gmail label, OCR the attached invoice with GPT-4o vision, push line items to Xero or QuickBooks, and Slack the exception cases.",
  "overview": "Bookkeeping teams spend hours retyping invoices. This Make scenario watches a Gmail label ('Invoices'), sends the PDF or image to GPT-4o with a structured extraction prompt, validates totals against line items, and pushes clean data to your accounting system. Anything ambiguous goes to Slack — a human decides, but never types.",
  "variables": {
    "WEBHOOK_URL": "<your webhook URL>",
    "API_KEY": "<your provider API key>"
  },
  "steps": [
    {
      "order": 1,
      "name": "Set up the Gmail label",
      "description": "Manual for week one so you can grade extraction quality. Automate labeling later with a filter."
    },
    {
      "order": 2,
      "name": "Design the extraction schema",
      "description": "Keep it flat. Currency in ISO 4217. Line items as {description, qty, unit_price, amount}."
    },
    {
      "order": 3,
      "name": "Prompt the model",
      "description": "System: 'You are a bookkeeping OCR assistant. Return only valid JSON matching the schema. Never invent values.'"
    },
    {
      "order": 4,
      "name": "Validate",
      "description": "Router: sum of line items + tax must equal total within 1%. Currency must be ISO. Date must parse."
    },
    {
      "order": 5,
      "name": "Xero / QuickBooks push",
      "description": "Match vendor by name → contact_id; create draft bill. Never auto-approve."
    },
    {
      "order": 6,
      "name": "Exception flow",
      "description": "Slack message with vendor guess, extracted JSON, and 'Approve' / 'Reject' buttons. Reject archives to review folder."
    }
  ],
  "howItWorks": [
    "Gmail Watch Emails module filtered by label:invoices.",
    "Convert attachment to base64; send to OpenAI Vision.",
    "Prompt returns a strict JSON: vendor, date, currency, subtotal, tax, total, line_items[].",
    "Math check: sum(line_items) + tax === total (with 1% tolerance).",
    "On match → Xero API create bill. On mismatch → Slack with the extraction + attachment link."
  ],
  "benefits": [
    "Cuts AP data entry by 90%+.",
    "Math validation catches OCR errors before they hit the ledger.",
    "Exception queue in Slack keeps the human in the loop for the 5% edge cases."
  ],
  "useCases": [
    "Small businesses processing 50-500 invoices/month.",
    "Agencies with multiple client entities to reconcile.",
    "Bookkeepers offering AP as a service."
  ],
  "example": "Attachment: acme_invoice_042.pdf. Extraction: vendor:Acme Corp, total:1240.00 USD, 4 line items. Math check passes. Xero draft bill created. Slack: 'Xero draft ready — needs approval.'",
  "faqs": [
    {
      "q": "How accurate is GPT-4o vision on invoices?",
      "a": "95%+ on typed invoices, 85%+ on scanned receipts. Math validation catches the misses that would matter."
    },
    {
      "q": "PII / compliance?",
      "a": "For US/EU businesses, review OpenAI's DPA. For regulated industries, Azure OpenAI + a compliant Gmail policy is the cleaner path."
    },
    {
      "q": "Multi-currency?",
      "a": "Ask for ISO 4217 code in the schema. Convert to your base currency in accounting, not in Make."
    }
  ],
  "source": "https://promptfoo.tech/workflows/make-invoice-processing-with-vision",
  "updated": "2026-06-20",
  "license": "CC-BY-4.0"
}