Back to Templates

Automated Invoice Payment Tracking with OCR, Claude AI, Slack & Notion DB

Created by

Created by: Han || han

Han

Last update

Last update a day ago

Share


How it Works

This workflow automates Invoice & Payment Tracking (with Approvals) across Notion and Slack.

  • Ingest — You drop invoices/receipts (PDF/IMG/JSON) into the flow.

  • Extract — OCR + parsing pulls out key fields (invoice no, vendor, currency, totals, receipt paid amount/date).

  • De-dup & Match — We canonicalize vendor + invoice_no and search Notion:

    • Primary match: Invoice No (+ optional Currency / Vendor (Canon)).
    • Fallback: uses document Amount Total and dates.
  • Decide the action

    • create_unpaid — new invoice (no payment).
    • create_paid — new invoice fully paid (unverified).
    • create_partial — new invoice with a first partial payment.
    • update_partial — add a partial to an existing invoice.
    • update_mark_paid — mark existing invoice paid in full.
    • manual_review — currency mismatch / overpayment / ambiguous.
    • archive — push to archive logs (from manual review).
  • Slack approvals (one-click) — A message shows previous paid, this receipt, new total, and Approve buttons (links to a Wait for Webhook resumeUrl). Reviewer picks: Approve Partial / Mark Paid / Manual Review / Archive.

  • Notion updates

    • We only write editable fields: Paid Amount (number), Status (select), Last Payment Date (date).
    • Formulas (e.g., Amount Total, Amount Due) recompute automatically.
    • Receipts are saved in a Receipts DB and related back to the invoice.
  • Notifications & duplicates — If duplicates are detected, Slack posts a simple list with clickable invoice names.

  • Archiving — From Manual Review, Archive goes straight to Archived Invoice DB (and optional Archived Source File DB) as a log entry—no pre-checks needed.

Set up Steps

Prerequisites

  1. Notion DB
  2. 4 Slack Channel (Invoice Input, Notification, Manual Review, Duplicate Alert (Optional))
  3. AI Model (We use Claude 3.5 Haiku, Feel free to use Latest Model)
  4. OCR Parsing (We Used ocr.space, Feel Free to Change into any OCR Parsing you have)

  • Create Notion DBs:
    • Invoice DB: Title Invoice No; Number Paid Amount (editable); Select Status; Dates (Issue/Due/Last Payment Date); Formulas:
      • Amount Total = round(Subtotal - Discount Amount + Tax Total, 2)
      • Amount Due = max(0, round(Amount Total - Paid Amount, 2))
    • Receipts DB: Invoice No, Vendor, Paid Amount (number), Currency (select), Paid Date (date), Receipt No, Source URL; Relation → Invoice.
    • Archived Invoice DB: Invoice No, Vendor, Reason, Source URL, Original Page ID, Archived At (date).
    • (Optional) Source File / Archived Source File DBs.
    • Share all DBs with your Notion integration (Add connections).
  • Add credentials in n8n: Notion (integration token) and Slack (bot token). Invite the bot to your channel.
  • Import the workflow/template: Set each Notion node’s Database ID and each Slack node’s Channel/Credential.
  • Map updates: In the Invoice Update Page node, map Paid Amount, Status, Last Payment Date. In Create Receipt, map Invoice relation + receipt fields.
  • Test: Run with a sample invoice/receipt → click a Slack button → verify Invoice/Receipt updates in Notion → try Archive from Manual Review.