Automated invoice payment tracking with OCR, Claude AI, Slack & Notion DB
DISCOUNT 20%
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
- Notion DB
- 4 Slack Channel (Invoice Input, Notification, Manual Review, Duplicate Alert (Optional))
- AI Model (We use Claude 3.5 Haiku, Feel free to use Latest Model)
- OCR Parsing (We Used ocr.space, Feel Free to Change into any OCR Parsing you have)
- Create Notion DBs:
- Invoice DB: Title
Invoice No; NumberPaid Amount(editable); SelectStatus; 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).
- Invoice DB: Title
- 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
Invoicerelation + receipt fields. - Test: Run with a sample invoice/receipt → click a Slack button → verify Invoice/Receipt updates in Notion → try Archive from Manual Review.