All templates

Invoices and getting paid

Approve invoices, pay on Friday

This n8n workflow is for small teams that approve supplier invoices by email and want a record of who agreed to what. An approver confirms each amount, a second person signs off anything over your spending limit, and every Friday the workflow emails you the approved invoices to pay. It uses Gmail and Google Sheets and needs no AI key.

Coming soonNot on sale yet

The question
this build answers

How do I get supplier invoices approved by email, with a second sign-off over a limit and a list of what to pay each week?

Run this n8n workflow with a Google Sheet. An invoice comes in through a form page or a Gmail label. Each approver gets an email with their own link, and only the button on the page saves a decision. Above your limit for that currency, a second person from a different list has to sign off. Every Friday you get one email of approved unpaid invoices with totals per currency. By default it moves no money.

From the first trigger
to the finished job.

The working version, step by step.

  1. An invoice comes in

    Someone fills in the form page the workflow serves, and the invoice becomes one row in your Invoices tab. A bad amount or a missing currency is refused, and the reason goes to the Errors tab, at most one row a minute for refused posts. Emails under your Gmail label are logged as rows marked needs amount. It reads no attachments, so someone types the amount before any approver is asked.

  2. The approver gets a link

    Each approver gets an email with their own link. Opening it only shows the invoice and a form, because mail scanners open links before people do. Only the button saves a decision, and the link works once. A likely duplicate needs the approver to tick a box before it can be approved.

  3. A second sign-off over your limit

    Above your spending limit for that currency, a second person from a different list has to sign off, and it cannot be the first approver. The limit is tested on the larger of the invoice amount and the amount typed. A rejection needs a reason, which is emailed to the address typed on the form.

  4. Reminders, then escalation

    Every morning it reminds and then escalates stale approvals, with caps you set.

  5. The Friday pay run

    Every Friday you get one email of the approved unpaid invoices by due date, with totals per currency and a mark-paid link for each.

Not on sale yet

Invoice Approval and Weekly Pay Run for n8n

n8n is still reviewing this template for its own library. It goes on sale here once its test is on record. The zip holds one workflow file to import into your own n8n and a README with every setting.

Coming soon

What we have run, and what we have not

Every Code node branch runs offline, 366 checks in all. On the file in the zip we ran ten live checks on a test Google Sheet and in Stripe test mode, with made-up data. They cover the optional payment path and two approvers pressing at once, which gave one winner three times out of three.

In those runs every email went to a Slack test channel. We have not run a real email approval, the reminder emails or the alert email on this file. Earlier builds ran the form, the approval, the second sign-off and the pay run with real Gmail and a real Google Sheet, and we have not repeated those on this file.

What you need

n8n 1.x or 2.x on an address your approvers can reach from outside, so the links open. A Google account with Gmail and Google Sheets. Slack is optional, and the optional Stripe mode needs a Stripe account of your own.

It starts in preview mode. Send one invoice through the form, read the Log tab, then change the mode to live.

It moves no money by default

By default the workflow pays nobody. It tells you what to pay and records that you paid it. An optional Stripe mode can send a Connect transfer. That mode is only for a business whose payees are Stripe connected accounts, which you list yourself on a Suppliers tab. It does not pay an ordinary supplier's bank account.

Limits worth knowing

The invoice form is public, so anyone with its address can send an invoice, up to a daily cap. A form post can never choose who gets paid.

Google Sheets is not a database lock. Two people pressing at the same moment are settled by a claim line on the Log tab.

It reads invoice emails by pattern, in English, from the email text only. It never opens a PDF.

The duplicate check catches the same supplier with the same invoice number, or the same supplier, amount and currency inside a window. It flags, it does not prove.

Forwarding an approval email forwards the link.

The fit matters.

Who should not build this

If you want invoices read off PDFs automatically, this does not do it. Every amount is typed or confirmed by an approver.

If you need payments sent to ordinary bank accounts, this does not do that.

If your approvers cannot reach your n8n address from where they read email, the links will not open.

Yours to keep

What lands
on your desk.

  • One n8n workflow file to import into your own n8n
  • A README with the sheet tabs, every setting, the limits, and what was and was not tested

A few useful
answers.

Can I buy it today?

You cannot buy it yet. It goes on sale here once its test is on record.

Does it pay suppliers?

It pays nobody by default. It tells you what to pay and records that you paid it. The optional Stripe mode only pays Stripe connected accounts that you list yourself on a Suppliers tab.

Does it read PDF invoices?

It reads no attachments, so it does not read a PDF. An invoice from Gmail waits until someone types the amount.

What do I need to run it?

n8n 1.x or 2.x on an address approvers can reach, and a Google account with Gmail and Google Sheets. Slack and Stripe are optional.

Make this work for you

Your tools.
Your working version.

  1. Ask for a build to fit

    Quoted to your job

    Tell us what your version needs to do. One line is enough to start.

    Start a brief