# Expense approval with a SharePoint list

> For the full documentation index, see https://250highstreet.com/llms.txt

> A simple way to run employee expense approval in a SharePoint list: one request per row, a receipt attached, a named manager, a status, and a view for finance.

Short answer: build an expense list in SharePoint with one row per expense and the receipt attached, then add a Power Automate flow that sends each new row to the manager with the action "Start and wait for an approval" and writes the decision back to the row. Make one view for managers and one for finance (approved, not yet paid). This guide covers staff expenses only. It does not give accounting, tax or policy advice. Follow your own expense policy.

## At a glance

| Item | Number | What it means for you |
|----|----|----|
| Approval wait time | 30 days | A flow run times out pending steps after 30 days. Chase managers before then. |
| Items in one list | 30 million | One row per expense will not reach this. Size is not the worry. |
| List view threshold | 5,000 items | Views of more than 5,000 expenses can fail. Filter finance views by status or date. |
| Flow with repeated errors | 14 days | A flow that fails again and again is turned off. Watch run history. |
| Idle flow shut off | 90 days | A flow with no trigger in 90 days might be turned off. Quiet teams should check it. |

## Why expense approval gets messy

Expenses start as a photo of a receipt and a message. The message goes to a manager, or to finance, or to both. The manager says "fine" in a reply. Finance never sees that reply. Weeks later someone asks, "Did I get paid for the trip?"

Causes:

- The request lives in email or chat, so there is no single place to look.
- The receipt is in one message and the amount is in another.
- Nobody knows which manager must approve.
- Finance cannot tell approved items from items still waiting.
- The same expense is sent twice, or not at all.

## This guide and its neighbors

Other guides cover nearby jobs. "[Purchase requests stuck waiting for approval: how to see them and move them](/guides/purchase-requests-stuck-waiting-for-approval/)" is about asking before you buy. This guide is about money a person already spent and wants back, with a receipt as proof.

## Signs this is happening in your team

- Staff ask "was my expense paid?" and no one can answer quickly.
- Finance asks managers by email whether an expense was approved.
- Receipts are found by searching old messages.
- Month end brings a pile of requests all at once.

## What to track

One row is one expense. A simple set of columns:

- Title (a short expense name)
- Submitted by (a Person column)
- Expense date (Date and Time)
- Description (one line)
- Amount (Currency)
- Category (Choice, using the names your finance team already uses)
- Manager (a Person column, the one person who must approve)
- Status (Choice: Submitted, Approved, Rejected, Paid)
- Decision date (Date and Time)
- Manager comment (text)
- Receipt (an attachment on the row)

Microsoft lists these column types in its introduction to lists: Text, Number, Choice, Currency, Date and Time, Lookup, Yes/No and Calculated. Exact names may differ in your version.

Use the Title column for a short expense name, such as the trip or purchase.

## Step 1. Create the list

1.  Open the SharePoint site your team uses, or the Lists app.
2.  Create a new list and choose the blank option.
3.  Name it "Expenses".
4.  Add the columns above. Add Status as a Choice column and set the default to Submitted, so no row is empty.

Use a Person column for Manager, not plain text. A Person column holds a real account. That helps later when you filter or send approvals. For a longer walk through of moving from a spreadsheet, see "[Replace a spreadsheet tracker with a SharePoint list](/guides/replace-spreadsheet-with-sharepoint-list/)".

## Step 2. Attach the receipt to the row

Microsoft says you can attach one or more files to a list item to add supporting detail, such as a spreadsheet or a document. Microsoft's service limits page lists 250 MB as the limit for a file attached to a list item, for Microsoft Lists and SharePoint lists. A phone photo of a receipt is far smaller than that.

The exact button to attach a file depends on the form you use, so look for an attach option when you open a new item. Test it with one real receipt before you tell the team.

Ask staff to attach the receipt when they submit, not later. A row without a receipt should not go to the manager. Whether a receipt is needed for a given amount is a question for your expense policy, not for this list.

## Step 3. Name one manager per person

Write down who approves for each person, and who covers when that manager is away. Keep the rule to one page. In the list, the Manager column holds the name for each row.

If several people share the same manager, you can ask staff to pick the manager when they submit. To avoid wrong picks, keep the rule where people can see it, such as the top of the list page.

## Step 4. Make a view for each job

A view is a saved way of showing the same list. Microsoft says you can create list views to organize, sort and filter data in different ways, and that the contents of the actual list do not change. Make these views:

1.  All expenses. Everything, newest first. This is the record.
2.  Waiting for a manager. Status is Submitted. Sort by the Expense date, oldest first.
3.  Waiting on me. For managers. Status is Submitted and Manager is the person viewing.
4.  For finance. Status is Approved, so finance sees what is ready to pay. When an item is paid, finance changes Status to Paid, and it drops out of the view.
5.  By category. Group by Category, with a total of the Amount column. Check that the total shows for your view type.

For view 3, use the \[Me\] keyword. Microsoft says \[Me\] works on people-based columns, and that you cannot use \[Today\] or \[Me\] when filtering from a column header. That page says to use the classic view editor for finer control: choose Edit current view, then find the Filters section and choose "Show items only when the following is true". Microsoft says you can define up to 10 filter statements there. Menu names may differ.

The same rule covers any filter on today's date. A calculated column cannot use today's date, because SharePoint blocks \[Today\] in formulas. If you want a view of requests that have waited too long, use a \[Today\] filter in the classic view editor. Microsoft gives an example of a date column greater than or equal to \[Today\] minus 30.

## Views are not security

A view that shows only Approved items does not hide the other items. Anyone with access to the list can open the full list or change the view. If expenses have private details, or finance must not be seen by others, a view will not protect them.

Microsoft says you can control whether people edit only the items they created or every item, and that item-level permissions can protect individual entries. Ask your admin to set permissions. Test with a normal staff account, not your own.

## Step 5. Build the approval flow

You can send approvals by hand, by sending the manager a link to the row. That works for a small team. To make the manager's answer land in the list on its own, use Power Automate. Microsoft's tutorial builds an approval flow that starts when someone creates a request in a SharePoint Online list, uses a vacation request, and the same shape fits an expense.

1.  In Power Automate, create an automated cloud flow. Choose the SharePoint trigger "When an item is created" and pick your site and the Expenses list.
2.  Add the action "Start and wait for an approval" (under Standard approvals). Choose an Approval type. Microsoft's approvals page lists "Approve/Reject - First to respond" and "Approve/Reject - Everyone must approve" among its approval types.
3.  In Title, put the expense short name. In "Assigned to", enter the email address of the approver, taken from the Manager column of the new row. In Details, put the amount, date and reason. Microsoft says you can use Markdown to format the Details field.
4.  Add a Condition. In the left box pick the Outcome from the approval, then "is equal to", then Approve.
5.  In the "If yes" branch, add the SharePoint action "Update item". Set Status to Approved, Decision date to today's date (the utcNow() expression) and Manager comment to the approver's comments. Microsoft says the Site Address, List Name, Id and Title fields are required on Update item. Then send an email to the person who submitted.
6.  In the "If no" branch, add "Update item" to set Status to Rejected, with the date and comments, and send a different email.

Approvers can respond from an Outlook email, the approvals center in Power Automate, or the Power Automate app, according to Microsoft. The approvals page also says they can respond from a Microsoft Teams adaptive card or the Power Automate action center if they have a Power Automate license or an Office 365 or Dynamics 365 license with built-in Power Automate capabilities. That page also lists a Dataverse database and a valid license to create flows as prerequisites, and says the database is created for you in the default environment. Check with your admin which environment and licenses you have.

Microsoft's approvals page also lists sequential approval, where requests go one at a time in a set order. One manager is the simplest place to start. For a comparison of Teams and email approvals, see "[Teams approvals vs email approvals](/guides/teams-approvals-vs-email-approvals/)".

## Step 6. Test with one real expense

1.  Submit a test row with a receipt attached.
2.  Confirm the manager gets the request.
3.  Reject it once, then approve a second one. Check that the Status and comment come back to the list each time.
4.  Open the finance view and check the approved row shows up.
5.  Check what a normal staff account can see.

Delete test rows after you finish, or mark them clearly so finance does not pay them. Never ship the list with test rows in it.

## Step 7. Run it for one month

Pick one team to start. At month end, ask finance what was missing. Fixes to consider are a new category, a clearer description rule, or a reminder to attach the receipt. Change the list a little at a time. Do not rebuild it each month.

## What to avoid

- Do not add a column for every question. Ten columns that people skip are worse than seven that they fill.
- Do not let managers approve by email reply only. The decision then stays out of the list.
- Do not use plain text for the Manager. Use a Person column.
- Do not rely on a view to hide private rows. Views are not security.
- Do not use a calculated column for "days waiting". SharePoint blocks \[Today\] in formulas.
- Do not mix vendor invoices into this list. They have a different flow, and mixing them makes the finance view hard to read.
- Do not let the list decide what is allowed. Your expense policy decides that. The list only records the decision.

## Honest limits

A list records who asked, who said yes and when. It does not check receipts, amounts or rules for you. It does not pay anyone. Paying and booking the expense still happens in your finance process. Also, the approval flow needs the right licenses and a place to store approvals, so check with your admin first. Exact menu and action names may differ from the ones here.

## 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](/guides/what-a-sharepoint-tracker-costs/)". Bring one example of the problem to a free call.

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](/portfolio/)

## FAQ

Updated 2026-10-27.

### Can a list item hold a receipt?

Yes. Microsoft says you can attach one or more files to a list item. Its service limits page gives 250 MB as the limit for a file attached to a list item.

### How do I set up expense approval in Power Automate?

Use the SharePoint trigger "When an item is created", then the action "Start and wait for an approval", then a Condition on the outcome and an "Update item" step that writes Status and the decision date back to the row.

### Can managers approve from their phone?

Yes. Microsoft says approvers can respond from their email inbox, the approvals center in Power Automate, or the Power Automate app, and it links the Power Automate mobile app for Android and iOS.

### Do I need Power Automate?

No. A list with a "Waiting for a manager" view works alone. Managers can open the row and change the Status. Power Automate adds the approval message and writes the answer back for you.

### Who decides what expenses are allowed?

Your expense policy does. This guide does not give accounting, tax or policy advice. The list records requests and decisions.

## Sources

- [Microsoft Support, Introduction to lists](https://support.microsoft.com/en-us/office/introduction-to-lists-0a1c3ace-def0-44af-b225-cfa8d92c52d7)
- [Microsoft Support, Use filtering to modify a SharePoint view](https://support.microsoft.com/en-us/office/use-filtering-to-modify-a-sharepoint-view-3d8efc52-0808-4731-8f9b-3dfaeacea3d4)
- [Microsoft Learn, SharePoint limits](https://learn.microsoft.com/en-us/office365/servicedescriptions/sharepoint-online-service-description/sharepoint-online-limits)
- [Microsoft Learn, Create and test an approval workflow with Power Automate](https://learn.microsoft.com/en-us/power-automate/modern-approvals)
- [Microsoft Learn, Get started with Power Automate approvals](https://learn.microsoft.com/en-us/power-automate/get-started-approvals)
- [Microsoft Learn, The number of items in this list exceeds the list view threshold](https://learn.microsoft.com/en-us/troubleshoot/sharepoint/lists-and-libraries/items-exceeds-list-view-threshold)
- [Microsoft Learn, Limits of automated, scheduled, and instant flows](https://learn.microsoft.com/en-us/power-automate/limits-and-config)

## Related guides

- [Set up a sequential approval in Power Automate](/guides/power-automate-sequential-approval/)
- [Overtime request form with approval in SharePoint](/guides/overtime-request-form-sharepoint/)
- [Send an approval with attachments from a SharePoint list](/guides/power-automate-approval-with-attachments/)

Source: https://250highstreet.com/guides/expense-approval-sharepoint/
