How to Check Expense Claims Data for a Large Headcount
This article explains how to check Expense Claims data for many employees at once during the data verification stage of implementation. You export the Expense Claim Balances report from brioHR, compare it in a spreadsheet with the claim history you submitted in your template, and look only at the rows that don't match.
Audience & Scope
Audience: HR Admin, Finance , Claim Manager
Module: Expense Claims
Country: Global
Pre-requisites: User group permission for Claim reports
When to use this method
With many employees, opening one claim policy or one employee's balances at a time is slow. Instead, export every employee's claim policy, limits and used amounts in one report, and compare them with your template in bulk. Use it before go-live, once your IM has migrated your claim setup and claim history.
Before you start
- You have the Expense Claims Migration Template you submitted, with its Claim history that has limit tab.
- You have the list you gave your IM of which employees belong in each claim policy.
- No employee has made a claim in brioHR yet. If they have, their new claims will also count in the report (see Common Issues/FAQ).
Practice with sample files
You can practise this method on sample files before you check your own data. Each step below ends with a Practice box (what to do with the sample files) and a Check your answer box (what you should find).
Download the three files:
- brioHR Expense Claim Balances report: Practice_Expense_Claim_Balances_Oct_2026.xlsx
- Submitted template: Practice_Submitted_Claim_History_Bayu_Tech.xlsx (the Claim history that has limit tab, the policy list sent to the IM, and the agreed claim limits)
- Answer key: Practice_Answer_Key_Expense_Claims_Large_Headcount.xlsx
The files belong to Bayu Tech, a fictional company with 30 employees. It goes live on brioHR in November 2026, and its claim history from January to October 2026 was migrated from its template. Some of the setup and history wasn't migrated correctly: your job is to find out what. All names and amounts are made up.
Step 1: Export the Expense Claim Balances report
- Go to Analytics > Report Builder > Expense Claim Balances and click Create.
- Select the year and month to calculate balances as of. Choose the last month your claim history covers (for example October 2026 if you go live in November). Balances are calculated by transaction date, not submission date.
- Select all org units, all claim policies and all claim types.
- Export the report. It has one row per employee per claim type in their claim policy, with the Claim Policy, the limits per transaction, month and year, and the used amount and balance for the month and the year.
A blank limit means that claim type has no limit for that period. The used amounts are still filled in, even for claim types with no limit. Used per Month covers only the month you selected; Used per Year covers January up to that month.
Practice: Open the Expense Claim Balances practice file. It is Bayu Tech's export as of October 2026. Find the Claim Policy, Claims Type, Limit per Year and Used per Year columns.
Step 2: Check who is in each claim policy
Every employee starts in the Default policy and is only moved to another policy when someone assigns them. Check this first, because an employee in the wrong policy also has the wrong claim types and limits.
- Copy the Internal Id and Claim Policy columns to a new sheet and remove duplicates (Data > Remove duplicates). You now have one row per employee.
- Look up each employee's policy from the list you gave your IM, and compare the two. The report shows policy names in capitals, which doesn't affect the comparison.
Practice: Compare the policies in the practice export with the Policy list (sent to IM) tab of the submitted template.
Check your answer: One employee is different. BT024 is in the Default Policy in brioHR, but your list puts them in the Sales Policy. Compare with the Policy check tab of the answer key.
Step 3: Check the limits for each policy
- Copy the Claim Policy, Claims Type, Limit per Transaction, Limit per Month and Limit per Year columns to a new sheet and remove duplicates. You now have one row per policy, claim type and limit.
- Compare each row with the limits in your template.
- If the same policy and claim type appear on two rows, some employees have a different limit. Filter the export to find who. It may be an individual custom limit you asked for, or a mistake.
Practice: Compare the limits in the practice export with the Claim limits tab of the submitted template.
Check your answer: Medical in the Default Policy appears twice: 1,000 for 24 employees and 1,500 for one. Filtering shows the 1,500 belongs to BT009, and the template asks for no custom limits. Compare with the Limits check tab of the answer key.
Step 4: Total your claim history per employee and claim type
The report gives one used amount per employee and claim type, but your template has one row per claim. Total your template the same way.
- Open your Claim history that has limit tab.
- Insert a pivot table: Employee ID and Claim Type as rows, Total Amount as the sum. Show it in tabular form, with no subtotals.
- Add a Key column that joins the two, so each employee and claim type has one value to match on:
=A2&"|"&B2
In Step 6 you add the same key to the brioHR export.
Practice: Build the pivot table from the Claim history that has limit tab of the submitted template.
Check your answer: You should have 46 rows, one per employee and claim type. Compare with the History totals tab of the answer key.
Step 5: Compare the totals first
Compare your template with the brioHR export:
- The number of employee and claim type pairs with an amount: the rows of your pivot table, against the rows in the export where Used per Year is more than 0.
- The total for each claim type: the pivot table total, against the sum of Used per Year for that claim type.
If every total matches, you can usually stop here. If a total doesn't match, go to Step 6 to find which rows cause it.
Practice: Compare the totals for Mileage, Medical and Phone, and the overall total.
Check your answer: The totals don't match, so go on to Step 6.
|
Item |
Your template |
brioHR |
Difference |
|---|---|---|---|
|
Employee and claim type pairs with an amount |
46 |
40 |
-6 |
|
Mileage |
4,392.00 |
4,146.00 |
-246.00 |
|
Medical |
4,190.00 |
3,685.00 |
-505.00 |
|
Phone |
2,193.00 |
1,758.00 |
-435.00 |
|
All claim history |
11,355.00 |
9,589.00 |
-1,766.00 |
The overall gap is bigger than the three claim types added together. Your template has rows under a claim type that brioHR doesn't have. The full list is in the Totals check tab of the answer key.
Step 6: Match each employee and claim type, and find the differences
Start from your pivot table, because it holds everything you submitted. A row brioHR doesn't have then shows up as Missing.
- Put the pivot table and the brioHR export in one spreadsheet, for example on sheets named History totals and brioHR.
- On the brioHR sheet, add a Key column after the last column (column T in the practice file), joining Internal Id (A) and Claims Type (G):
=A2&"|"&G2
- On the History totals sheet, add a column that looks up Used per Year for each key (see the formulas below).
- Add a difference column: the brioHR value minus your template value.
- Filter to show only rows that are not 0. Check rows showing Missing first: brioHR has no row for that employee and claim type.
Formulas
To bring back Used per Year (column N) for the key in cell C2:
=IFERROR(INDEX(brioHR!N:N, MATCH(C2, brioHR!T:T, 0)), "Missing")
If your Excel has XLOOKUP, this does the same:
=XLOOKUP(C2, brioHR!T:T, brioHR!N:N, "Missing")
VLOOKUP can't be used here, because the key column is to the right of Used per Year.
Then the difference, where D2 is your template total and E2 is the brioHR value:
=IF(ISNUMBER(E2), E2-D2, "Missing")
Practice: Add the key to the practice export, then look up Used per Year for all 46 rows of your pivot table and work out the differences.
Check your answer: 7 rows are not OK. 4 show Missing: BT005, BT011 and BT017 for "Medical Claim", and BT024 for Phone. 3 show a difference: BT012 Medical (-180.00), and BT027 Medical (-325.00) and Mileage (-246.00). Compare with the Comparison tab of the answer key, and filter its Status column to anything other than OK.
Step 7: Look for patterns before fixing individual rows
Group the differences by claim type, employee and kind of difference. If several rows share one cause, report it once.
- The same claim type is Missing for several employees: the claim type name in your template doesn't match brioHR exactly, so those rows couldn't be imported.
- Every claim type is 0 for one employee: none of that employee's history was imported. Check their Employee ID.
- One claim type is Missing for one employee: that claim type isn't in their claim policy. Check the policy (Step 2).
- One row is off by an amount: a single figure is wrong. Compare that employee's claims one by one with your template.
Important: Don't change migrated claim history yourself. Send what you found to your IM, who will correct it.
Practice: Look at the 7 rows from Step 6 and the findings from Steps 2 and 3. Which share a cause?
Check your answer: You should find five issues.
- A claim type name (BT005, BT011, BT017): 4 rows were typed as "Medical Claim" instead of "Medical", so they weren't imported.
- An employee not imported (BT027): none of their history was migrated.
- A wrong policy (BT024): still in the Default Policy, which has no Phone claim type, so their Phone history had nowhere to go.
- A single wrong figure (BT012): a June Medical claim of 420.00 was imported as 240.00.
- An unexpected custom limit (BT009): a Medical yearly limit of 1,500 instead of 1,000.
Step 8: Send a discrepancy list to your IM
For every difference, however small, note the Employee ID, the claim type, what is different (policy, limit or used amount), the value in your template, the value in brioHR, and what you think caused it. Send the list to your IM.
Practice: Write your discrepancy list for Bayu Tech.
Check your answer: Compare it with the Discrepancy list tab of the answer key: 7 used-amount rows, 1 policy and 1 limit.
Common Issues/FAQ
Q: How many employees counts as a large headcount?
A: There is no fixed number. If checking each employee's policy and balances one by one would take too long, use this method.
Q: Why compare with my template instead of my old system?
A: Your template is exactly what your IM migrated, so any difference is a migration issue. If you also want to check your template against your old system, do that separately.
Q: Why is 'Used per Month' 0 for most employees?
A: Used per Month only covers the month you selected in Step 1. To check monthly limits, total only that month's rows of your claim history and compare them with Used per Month.
Q: Some claim types show a used amount but no limit. Do I need to check them?
A: Only if you put them in your claim history. Your template only needs history for claim types with a monthly or yearly limit.
Q: Employees have already started making claims in brioHR. Can I still use this method?
A: Yes, but their new claims also count in the report. Open, submitted, approved and reimbursed claims all count towards limits, and the report works by transaction date. Leave out those employees, or check their new claims in the Expense Claims report before you compare.
Q: What does #N/A or Missing mean in my lookup?
A: brioHR has no row for that employee and claim type. Either the claim type name doesn't match, the Employee ID doesn't match, or the claim type isn't in the employee's claim policy.
Q: The difference is very small. Do I need to report it?
A: Yes. Note every difference, however small, and include it in your discrepancy list for your IM.
Related Articles
- Accessing Claim Limit and Balance Report in brioHR
- How to Download an Expense Claims Report
- How Monthly Claims Limits Are Determined by Transaction Dates
- How to Utilize Available Claim Limits
- How to Create and Manage Claim Policies
- Import Employee Expense Claims in Bulk
Ownership
By: Aqilah