SharePoint expense request web part
SPHub Expenses is a SharePoint Online web part for expense requests: an employee submits an expense with its receipt, and an approver accepts or rejects it, all in one SharePoint list in your own Microsoft 365 tenant. It is called Expense Tracker in the web part picker and in the setup wizard, and it ships inside SPHub rather than as a separate install.
The list the setup wizard creates
SPHub Expenses stores its requests in one SharePoint list, SPHubExpenseTracker, which setup creates with seven custom fields beside SharePoint’s own Title. Setup also creates the site pages that host the module’s forms and views.
Fields in the expense list
type and ruleDateRequired. A date without a time.AmountRequired. A number with two decimals.CategoryRequired. A choice: Personal, Household, Health, Hobby, Car/Transport or Food.DescriptionMultiple lines of text.ReceiptA thumbnail-type column. The form saves receipts as list attachments instead.Approval StatusRequired. A choice: In Review, Approved, Partially Approved or Rejected, starting as In Review.Is ActiveYes or no, starting as yes. The recycle bin view uses it.
The expense form
The expense form is a two-step wizard: Basic Information collects the title, category, date and amount, and Details & Receipt collects a description and receipt images.
-
Required fields
Title, date, amount and category are required, and an amount of zero is not accepted. A new request starts as In Review.
-
Receipts
Receipt images are saved as file attachments on the request’s list item. The picker accepts JPG, JPEG, PNG, GIF and WebP image files.
-
Description
The description box holds up to 500 characters.
-
One currency symbol
The list stores the amount as a plain number and has no currency column, so no request carries a currency of its own. The form shows the symbol from the Default currency symbol setting on the SPHub Settings page.
-
Editing a request
The update form reopens the same two steps with the saved values filled in. It opens from the Edit button in the request lists.
Views, search and export
SPHub Expenses has three list views: All Expense Requests, My Expense Requests and Expense Requests Recycle Bin.
-
All Expense Requests
All Expense Requests lists every active expense request, most recently modified first, with a search box, a Choose columns control and an Export button that writes a CSV file. The column choice is remembered in the browser, not in the list.
-
My Expense Requests
My Expense Requests shows only the requests that the signed-in user created, and it has its own CSV export.
-
Delete and the recycle bin
Deleting an expense request is a soft delete: it sets Is Active to no, and the request moves to the Recycle Bin view, where it can be restored. This is a flag inside the list, not SharePoint’s own recycle bin.
-
Request details
The View button opens a side panel with the request’s title, date, amount, category, description and approval status.
Approving and rejecting requests
In SPHub Expenses, approve and reject buttons appear in the all-requests view, and only for people who belong to a SharePoint group named SPHub Approvers.
-
You create the group
Setup does not create the
SPHub Approversgroup, so an administrator creates it in SharePoint and adds the approvers. -
What the buttons do
The approve button sets Approval Status to Approved, and the reject button sets it to Rejected. A decided request shows a status badge in place of the buttons, and the buttons never set Partially Approved.
-
A display rule, not a permission
The group check decides who sees the buttons. It does not change who can edit the list, which stays under your SharePoint permissions.
-
One step
Approval is a single step: one member of the group decides, and the code has no multi-level chain.
Email notifications
Saving a new or updated expense request emails the module’s contact person, and nothing is sent until a contact person is set.
-
Who gets it
The contact person is chosen on the SPHub Settings page for Expense Tracker, with a people picker that takes one person.
-
How it is sent
SPHub sends the message through Microsoft Graph from the signed-in user’s own mailbox, and a copy lands in that user’s Sent Items.
-
What it says
The email text comes from templates in the
SPHubMailTemplateslist, which your team can edit. Setup includes one template for new and one for updated expense requests, carrying the requester, date, expense type, amount and description. -
Approval sends nothing
Approving or rejecting a request sends no email, and a failed email never blocks saving the request.
Where the data lives
Expense data lives in the SPHubExpenseTracker list on your own SharePoint site, inside your Microsoft 365 tenant, and SPHub keeps no copy of it. Receipts are attachments on the list items, so they sit in the same place.
-
An ordinary list
You can open, export, back up and audit the list with the SharePoint tools you already use.
-
Your permissions apply
SharePoint decides who can read and edit the list, and SPHub adds no permission model of its own.
-
One outbound call
The only call SPHub makes outside Microsoft is a licence check that sends your tenant ID; the security page explains it.
Permissions and limits
SPHub Expenses sends its notification email with the Mail.Send Graph permission, and its forms have no people picker. The contact-person picker on the SPHub Settings page uses People.Read, and the security page sets out all three of SPHub’s Graph permissions.
-
In Microsoft Teams
In a Teams tab the web part always opens on All Expense Requests, because outside Teams the view is chosen from the page address.
-
Category choices
The category dropdown reads its choices from the list, and an administrator can add or remove choices on the SPHub Settings page.
How you get it
SPHub Expenses ships inside SPHub, and every SPHub plan includes every web part, so it costs nothing extra. The setup wizard creates its list when you enable the module, the web parts page lists the rest of the set, and pricing has the plans.
Questions
-
Can employees see each other’s expenses?
Each person sees the requests that their SharePoint permissions on the list allow, because the all-requests view adds no filter of its own. The view asks SharePoint for every active request.
-
Can a request carry its own currency?
A request cannot carry its own currency, because the list has no currency column. An amount is a plain number, and the form shows one symbol.
Other SPHub module pages
Expenses is not the only SPHub module with a page of its own: annual leave, travel requests, asset management and issue tracking each have one.
Module pages
what it is- Annual leaveA SharePoint leave request web part: employees submit leave through a two-step form and approvers review the requests in a list.
- Travel requestsA SharePoint Online web part for business travel requests: an employee describes a trip with its dates and estimated costs, and an approver accepts or rejects it.
- Asset managementA SharePoint asset management web part that keeps a company’s equipment inventory in one SharePoint list.
- Issue trackingA SharePoint issue tracking web part that logs problems in one SharePoint list; each issue can carry a priority, a status, an assignee and attachments.
See expenses run in a tenant you control
Install SPHub on a development site, enable Expenses, and submit a request to see the form, the views and the approval buttons.