Flowgrammer

Notion Invoice Tracker

Build an AP invoice register in Notion with statuses, a duplicate key, overdue formulas, saved views, and a human approval stop before posting or payment.

— Craig Major

A Notion invoice tracker is an accounts-payable register you build and run in Notion. Each page records who billed you, the invoice number, status, owner, exceptions, and whether a person approved the bill. Notion stores the list, constrains the closed lists, and calculates duplicate keys and overdue flags. This tracker does not extract structured invoice fields from PDFs, create an accounting draft, certify approval, or send payment by itself.

This page implements the published Invoice Tracker in Notion. The paired Notion Invoice Tracker Template is the spec and CSV pack you import. The shared field list and sample rows live in the Invoice Tracker Starter Pack. The published Google Sheets Invoice Tracker is the spreadsheet twin. Extraction and destination drafts stay on Invoice Processing Automation. What to automate first stays on Document Processing Automation.

Who this is for

Use this when supplier invoices already arrive and the immediate job is one visible register in Notion: what came in, what is waiting, what is overdue, and what must not be entered twice.

Prerequisites:

  • One buying entity for the first register. The worked example is fictional Cedar & Quay Fabrication Ltd.
  • Agreement that this is an AP status list for bills you received, not a sales-invoice layout you send to customers
  • A named reviewer who can set approval_decision
  • A place to keep the source file, usually a Drive or SharePoint folder plus a source_ref
  • Agreement that posted_ref and paid_ref stay empty until a person confirms those actions in another system

Stay out of this first database: supplier bank-detail changes, tax filings, autonomous payment, and multi-entity matching.

If you still need the platform-neutral model, stay on the parent tracker. If you want the same schema in a spreadsheet, use the live Google Sheets Invoice Tracker Workbook. If you need extraction and an accounting draft, use the invoice-processing guide and the live Invoice Processing Test Pack. That pack uses labelled-text fixtures and does not measure OCR.

This is not a Notion invoice template

Many Notion invoice templates are sendable customer invoices with a logo, bill-to address, line items, and a printable page. That is accounts receivable. This pack is an accounts-payable register for bills you received.

What Notion implements

The Invoice Tracker Starter Pack defines the shared field list. This Notion twin uses the same names so you can move data between the two without remapping it.

Starter piece Notion twin
Field dictionary Invoices properties, same names
Status model Select options on status
Duplicate key Formula on duplicate_key
Exceptions and roles Exceptions and Roles databases or Setup tables
Sample rows INV-TR-0001-0010 Same fictional Cedar & Quay rows
Dashboard metrics Filtered views and Calculate at as-of 2026-09-08
Audit events AuditEvents database

Keeping the published field names makes imports and later migrations easier.

Notion-native additions that are not a second schema:

  • Select options for currency, status, exception_code, and approval_decision
  • Computed duplicate_key, amount_delta, days_overdue, aging_bucket, is_overdue, posted_without_approval
  • Saved views for pending approval, exceptions, overdue, approved unposted, and duplicates
  • An optional Board grouped by status
  • Optional source_files Files & media or source_url beside source_ref
  • A Vendors relation after you rebuild it

duplicate_key is computed whenever invoice_no is present:

if(empty(prop("invoice_no")), "", lower(trim(prop("vendor_name"))) + "|" + lower(trim(prop("invoice_no"))))

A blank invoice number leaves the key empty and pairs with missing_invoice_no. Two blank numbers are not the same bill. Notion has no unique constraint. The formula and a Duplicates view only show the collision.

Import and sharing

Notion documents CSV import on desktop and web (Import data into Notion). Go to Settings → Import → CSV to create a new database, or open Invoices and choose Merge with CSV. Map columns by exact header names. A new CSV import cannot create formulas or relations. Rebuild those after import. CSV merges add rows. They do not update existing rows.

Official file-size limits for CSV: 5 MB per file on the Free plan and 50 MB per file on paid plans.

Share the reviewer as Can edit or Can edit content (Sharing & permissions). Can edit content lets a person create and edit invoice pages and property values. It does not let them add properties or change views. Lock database stops accidental property and view edits (Intro to databases). Anyone with editing access can toggle that lock. It is not a security control.

Version history is collaboration history. Notion Help states you can restore page versions going back 7 days on Free, 30 days on Plus, 90 days on Business, and any number of days on Enterprise (Delete & restore content). That is not a certified financial audit log. Keep named decisions in AuditEvents.

This package is a setup and spec pack. No live duplicable Notion template was created or verified in this pass. Do not treat the download as a Marketplace listing.

Worked example

Cedar & Quay Fabrication Ltd is a fictional Toronto buyer. Import the CSV pack. Keep the sample as-of date at 8 September 2026.

  1. INV-TR-0001, Ridgemont Industrial Supply Co, INV-TP-2401, CAD 452.00. Status pending_approval. duplicate_key is ridgemont industrial supply co|inv-tp-2401. No posted_ref. No paid_ref.
  2. INV-TR-0002 uses the same vendor and invoice number on a different file. Status duplicate. The first page is unchanged. duplicate_key is still ridgemont industrial supply co|inv-tp-2401.
  3. INV-TR-0003, Ashbridge Print Works, blank invoice number. Status exception / missing_invoice_no. duplicate_key is empty.
  4. INV-TR-0004, Prairie Bolt & Fastener Ltd, printed total 185.00 versus 220.50. amount_delta is 35.50.
  5. INV-TR-0006, Kings Mill Packaging Co, due 19 August 2026, status approved. On the as-of date it is overdue. follow_up_owner is Priya Nair (fictional).
  6. INV-TR-0007 has posted_ref QBO-BILL-FICTION-441 only because a person recorded an external draft after approval_decision was approve.

The companies, people, GST/HST numbers, and destination ids are fictional. They are not customer results.

Formulas, views, and optional forms

After import, add the formula properties. Copy the recipes from the paired template pack.

Property Job
duplicate_key Identity key when invoice_no exists
amount_delta Absolute difference of subtotal plus tax versus printed total
days_overdue Days past due using as-of 2026-09-08, zero if paid, rejected, or duplicate
aging_bucket current, 1_7, 8_30, 31_plus
is_overdue yes or no
posted_without_approval yes if posted_ref is set and approval_decision is empty

Dashboard counts should include only pages with a record_id.

Notion documents views, filters, sorts, and groups (Database views, filters, sorts & groups). Create views named Pending approval, Exceptions, Overdue, Approved unposted, and Duplicates. A Board grouped by status is optional.

Optional later: a Form bound to Invoices for intake (Build forms in Notion). Required questions can cover vendor_name, invoice_no, dates, amounts, and source_ref. Conditional form logic is a Business or Enterprise feature. A form is not approval.

Optional later: a Date property reminder (Set reminders). That is notify only.

What can run automatically, and what cannot

Situation This tracker can do Person required
New page with Select lists Yes Confirm the source if intake is messy
Compute duplicate_key and amount_delta Yes Yes, before approval
Flag overdue from the as-of date Yes Assign follow_up_owner
Filter pending approval Yes The approve decision itself
Notify a reviewer when status is pending_approval Paid-plan database automation, or Free Slack-notify only Still a human decision
Extract fields from a PDF No Use invoice processing, not this database
Create an accounting draft No Record posted_ref after a person confirms the write
Send payment No Record paid_ref after a person confirms payment
Certify AP approval No approval_decision is an operating field, not a legal certificate

Notion Help says database automations are available on paid plans. Free Plan users can create Slack notification automations, but no other kinds, and can use existing automations in templates without editing them (Database automations). Do not attach an automation that sets posted_ref or paid_ref.

Human gates

A person keeps these decisions:

  • Who owns the page and who may review it
  • Whether a duplicate or exception may continue
  • Approve, reject, or hold
  • Whether posted_ref may be filled after an accounting write
  • Whether paid_ref may be filled after a payment
  • Who may edit the database

The tracker must not create a vendor bill, release a payment, change supplier bank details, or treat a formula result as approval.

Failure paths

Failure Expected result Next action
Blank invoice_no missing_invoice_no; empty duplicate_key Collect the number. Do not key two blanks together
Same vendor and invoice number Status duplicate Leave the first page alone
Subtotal plus tax does not match total conflicting_total; amount_delta > 0.011 Check the source
posted_ref with empty approval_decision posted_without_approval = yes Return to pending_approval
Overdue approved page is_overdue yes Assign follow_up_owner
Missing owner missing_owner Assign someone
Unknown vendor unknown_vendor Confirm the supplier
Treating Lock database as security Invalid assumption Share only with people you trust
Automation posts or pays Out of scope Remove the automation

Version history and lock are not an audit or security control

After setup you may lock the database so reviewers do not change properties or views. Notion is explicit that anyone with editing access can toggle the lock. Can edit content is a collaboration permission. It is not a SOX control and it is not certified AP approval.

Version history depth is plan-dependent: 7 days on Free, 30 days on Plus, 90 days on Business, unlimited on Enterprise. Restoring a database restores pages and properties. Notion Help says the contents inside those pages are not restored with the database. Keep AuditEvents as the decision record.

Cite: Delete & restore content and Intro to databases, accessed 8 September 2026.

Test cases

Walk these pages after import with as-of 2026-09-08.

Case Row Expected
Clean received INV-TR-0001 pending_approval; key filled; no posted or paid
Duplicate INV-TR-0002 duplicate; same key as 0001; first page unchanged
Missing invoice number INV-TR-0003 exception / missing_invoice_no; key empty
Conflicting total INV-TR-0004 amount_delta 35.50
Overdue approved INV-TR-0006 is_overdue yes; follow_up_owner set
Posted after human confirm INV-TR-0007 posted_ref present; approval present
Missing owner INV-TR-0010 exception / missing_owner

Dashboard sample results at that as-of date: open 8, pending approval 1, exception 4, duplicate 1, overdue 2, overdue amount 463.30, approved unposted 2, posted unpaid 1, invalid posted without approval 0, amount mismatch 1. Those are planning counts, not savings.

What to measure

Count open pages, exceptions, duplicate stops, pending approval, overdue pages, and how often posted_ref is filled in the same week as approval.

Do not convert those counts into a savings claim. The Automation ROI Calculator is a planning worksheet. Replace its illustration with your observed numbers.

Replace the fictional sample counts with results from your own register before using them to plan work.

How to use the template pack

Download the Notion Invoice Tracker Template. The paired pack is a setup and spec set: CSVs, formula recipes, views, and import notes. It is not a live Duplicate-as-template URL.

  1. Download the paired ZIP.
  2. In Notion, use Settings → Import → CSV or Merge with CSV. Official help: Import data into Notion.
  3. Rebuild the six formula properties. Confirm Select options match the starter lists.
  4. Create the saved views listed above.
  5. Walk the seven cases.
  6. Add your own approved or fictional pages. Keep automations off financial writes.

If you already imported the Google Sheets Invoice Tracker Workbook, keep the same published field names so imports and later migrations stay aligned.

Canadian buyers who later claim input tax credits still need prescribed information on the source invoice. CRA GST/HST Memorandum 8-4 is about supporting documents, not a licence for this tracker to file tax.

Next step

If one team, one inbox, and one Notion database are enough, stay on this register until the handoffs hurt.

If invoices arrive through several channels, need named approvers with a trail a shared database cannot protect, or must create an accounting draft without retyping, scope a Document Intake and Approval System through AI Automation Systems.

If several document workflows are competing, use the AI Success Audit.

Sources

Frequently asked questions

What is a Notion invoice tracker?

An AP register in Notion with required fields, a status Select, an owner, a computed duplicate key, exception flags, and a record of who approved the page. It does not post or pay the invoice.

Is this the same as a Notion invoice template?

No. A tracker records bills you received. A sales-invoice template is a document you send to a customer.

Does this tracker extract invoice fields from PDFs?

No. This tracker does not extract structured invoice fields from PDFs by itself. Keep a file name or URL in `source_ref`. Extraction stays on the invoice-processing workflow.

Does this database create a QuickBooks or Xero draft?

No. This database does not create an accounting draft or send payment by itself. A person records `posted_ref` after confirming the write in accounting.

Are Lock database and version history enough to lock the register?

No. Anyone with edit access can toggle the lock. Version history depth depends on the plan. Keep AuditEvents for named decisions.

Did Flowgrammer publish a live Notion template?

No. The pack ships as a downloadable spec and CSV set. A live Duplicate-as-template URL would be named only after an account-side publish is verified.

Should we use automations to post or pay?

No. Automations are optional later and stay out of v1 financial writes. Most automation types need a paid plan. Do not attach an automation that posts or pays.

When is a Notion tracker no longer enough?

When intake has more than one channel, when approval needs a protected audit trail, or when an approved page must create an accounting draft without retyping.