← Al Davies, 250 High Street

Invoice approval with Power Automate: a tracker and a flow that record every decision

Short answer: put each invoice in a SharePoint list, then build a Power Automate flow that starts on "When an item is created", uses "Start and wait for an approval", and writes the decision, comment and date back to the same row. A view of Pending invoices, oldest first, is your stuck-invoice list. This guide does not give accounting, tax or audit advice. Your finance lead decides your rules.

At a glance

Swipe sideways to see all columns.

ItemNumberWhat it means for you
Run time for one flow30 daysA flow that waits on an approval is stopped after 30 days. Pending steps time out.
Actions in one flow500A flow can hold up to 500 actions. Split big flows into child flows.
New approval requests per flow50 every 60 secondsSending many invoices at once can hit this cap. Spread out big batches.
Items one Apply to each loop handles5,000 on Microsoft 365 plans, 100,000 on Power Automate PremiumA loop over many invoices stops at this size. Filter the list first.

Why invoice approval goes wrong

An invoice arrives by email as a PDF. Someone forwards it to a manager. The manager is busy, or away, or never sees it. A week later the vendor asks where the payment is. Nobody knows who has the invoice or whether anyone said yes.

Causes:

Signs this is happening in your team

What to track in the invoice list

Start with a short list of columns. You can add more later. One way to start:

Keep the vendor list and any amount limits in a place your admin controls.

Views are not security. If only some people should see an invoice, set permissions on the list or the item. Do not rely on hiding it in a view.

For more on turning a file into a list, see "Replace a spreadsheet tracker with a SharePoint list".

Decide who approves by amount

Write the approval rule on one page before you build. For example:

The numbers and names are yours to choose. This guide does not tell you what the limits should be. In the flow, you use a Condition step that compares the Amount column to your limit and picks the approver. For a different rule, such as two approvers for large invoices, Power Automate also offers approval types where everyone must approve and a type where approvals go one at a time in order. If you keep the rule small, the flow stays easy to read and fix.

Step 1. Build the list

  1. Open your SharePoint site and create a new list. Name it "Invoices".
  2. Add the columns from the section above. Set Status to a choice column with Pending, Approved and Rejected. Set the default to Pending.
  3. Add 3 test invoices with made-up vendors and amounts.

Step 2. Create the flow

  1. Go to Power Automate and create an automated cloud flow.
  2. Choose the SharePoint trigger "When an item is created". Select your site address and the list name "Invoices".
  3. Name the flow something clear, such as "Invoice approval".

The trigger starts the flow each time someone adds a new invoice row. There is also a trigger called "When an item is created or modified". Be careful with that one, because the flow's own update at the end counts as a change. For this build, "When an item is created" is the simpler choice.

Exact names may differ in your version of the designer. The steps follow the same order.

Step 3. Pick the approver by amount

  1. Add a Condition step after the trigger.
  2. Set it to check whether the Amount from your list is greater than or equal to your limit.
  3. In the "Yes" branch, set the approver to the department head. In the "No" branch, set it to the team lead.

One simple way: add a person column called Approver that your team fills in, so no names sit inside the flow.

Step 4. Ask for the approval

  1. Add the action "Start and wait for an approval" (under Approvals).
  2. Choose the approval type "Approve/Reject - First to respond" if one approver is enough.
  3. In Title, put the invoice number and vendor.
  4. In Assigned to, put the approver's email address.
  5. In Details, put the amount, the due date and the link to the invoice file. Microsoft says you can format this field with Markdown.
  6. Optionally, add a link to the list item.

When the flow reaches this action it waits. The approver can answer from an Outlook email, a Microsoft Teams card or the Power Automate action center, according to Microsoft. If the approver does not have the right license, they may not be able to answer. Check with your admin.

Step 5. Record the decision and the date

  1. Add a Condition after the approval. Check whether the Outcome from the approval equals "Approve".
  2. In the "Yes" branch, add the SharePoint action "Update item". Choose the same site and list, and set the Id to the Id of the item that started the flow. Set Status to Approved, Decision date to the current date, and Approver comments to the comments from the approval.
  3. In the "No" branch, add another "Update item". Set Status to Rejected, and fill in the date and comments the same way.
  4. Optionally, add an email or Teams message to the person who submitted the invoice with the result.

Microsoft's own tutorial uses the same shape: a SharePoint trigger, a Start and wait for an approval action, a condition on the response, and Update item steps that write the outcome back. Its example is a vacation request instead of an invoice.

The Update item action needs the Site Address, List Name and Id. The Microsoft tutorial also lists Title as required in its screens, so you may need to pass the title through.

After this step, every decision sits on the invoice row: who decided, what they said and when. That is your record. Whether that record meets your own audit needs is a question for your finance lead or your auditor.

Worked example: two approvers for one invoice

Say Row 12 is a large invoice. Microsoft's sequential approvals tutorial shows a pre-approval step, where the final approver gets the request only after the request is pre-approved. For Row 12, the team lead pre-approves, then the department head gives the final answer. Add a second "Start and wait for an approval" after a Condition on the first outcome. Microsoft's parallel approvals tutorial instead sends the request to several approvers at once, and each person's approval is independent of all other approvers. Pick sequential when the second person should only see invoices the first already passed. Both tutorials are linked in the sources.

Variant: approve an invoice PDF in a library

If invoices are PDF files in a document library instead of list rows, use the trigger for a new file. Microsoft's library article builds this from the template "Start an approval for new file to move it to a different folder", using Get File Content, Start and wait for an approval, a Condition, and actions that move the file. See also "Document approval in SharePoint: built-in approval or a flow?".

Reminders for slow approvers

Microsoft's limits page says run duration "includes flows with pending steps like approvals. After 30 days, any pending steps time out." So an approver who never answers ends the wait at 30 days. Our advice, not a Microsoft rule: add a reminder flow well before then. See "Remind an approver who has not answered after two days".

Step 6. Build the stuck-invoice view

Make a view called "Waiting". It shows only invoices that need action.

  1. In the list, create a new view.
  2. Filter to rows where Status equals Pending.
  3. Sort by Invoice date or by the Created column, oldest first.
  4. Show the columns people need: invoice number, vendor, amount, approver, due date.

The oldest row at the top is your longest-waiting invoice. If you want a rule such as "waiting more than 5 days", use the classic view editor: choose Edit current view, then Filters. Microsoft says filters with [Today] or [Me] need the classic view editor (Edit current view, then Filters). Our advice, not a Microsoft rule: use the classic view editor for blank and "is not equal to" filters too. A calculated column cannot use today's date, because SharePoint blocks [Today] in formulas. So do not try to build a "days waiting" calculated column. Sort by date, or use a filter with [Today] in the classic editor.

Step 7. Test with real cases

  1. Add a small invoice and a large invoice. Check that each goes to the right approver.
  2. Approve one and reject the other. Check that the row shows the right Status, date and comment.
  3. Leave one pending. Check that it appears in the Waiting view.
  4. Ask the approver to open the request on a phone to check that it works for them.

What to avoid

Honest limits

Microsoft says that approvals are saved in Microsoft Dataverse and that you need a valid license to create flows. Which license your company has, and whether it covers this flow, is a question for your admin. Microsoft also says that if a flow might run for more than 30 days, you should store approvals in Dataverse and use two flows: one to send the request and one to act on the response. So a long wait for an approver can be a design issue, not just a people issue. Test what happens when an approver is slow.

A flow does not make people answer. It makes the request easy to answer and the delay easy to see. Start with one approver and one rule, and add more only when the first works.

For a version of this build that sits in Teams, see "A Power Automate approval workflow in Teams, at a fixed price". To compare ways to answer an approval, see "Teams approvals vs email approvals: which is better for your team?". If your problem is the waiting itself, see "Purchase requests stuck waiting for approval: how to see them and move them".

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

Updated 2026-10-27.

How do I create an approval flow in Power Automate?

Add the action "Start and wait for an approval" to a flow with a trigger such as the SharePoint trigger "When an item is created". Choose an Approval type, set the Title and Assigned to, then add a Condition on the outcome.

Can the flow pick the approver based on the invoice amount?

Yes. Add a Condition step that compares the Amount column to your limit and sends the request to a different approver in each branch. Your finance lead sets the limits.

How do I send a document for approval in SharePoint?

For a file in a library, Microsoft's template "Start an approval for new file to move it to a different folder" sends an approval when a new file is added. For the choice between that and the library's own settings, see "Document approval in SharePoint: built-in approval or a flow?".

Where is the decision recorded?

The flow uses the SharePoint Update item action to write the status, the date and the approver's comments back to the invoice row. The approval itself is also saved by Power Automate, according to Microsoft.

Is this an audit trail?

It is a record of who decided, what they said and when. This guide does not say whether it meets your audit or accounting rules. Ask your finance lead or auditor.

Sources