Compensation Module
The Compensation module covers salary bands, compensation review cycles, comp change requests, equity, and pay-equity analysis.
Overview
The Compensation module provides:
- Salary Bands. Pay ranges per job family, level and office location, with a Sparko global band catalog to subscribe from
- Merit Cycles. Company-wide compensation review cycles with recommendations and approval
- Comp Change Requests. One-off adjustments outside a cycle, with configurable multi-level approval
- Total Rewards. A rollup of base, bonus, and equity on the employee profile
- Pay Equity. Ethnicity pay-gap analysis and a UK Gender Pay Gap report
- Equity. Grants and vesting (see the known limitations below; this area has open bugs)
- Expenses. Receipts read for you, mileage and per diem, an approval route and reimbursement through payroll
- Client work and payroll. Clients, projects and assignments, hours approved by your client, advances and loans, and payroll runs that compute statutory items from per-country rules
Contractors and freelancers are left out of salary records, merit cycles, payroll and pay profiles.
Salary Bands
Navigate to Compensation > Salary Bands to view and manage salary bands. A band is a min, midpoint and max range, and it is identified by three things: the job family it belongs to, the level on that family's ladder, and the office location it is priced for. Bands are no longer tied to job titles: if you used the old band editor, the list of job titles that sat on a band is gone, and the map from a job title to a family now lives in Admin mode > Settings > Career > Structure, under Job titles.
Your admin chooses whether bands are priced per office location or company-wide, in Admin mode > Settings > Compensation > Structure. On a per-location company, a level with no band at someone's own location falls back to the company-wide band for that level.
Sparko global band catalog: rather than building bands from scratch, browse Sparko's market-benchmark catalog, subscribe to a band to track it, or replicate it as your own tenant-owned band you can then edit freely.
List, Ladder and Matrix
The view switch at the top right of the page has three views of the same bands: List (the default), Ladder and Matrix. Hover an icon to see its name.
List is one row per band, in five columns: Band, People, Midpoint, Range · positions and Health. The band's location sits under its name when the name does not already say it. Min and max show in the range bar and in the band's details.
| Band | People | Midpoint | Range · positions | Health |
|---|---|---|---|---|
| L3-Engineering Company-wide |
6 | $160K | ●●●│●● ● | 1 over max |
| L1-Finance Company-wide |
3 | $81K | ●│●● | On track |
| L5-Engineering Company-wide |
0 | $303K | No one in band | Empty |
The range bar. The shaded bar is the band, from min to max, with a tick at the band's own midpoint (not the middle of the bar when a band is lopsided). Each dot is one person you can see. The key to the dots sits behind the info icon next to Range · positions:
- Red: below the minimum or above the maximum. These sit outside the shaded bar, up to 20% past either end.
- Amber: between the minimum and the midpoint.
- Green: between the midpoint and the maximum.
The small triangle above the bar is the average position, and the caption under it says what share of the band that average covers, for example "avg 54% · 2 of 9 you can see". An average below 0% means the people you can see are, on average, paid under the minimum; above 100% means over the maximum.
Health reads the dots: On track, N below mid (most people under the midpoint), N below min, N over max, N out of range (both), Empty (nobody in the band), None you can see, or Pay not shown when you don't have permission to see pay.
Tabs and stats. The tabs above the table narrow it to All, Staffed, Empty or Needs attention (any band whose health is not On track or Empty). Each tab shows its count. Search narrows the table but not the counts; Filter narrows both. The chart button beside Create band opens five tiles: bands and employees mapped, the share of bands staffed, people below the midpoint, people out of range, and the median compa-ratio. No column on this table can be sorted.
More. The More menu beside the view switch holds Market Data (browse and subscribe to Sparko's band catalog), Manage bands (the band settings in Admin mode) and Generate with AI. You only see the entries you have permission for. Create band stays next to it.
Ladder shows each job family as a card, with one row per level of each career path, in level order, all on one salary axis so you can see how the levels step:
| Level | Band | Range | Vs level below | Health |
|---|---|---|---|---|
| L1 | L1-Engineering · $98K · $123K · $147K | ●●│● | Lowest rung | 2 below mid |
| L2 | L2-Engineering · $112K · $140K · $168K | ┄●│●●● | Overlaps L1 by 71% | On track |
| L5 | L5-Engineering · $245K · $303K · $360K | │ | Gap of $11K from L4 | Empty |
| M2 | No band at M2 ┄┄┄┄┄┄┄┄ + Add band |
- Vs level below compares each band with the level under it. Overlap is measured over the lower band's range. It is a plain badge, and turns amber only when the overlap is above 60% (a dashed box on the bar marks it) or when there is a gap between the two bands.
- A level with no band reads No band at M2. If you can create bands, Add band opens the create form on that level and location.
- Location picks which office's bands the ladder shows (Company-wide by default) and Currency converts every figure into one currency. A band with no FX rate for that currency shows No rate and is skipped when comparing the next level.
- Filter narrows the ladder by job family or track. Click a family's heading to fold it away; the first three start open.
Matrix is the grid. One row per job family and level, one column per active office location, plus a Company-wide column when anything is priced there. Each cell shows that band's midpoint, so you can read a whole family's ladder across every location at once.
| Austin, United States | New York, United States | Company-wide | |
|---|---|---|---|
| Customer Success IC · L1 |
$63K | $76K | $64K |
| Customer Success IC · L2 |
$87K | $105K | $89K |
| Customer Success IC · L3 |
$111K | $134K | $113K |
A cell with nothing priced in it reads Not priced rather than sitting blank, because an unpriced rung with people on it is exactly what this view is for. When you can create bands, that cell also carries Add band, which opens the create form already set to that family, level and location. Below the grid, a line counts the levels that have people and no band at all.
Currency converts every figure into one currency so the grid is comparable across countries. The choices are Local (each band in its own currency, the default) plus your base currency and every currency your locations use. A band whose currency has no rate in your company's FX table shows a No rate badge instead of a converted figure, rather than a number Sparko cannot stand behind. Your admin adds rates in Admin mode > Settings > Compensation > Structure.
Anyone standing on a level that has been retired has no row in the grid, so a note under it says how many people that is and lists the level each one is on.
Opening a band
Click a band in the List or the Ladder to open its details on the right.
- The top shows the level, the band name, its health, and its family, location, currency and headcount. View employees and Edit band sit underneath, with a badge saying how the midpoint compares with market data. Archive is in the More band actions menu (the three dots) beside the badge.
- One line of figures: min, mid, max and median compa. If you can see both the whole company and your own team, a switch above it chooses Everyone or My team.
- Where people sit: the band's range bar and how many people fall in each zone: below min, min to mid, mid to max, above max.
- A market suggestion, when the market midpoint differs from the band's. Accept shifts the band (see Market refresh below).
- Employees: each person's salary, position in the band and compa-ratio, ordered by position.
Pay in another currency. If someone is paid in a currency different from the band's, Sparko converts their salary at your company's stored FX rate before working out their position and compa-ratio, and marks the compa-ratio with an FX badge. If there is no rate for their currency, their position and compa-ratio are left blank and the row reads No rate, rather than comparing two currencies. Elsewhere in Compensation, a compa-ratio across currencies is still left blank for now.
Who sees positions. The dots, the health badges, the averages and each person's position all come from pay, so they follow the same rule as salaries. You see them only with permission to see pay: company-wide compensation access, or full pay for your team. Even then, you see only the people you are allowed to see, and the caption says when that is fewer than the whole band. Without that permission a band still shows its range and headcount, but no dots, no Needs attention tab, stats that say pay is not shown, and in the details, names without salaries, positions or compa-ratios. When pay is hidden for anyone, the employee list keeps its usual order rather than being ordered by position.
You only see the people you already have permission to see. Anyone withheld is counted at the bottom rather than listed, so the headcount stays honest without naming them.
Archiving a band
Archive, in the More band actions menu of the band's details, retires a band without destroying it. The band stops appearing anywhere a band can be chosen (the Bands list, job creation, AI band suggestions) while compensation records that already point at it keep resolving and still show the range they were set against.
Before you confirm, the archive dialog shows how many people are mapped to the band and how many open offers are priced on it. Two things block an archive until they are resolved:
- Open offers on a job posting that uses the band (draft, awaiting approval, approved or sent). Close the offers or move the job to another band first.
- An active merit cycle that includes anyone on the band. Archive once the cycle is completed.
People on the band do not block it. Instead the dialog asks you to pick a replacement band. Everyone moves to it and the band is archived in one step, so the band is never left half-emptied. Their career path and level move with the replacement band. If you don't pick a replacement, Sparko refuses and tells you how many people are still on the band.
You can only archive a band when you can see everyone on it. If some occupants are outside your scope, Sparko refuses rather than let you confirm a change whose full effect you were not shown. Moving people also requires permission to edit employee compensation, on top of permission to edit bands.
An archived band cannot be reopened, but it holds nothing back. Its name, and its combination of career path, level and location, are free for a new band straight away. Only a band that is still live can block a new one.
Market refresh
If Sparko has a market read for the band, the drawer says how far the band's midpoint sits from it. Accept shifts min, midpoint and max by the same ratio, so the band keeps its shape. The range widens in absolute terms as it moves up, which is what scaling a band means.
The market figure comes from the band's own stored market data when it has some, and from the Sparko catalog when it doesn't. If neither exists, or the midpoint already matches the market to within 0.1%, no suggestion appears. Every accepted refresh is written to the compensation audit log with the old and new range and your reason.
Generate with AI
Generate with AI on the Bands page opens a full-page review surface. It has two modes, and it tells you up front how many levels each one would price:
- Build missing. Levels that have people but no band yet. The cold-start case.
- Refresh existing. Levels that already have a band, re-read against what you actually pay today.
Sparko proposes a min, midpoint and max per level, with a confidence score and a one-line reason. Refresh rows also show the current range and the percentage change to the midpoint, so you can see what would move.
Where the numbers come from. Your own data only: the career path and level, how many people sit in it, what they are currently paid, their locations, and for a refresh the existing band and any benchmark figures already stored on it. Sparko does not invent market figures and does not name a benchmark provider it does not have. If a proposal quotes a source, that source came off your own band record. Ranges that come back out of order, negative, or wildly away from what the level is actually paid are dropped before you see them.
Nothing is written until you apply. Review every row, edit any number in place, select the ones you want, and apply. Refreshing overwrites a band people are already paid against, so that is a separate explicit confirmation.
Levels with no one assigned to them cannot be priced, so if your career-path assignments are incomplete Sparko tells you to fix that first. Only one generation can run per company at a time.
Needs compensation.bands.create and the Compensation suite.
Opening a new location from Job Postings
When a location is in use but has no salary band, the Needs your attention card on Recruiting > Job Postings offers Generate band on that row. Sparko drafts the location's bands in place, from the same level's band at another location adjusted by the two locations' geo multipliers, and from what people already at that location are paid. The proposal shows both signals per row so you can see where each range came from.
If a level has no band anywhere and nobody at that location has a salary on file, there is nothing to derive from. Sparko says so and points you at manual entry rather than estimating: there is no market-survey feed behind this.
Nothing is written until you confirm, existing bands for that location are left
untouched, and Generate all bands drafts every queued location at once with
a single confirmation at the end. Same gate: compensation.bands.create and the
Compensation suite.
Creating a band from a job's pay range
A band can also be created from a job's pay range on Create job, and from the level form. When Suggest salary band finds no band for the level, a card under the salary range row says "No salary band for {level} yet" with the figures you entered. Press Create band to save them as the level's band, or Not now. Saving a band this way needs the Business plan.
Duplicating a band
Duplicate carries the band's ranges into the Create band form. A band is identified by its career path, level and location, so the copy has to land on a different one. Pick where it goes and save.
Job families
The Job families group on the Bands page holds the list of families your bands can use. A band picks its family from this list rather than having one typed in, so the same family can't end up spelled three ways.
The same families also drive career ladders, so the fuller controls, including merging two families and splitting titles out into a new one, live in Admin mode > Settings > Career > Structure. What you can do here is the band-side subset.
- Add family creates a new one.
- Rename changes it everywhere at once. Every band using the old name moves with it.
- Retire takes a family out of the picker without touching the bands already filed under it. Restore it any time.
- Delete is offered only for a family no band uses.
Each row shows how many bands use that family, and Filter bands jumps to them.
Merit Cycles
Navigate to Compensation > Cycles to run a company-wide compensation review.
- Create a cycle and set its budget envelope.
- Assign employees to salary bands if they aren't already.
- Managers submit merit recommendations for their reports.
- Recommendations are approved or rejected against the cycle.
- Approved changes apply to employee compensation.
A budget tab on the cycle shows spend as recommendations come in; per-department budget allocation surfaces only once recommendations have been aggregated. There isn't yet a standalone budget-planning tool you can build an allocation in ahead of a cycle.
Merit Review Worksheet
Managers work a cycle on the merit review worksheet, a grid of their team with one row per report, at /compensation/reviews/{cycleId}/worksheet. Each row shows the person's current salary, where that salary sits in its band (below, in-band, above midpoint, or above band), their latest review rating from the cycle, and an input for a merit percent or flat amount. As you type, Sparko fills in the new salary and the budget burn bar updates against the envelope HR set for the cycle.
- The worksheet needs the raw-pay grant. Every row on it is actual salary, and the band placement beside it reconstructs that salary from the midpoint, so the grid is only open to
compensation.employee.view_allor the admin-opt-incompensation.employee.view_team_full. A manager holding onlycompensation.employee.view_teambrowses the compensation roster with pay masked and does not see the worksheet at all; an admin grantsview_team_fullto the managers who run merit. (Masking the fields instead would leave the grid unable to do the one thing it is for.) - A manager sees only their own reporting subtree. The worksheet rejects any edit to someone outside it.
- Editing the worksheet stages recommendations only. It writes to the cycle's recommendation list, never to live pay. Actual salary changes still go through cycle approval and apply afterward.
- HR (with
compensation.merit.create) sets and adjusts the cycle budget envelope. Managers propose against it but cannot change it.
Guideline chip. Next to each row's rating, Sparko shows the standard merit percent for that rating: 6.0% for a 5, 4.0% for a 4, 3.0% for a 3, 1.0% for a 2, and 0.0% for a 1. Click the chip to drop that number straight into the row's merit input. It is a starting point you can overwrite, not a rule: the chip fills the field and nothing else, and a row with no rating shows no chip.
AI suggestion. On a Business plan, each row also carries a Suggest button, and the header carries Suggest with AI for the whole team. Sparko reads the person's band placement, rating, prior raises and what is left of the cycle budget, then proposes a percent with one line of reasoning. The suggestion sits beside your number as a chip: click it to fill the merit input, or leave it. It never changes a percent you already staged, and it never touches live pay. A team run works through the rows in the background, so keep the page open; the chips all appear once the run finishes.
Bulk edit by CSV. On a large team, click Export to download the current rows, edit the merit percent column in a spreadsheet, then upload it back. Before you commit, Sparko shows a dry-run diff: which rows it would add, update, leave unchanged, or skip (already-approved rows), with a warning on any new salary that lands over the band max. Apply writes the changes to staging in one pass. Rows outside your scope or with no compensation on file are reported as errors rather than applied.
Outcome Letters
Once a raise is approved and applied, generate the employee's compensation outcome letter from the worksheet. Sparko fills a letter template with the person's outcome (new salary, effective date, and the like) and lists the generated letters for the cycle so you can review before sending.
- Templates are managed by HR (
compensation.merit.create). The merge fields a template can use are validated against an allowlist, so a template cannot pull in fields it should not. - Generating and sending letters is scoped to your team the same way the worksheet is. Generate one letter at a time from an approved change, or generate for the whole cycle to draft a letter for every approved raise in your scope at once.
- A letter can be AI-assisted (Sparko drafts the wording) or template-only. Send delivers it to the employee; once delivery succeeds the letter is frozen as Sent, a permanent record.
- If delivery does not go through, the letter shows No email on file (the employee has no address to send to) or Send failed (a delivery problem). Either way the button becomes Retry so you can send again once it's fixed.
Editing letter templates
Open Letter templates from the Outcome letters section of the merit worksheet. The page lists every active template on the left and opens the selected one in an editor on the right.
Each template has four parts:
- Template name for your own reference in the list.
- Applies to reason ties the template to one change reason (promotion, market adjustment, retention, and so on). Leave it on Every reason to make it the fallback. Exactly one template is the default at a time, so setting a new one clears the previous.
- Subject is the email subject line.
- Body is the letter itself.
Subject and body can both contain merge fields written as {{field_name}}, which are replaced with the employee's real figures when a letter is generated. Thirteen fields are available:
| Field | Fills in with |
|---|---|
{{employee_name}} |
The employee receiving the letter |
{{manager_name}} |
Their manager |
{{company_name}} |
Your company name |
{{job_title}} |
Their job title |
{{cycle_name}} |
The merit cycle the change belongs to |
{{reason}} |
The change reason in words, for example "merit increase" |
{{effective_date}} |
When the new salary takes effect |
{{currency}} |
The currency code |
{{current_salary}} |
Salary before the change |
{{new_salary}} |
Salary after the change |
{{increase_amount}} |
The change in money |
{{increase_percent}} |
The change as a percentage |
{{band_name}} |
Their salary band |
Click any field in the toolbar under the body to insert it at your cursor. Fields already used in the template are highlighted. If you type a field name that is not on the list, Sparko says so and blocks saving, so a misspelled field can never reach a real letter.
Preview letter opens the letter as an employee would read it, with merge fields filled in. It renders whatever is in the form at that moment, including edits you have not saved yet, so you can check your wording before committing. The figures shown are sample values for illustration, not any real person's pay. Close the preview with Esc or by clicking outside it.
Saving a template only affects letters generated from that point on. Letters already generated keep the wording they were created with, so an edit today never rewrites a letter someone received last week.
Comp Change Requests
For adjustments outside a merit cycle (e.g. a promotion, a market adjustment), submit a Comp Change Request.
- Requests move through submit → advance → approve/reject → apply (or can be withdrawn before a decision).
- The approval chain is frozen as a snapshot at submission time, so a later reporting-line change doesn't retroactively change who was supposed to approve it.
- Configurable approval policy: your admin sets 1–5 approval levels, whether to use the full reporting chain, whether VP-and-above changes require CEO/CFO sign-off, and designated HR/Finance approvers.
Compensation Anomaly Inbox
Sparko scores every active employee nightly against four pay-anomaly signals (low compa-ratio, level mismatch, peer gap, and long tenure without a comp change; a fifth, in-demand-skills, is coming) and surfaces the ones that need attention as a "Needs your attention" inbox. It appears in two places:
- Compensation > Dashboard. Company-wide for HR admins, your reporting subtree if you're a manager.
- My Team > Compensation tab. Pre-filtered to your team. When anything needs a look, a pill on the tab row reads "3 need a look" and opens a Need a look drawer with each signal. In the drawer, Take action records an acknowledgement, Open opens the person's compensation, and Act (Business and above, with permission) hands the signal to Sparko to act on.
The tab itself is a roster of your reports in five columns: Employee, Band, Compa, Salary (only when you have full pay access for your team) and Signals. Click a row to open the person's compensation. Propose appears at the end of a row when you hover it, if you can submit comp change requests. When a comp cycle is collecting recommendations, the page subtitle says so and links to Open cycle. Your pending proposals are listed under Your active proposals, each with View.
Each anomaly shows the employee, the signal, and a short factual reason (for example the compa-ratio against the band midpoint). Take action offers three acknowledgements, all recorded with your name, timestamp, and optional note in the compensation audit trail:
- Defer until year-end review. Hidden until December 31, when it re-surfaces for year-end review with its latest nightly scoring.
- Remind me later. Snoozed for 30 days, then re-surfaces with its latest nightly scoring.
- Dismiss. Hides it from the inbox permanently; the nightly engine won't re-open a dismissed signal.
The open-anomalies count on the dashboard stat tile matches what's in your inbox at your visibility scope.
Pay Transparency
Your admin sets a company-wide compensation transparency tier controlling what employees can see about their own pay: off, band name/level only, numeric range (min/mid/max), or full position-in-range. This is enforced on the employee's own compensation view.
Posting jurisdictions on a job
Several places require a job advert to publish its salary range. Sparko applies that rule automatically from the jurisdictions you tag on the posting.
The control lives on Recruiting › Jobs › Create job and on the job's Edit page, in both cases directly below the Salary band fields. Posting jurisdictions is a multi-select (hold Command or Ctrl to pick several) grouped into three lists:
- United States · salary range required by law: California, Colorado, New York, Washington
- European Union · salary range required by law: the 27 member states
- United States · other: every remaining state and DC
As soon as you pick at least one, a banner appears under the field:
- Pick a jurisdiction from either "required by law" group and the banner shows the exact range candidates will see, using the salary min and max you entered. If you have not entered both figures yet, it says so and names the jurisdictions forcing the disclosure.
- Pick only jurisdictions from the "other" group and the banner says the range is not legally forced, so whether it appears follows your company pay transparency setting.
Tagging a covered jurisdiction publishes the range whatever the company setting says. That is the law, not a Sparko preference, so the setting cannot switch it off.
Changing the selection on the Edit page and saving applies the new rule to the live posting immediately. Clearing every jurisdiction removes the tags, and the range then follows your company pay transparency setting alone.
Pay information requests (EU)
People paid by an entity in an EU country can ask for their own pay level and the average pay of women and men doing the same work. This works on every plan.
Asking (employees)
Open your profile, then the Compensation tab. On the Pay information line, press Open. The drawer has one button, Ask about my pay. You can add a question, up to 2,000 characters, or leave it empty for the standard information. Only HR people who handle these requests can read it.
The card lists your requests with their status and the date HR must reply by. You can Withdraw an open request. When HR sends the reply, the card shows Open the reply, and the letter is also in your documents.
If you are paid by an entity outside the EU, the card says so in one line and there is nothing to ask.
Replying (HR)
Requests land in Compensation › Pay information. You need the respond permission for pay information and the DEI personal data permission. Each new request also sends you a notification that opens it.
- The tabs split Open, Sent and Withdrawn. Open requests are sorted by the reply date, and each row shows how many days are left or how late it is.
- Log a request records one that came by mail or through a workers' representative. Pick the person, the date it arrived (today or within the last two months) and how it arrived. The reply is due 2 months after that date.
- Send yearly notice tells every worker of one EU entity that they may ask. It needs the pay transparency manage permission. The modal shows when it was last sent.
Click a row to open the request:
Small group, check Aisling asked about pay Finance and People Analysts · Reply by 24 Nov 2026 REPLY From payroll on 10 Oct 2026, not editable Your pay€61,600 Women, average€60,050 Men, average not shown: fewer than 3 people. ☐ One group is under 3 people. I have read it. Preview PDFDraft with AI · Edit · Send- What they asked shows the question.
- Reply shows the letter with the figures table in place. Sparko computes the table from payroll, or from compensation records where Sparko does not run the entity's payroll. Nobody can type over it.
- Draft with AI writes the words of the letter around the table. Sparko AI never sees a pay figure or a name. Edit lets you change the words; keep the
{{FIGURES}}line once, because that is where the table goes. - Before you send must be clear before Send works. The figures must be under 7 days old (use Refresh figures), and the person needs a role level, because the comparison group comes from it.
- Smallest group rule. When the women or the men in the person's category are fewer than the smallest group size (3 unless your admin raised it), their average is left out and the letter says why and how to ask through the workers' representative or the equality body. Tick the box to confirm you have read it.
- Preview PDF shows the letter as it will be filed. Send files the PDF in the person's documents, notifies them and closes the request.
- You cannot handle your own request unless you are the only person who can.
Total Rewards
Each employee's profile includes a Total Rewards view that rolls base salary, bonus, and equity value into one picture. Open the employee's Compensation tab to see it.
The tab is calm. It leads with Current compensation: the base salary, how often it is paid, the date it took effect, and the band card beside it. Under that, each topic is one line with a button that opens a drawer:
- Total rewards. The yearly total and what it is made of. Open shows base, bonus and equity line by line. Print statement in that drawer opens a clean, printable statement covering cash and equity, which the employee or HR can print or save as a PDF from the browser.
- Equity. Units, how many have vested and the number of grants. Shown only when the Equity module is on and there are grants.
- History. How many pay changes there have been and the last one. Open lists each change with its reason.
- Bonus payouts. Payouts paid and the target. Shown when there are payouts or a target.
- Expense claims. The count and the latest claim. View opens the claims, and Open in Expenses goes to the full list.
- Pay setup. How the person is paid in each run. Open holds the Pay basis, Statutory, Deductions and Pay components cards. A No pay rate badge shows when an hours-based worker has no rate.
- Staffing. On your own profile, your assignments and advances.
- Pay information. On your own profile, your pay-information requests (see below).
On your own profile, Details at the bottom holds your Access history. Lines you cannot see, or that have nothing to show, are left out.
Your band on the profile
The same Compensation tab carries a band card. It leads with the band it resolved, written out in full so there is no guessing which band you are looking at: the job family, the track, the level, and the location, or Company-wide when the band is not priced per location.
Leadership · Leadership · CxO · San Francisco, United States Min $266K Max $540K Mid $403K31% through the range.
Under it is the range, with Min and Max at the ends, a filled marker where the person sits, and a Mid tick where the midpoint actually falls. The midpoint is rarely the middle of the bar, because a band's midpoint is not the average of its ends.
The sentence below the bar says how far through the range they are. At the edges it reads Above the range or Below the range rather than a percentage, and the same words appear as a badge next to the band name, because 100% of a range and beyond the top of it are different facts.
Two notes appear when the band had to be resolved indirectly. "This band is priced for {location}" means the band being used belongs to another office. "No band at this location, so the company-wide range applies" means the fallback was used. When there is no band at all for that level, the card says so and shows nothing else. It never estimates a range or a position.
You always see your own card, including your position. Managers see their reporting chain's and HR sees everyone's; the range is readable with band access, but reading someone else's position in it needs company-wide compensation access, and without it the card draws the range and says the position is not shown. Someone with no salary on file has no position either, for the same honest reason. Salary bands are a Business feature, so the card is not shown on Core or Growth.
From a people list
Clicking a person in Compensation > People, or in a manager's team pane, opens their compensation drawer without leaving the list. It leads with the same Total Rewards picture (base salary, bonus target, equity, and the total target) then their position in the band, bonus detail, equity grants, and the history of changes.
Print / PDF at the bottom of the drawer prints the drawer itself, so you can hand someone their summary without opening their full profile. View full profile goes to the profile if you need more. Depending on your permissions you may also see Propose change and Edit comp.
Figures you are not cleared to see stay masked in the drawer, exactly as they are elsewhere.
Compensation access history
Compensation figures are among the most sensitive data in Sparko, so every time someone decrypts an employee's pay values Sparko records who looked, at which fields, and when. This read log surfaces in two places:
- For the employee: Access history, under Details at the bottom of your own profile's Compensation tab, shows a plain-language log of who viewed your compensation data (for example "Compensation details viewed," "Bank details viewed," or "Payroll export"), with the date. If no one has viewed it recently, it says so.
- For HR: anyone with company-wide compensation access can pull the same access log for a given employee. This supports data-access requests (GDPR Article 15) and periodic access reviews.
This log is a record of who read pay data, not who changed it. Edits to compensation are tracked separately in the compensation audit trail.
Pay Equity
Open Pay Equity from the Compensation Hub, or from the "More people analytics" cards on People Analytics (the page lives at /analytics/pay-equity). It gives you:
- Ethnicity pay gap. Median pay comparison across ethnicity groups.
- UK Gender Pay Gap report. Formatted for the UK's statutory reporting fields (median and mean hourly pay gap, quartile pay bands).
Known limitation: the UK report's quartile pay-band breakdown isn't fully implemented yet (it currently returns placeholder values), and there's no bonus-gap metric. Don't submit this as a finished statutory UK GPG filing without checking the quartile numbers by hand.
Equity
Navigate to Compensation > Equity to view and grant equity.
- Portfolio stats. Employees with equity, outstanding fair value, percent vested, and grants made this year, all computed from your active grants.
- Active grants table. Each grant's type (ISO/NSO/RSU and legacy option types), shares, fair value, vesting progress, and schedule. Click a row for the full grant summary including the tranche-by-tranche vesting schedule.
- Vesting milestones rail. Upcoming vest events over the next 180 days, with a 30-day value and headcount summary, derived from each grant's vesting schedule and fair market value.
- Grant equity. Pick the employee, grant type, shares, and per-share fair value; choose one of the vesting templates your admin manages under Admin Settings (with an optional cliff override) and a vesting start date.
Known limitation: there's no way to cancel an equity grant from the UI yet. Ask your Sparko contact if you need a grant cancelled.
Payroll Runs (pay + bank export, payslips)
A Payroll Run is a per-period run of each employee's pay plus their bank payment instructions that you hand to your own bank or accountant, and a payslip that itemizes earnings and deductions. For workers with a work country that has payroll rules, the run also computes statutory contributions, tax and overtime (see Statutory contributions and payroll rules below). Filing the returns themselves stays with you or your accountant; Payroll compliance below lists them with their due dates and builds the files.
Find it under Payroll › Payroll Runs (HR Admin only). Old links to Compensation › Payroll Run still open it.
- Gross pay = base pay for the period ÷ pay frequency + recurring pay components (allowances, pension, gratuity, set per employee under Pay setup on their Compensation tab) + any bonuses paid in the period.
- The page header shows the run's period, pay date, headcount and a Draft or Finalized badge. Runs opens a drawer listing every run, newest period first, each with its entity, status and an Off-cycle badge where it applies. Pick one to open it, or press New run. Run details opens a drawer with the paying entity, pay date, gross, net, employer cost, payslips and files.
- Recompute and Finalize sit in the header while a run is a draft.
- Each run reviews the changes since last period: joiners, leavers and compensation changes show as context in the Needs a look drawer, and each person's line shows their Change and bank details.
- A tab strip narrows the table to All, Needs a look or Ready, with counts. Search and Filter (paying entity, change, currency) work on top of it.
- When anything needs a second look, one line above the table reads "3 Needs a look" with a Review button. The number is how many people need a look, the same count as the Needs a look tab. A Blocked or Needs a look badge on a person's row marks who it applies to. Review opens the Needs a look drawer, which lists every compliance flag and every line concern: zero gross, a negative net, an unrecognized pay frequency, an active employee with no compensation row, and, where the person keeps timesheets, hours well above their own usual week. Hours well below their usual week show as a Missing hours warning with its own Acknowledge, and only for workers paid by the hour: a fixed-salary worker's pay does not depend on the hours they log. Each concern names the people it applies to, and you can click a name to open their line. Joiners, leavers, comp changes, Overtime approved (an approved overtime entry explains the extra hours) and a light week covered by approved leave appear on an "Also on this run" line as context. Context never blocks and never changes what anyone is paid. "Their own usual week" is their mean weekly hours across their approved timesheets from the last eight weeks, normalized so a fortnightly or monthly period compares fairly against a week. Someone with less than two weeks of approved history is left unflagged rather than measured against a guess.
- In the Needs a look drawer, a Blocks finalize flag needs a fix, or Override with reason by someone with the Override compliance flags permission. A Warning is acknowledged there with Acknowledge. Undo takes either back. The line at the foot of the drawer splits the open count at the top into what blocks, what to acknowledge and what to review, so the parts always add up to it. Run checks again re-runs the checks, and Done closes the drawer. Each flag has an Open rule link to the rule it cites.
- The table has five columns: Employee, Wage gross, Reimbursements (only when the run has any), Deductions and Net pay, with a Run total row at the bottom. Click a person to open their line.
- In Run details, vs previous run is a fold that shows the gross and net of your last finalized run for the same paying entity and pay group (or, without a pay group, the same pay frequency) and the percentage change against the run you are reviewing. When that run paid a different number of people, the fold says so, for example "12 people then, 3 people now". A first run has nothing to compare to, so the fold is absent.
- Bank details live on each employee's profile (Personal Info). Employees enter their own; an HR Admin verifies them. A run only pays verified accounts.
- Paying entities (the legal employer that pays each employee) are managed under Workspace settings > Entities, alongside each entity's authorised signatory and registered address. Each run groups pay and bank files per entity and currency. How many you can create depends on your plan: 1 on Core, 5 on Growth, 20 on Business, unlimited on Custom.
- Pay date is an optional field on a draft run. Set it in Run details before you finalize.
- After you finalize, Download files in Run details offers CSV, SG GIRO, ACH/NACHA, SEPA (pain.001) or, for a UAE entity, UAE WPS. Finalizing a run freezes it so re-downloads are identical.
Deductions
An employee's Compensation tab has a Deductions card alongside pay components, under the Pay setup line. HR enters deductions there, for example a loan repayment or a benefits contribution. These are amounts your company tells Sparko to enter, and they flow into that person's next payslip as line items. Statutory amounts are not entered here: the run computes them from your payroll rules.
Payslips
Finalizing a run files a Payslip PDF for each person in it. Payslips appear in the employee's own Documents tab on their profile shortly after processing, so they keep a durable record of what they were paid for the period. If any payslip cannot be generated, whoever finalized the run is notified.
- It's letterheaded with the paying entity's legal name and registration number.
- It lists each item that made up the period's gross pay (base, allowances, bonuses, one-offs), any deductions entered for that employee, the pay date if one was set, and the last 4 digits of the account it was paid to.
- Net pay on the payslip is gross minus the period's deductions. When the run computed statutory amounts, the payslip says they come from your company's payroll rules and were reviewed by HR. Employer contributions are listed apart, as paid by your employer and not deducted from pay. The payslip says "Not a statutory payslip format." on its face.
- The employee can see and download their own payslip. Managers cannot see their reports' payslips.
- Payslips are generated in the background just after the run is finalized, so they appear a moment later.
- If payslips could not be queued, a banner on the run offers Retry payslips. In Run details, Generate payslips or Regenerate queues them again.
- Payslips can't be deleted from the Documents tab. Re-queueing generation for the run replaces them instead.
- Older Earnings Statements (gross pay only, no deductions or pay date) stay in the Documents tab as they were filed. The next time that run's generation is re-queued, its statement upgrades to a full payslip in place.
Payroll runs for one entity
If your role covers one entity, you create and see payroll runs for that entity only. The New payroll run form lists only your entities, and All entities there means all of yours. Ticking more than one entity creates one run per entity.
Payroll compliance
Find it under Payroll › Compliance, with its schedule and watched sources under Workspace settings › Compensation › Compliance. HR Admins and Super Admins see it.
Compliance-assisted, not a guarantee. Sparko checks your rules against the official sources they cite and proposes changes. Nothing changes until someone confirms it. The note sits behind the info icon next to the page subtitle.
The subtitle counts what is open, for example "8 markets · 6 proposals · 6 blocking flags". Two tabs sit under it: Watch and Filings. When filings are due the second tab reads Filings · 3 due. Filter narrows by market and by type (Blocking, Proposal, Warning), and search looks across markets, rules and flags. Fetch all now checks every watched source at once, if you can manage compliance.
Watch has two views, switched with the icons at the top right: Countries (the default) and List. Countries shows one card per market. The card header gives the market, its entity, currency and headcount, and a badge that reads Clear or "7 to do". The card then lists up to three rows, most urgent first, each with one button:
- Blocking flags on the next run, with Review.
- Could not fetch a source, with Sources.
- Warnings to acknowledge, with Review.
- A proposed rule change, with Confirm.
- The next filing, with Download (or Generate until it is ready).
When a card has more than three rows it says "+2 more". With nothing to decide it reads "Nothing to decide". Open India at the foot of the card opens the market. List shows the same items in one table with Type, Item, Market, Applies to and Status.
The market drawer is flat. It has Next run (that run's flags, with Acknowledge and Override with reason, and an Open run link), Proposals (each with Confirm, Edit before confirm and Dismiss) and a Details fold. Details holds the market's filings and year-end forms, and the watched sources with Manage sources.
IN India Acme India · INR · 14 people 7 to do 3 blocking flags on the next runMinimum wage · Missing statutory id Review Overtime cap under the OSH rulesNo number yet to 125 hours a quarter ConfirmRule updates from official sources
Every rule in Payroll rules cites the official page it came from. Sparko fetches each of those pages on your schedule (every night at 04:00 by default, in your company's time zone) and compares it with the text it stored last time.
- When a page changes, Sparko reads it and proposes the new value with the sentence that states it and a link to the page. A value is only proposed when that sentence contains it. Visitor counters, "last updated" stamps and spacing or punctuation changes don't count as a change.
- If the page states a new value but not the date it applies from, nothing is proposed. The source drawer names the rule so you can check the page and update the rule by hand.
- Confirm saves the value as your own version of the rule, from the date the source gives, tagged Verified by you. A rule a finalized run already used is never edited: your version starts from the new date.
- Edit before confirm lets you correct the value or the date first. Dismiss keeps the page on the watch list. Undo takes a confirm or a dismiss back while no finalized run has used it.
- A page that can't be fetched shows Could not fetch, and the text stored before stays in use.
- If AI is off for your workspace, the change still shows, but no update is proposed.
Compliance checks on every run
A draft run checks minimum wage, overtime caps, deduction caps, signed consent for loan instalments, the pay-day and final-settlement deadlines, missing statutory ids, rules still tagged To check, and lapsed work permits. Each flag names the rule and its source.
Flags show in the Needs a look drawer on the run, and in the market's drawer under Payroll › Compliance.
- A Blocks finalize flag needs a fix, or Override with reason by someone with the Override compliance flags permission.
- A Warning is acknowledged with Acknowledge, or with the checkbox when you finalize.
- When a line changes after you acknowledged or overrode a flag, the flag opens again.
- The deduction cap counts every deduction on the line, statutory contributions such as CPF included. Deductions above the cap block finalize. Deductions of exactly the cap are a warning to acknowledge, so you see when a loan instalment or advance recovery has used the whole of it.
Filings
The Filings tab lists, under each market, its statutory filings and year-end forms by due date: EPF ECR, ESI and Form 16 in India; the CPF file and IR8A in Singapore; KWSP Form A and the EA form in Malaysia; SSS R3, PhilHealth RF-1 and Pag-IBIG in the Philippines; Single Touch Payroll in Australia; RTI FPS and P60 in the UK; the WPS salary file in the UAE; and a withholding slip preview in Japan. The Japan preview adds up the year's finalized pay, social insurance and tax withheld per worker so you can check them before the year-end adjustment; it is marked "Preview, not a filing" and is not the slip you file.
- The table has Form, Period, Due, Status and an action column. A filing due within seven days shows a badge such as "3 days". Channels at the top opens a drawer of submission channels, one per registration, each with its status.
- Download builds a CSV with the form's columns from the finalized run, for you to upload to the authority. Columns Sparko does not hold are left blank.
- The UAE WPS file comes in its bank format on Business and above.
- Electronic submission to CPF shows Not connected until it is live.
Clients and projects
If you place workers at client sites, add each client and its projects under Compensation > Clients.
- Add client takes the client's name, entity and billing currency.
- Add project sets the project's client, its pay cycle (for example the 21st to the 20th), the PO or contract reference, and who approves hours: the client's contact by email, or one of your supervisors.
- A project can link to a contract in Legal. Only people who can see that contract see its title.
Assignments and rates
An assignment puts a worker on a client project. Find them under Compensation > Assignments. A worker can hold several assignments at once, each with its own dates, schedule, bill rate and pay rate.
- Change rate adds a new rate from the date you pick. Earlier rates stay in the history with their reason.
- The pay rate shows as Hidden to anyone who may not see that worker's pay.
- End assignment stops it from a date.
Pay basis and pay groups
Each worker's Compensation tab has a Pay setup line. Open shows a Pay basis card and a Statutory card, with Deductions and Pay components below them.
- Fixed salary: the worker is paid their salary. They still log hours, for billing and overtime.
- Hours x rate: the worker is paid their approved hours at their pay rate.
The Pay basis card also holds the worker's pay group and region. The Statutory card holds their tax regime and the statutory ids their work country uses. Pay groups are set in Compensation settings, on the Payroll tab.
Hours in payroll and the cut-off
A payroll run pays every approved hour dated up to its pay group's cut-off and not paid before.
- A client period that spans two pay months is split by date.
- Hours approved after the cut-off are paid in the next run, as arrears.
- An hour is never paid twice and never lost.
- Recompute on a draft run picks up hours approved since the run was created and reprices every line. It clears the adjustments on the lines it changes, and says how many before you confirm.
Statutory contributions and payroll rules
Sparko computes statutory contributions, tax and overtime from your payroll rules for each worker's work country. India, the UAE, Singapore, Malaysia, Indonesia, the Philippines, Australia, Japan and Vietnam have seeded rules, and so do the contributions of the UK, the US, Germany, Hong Kong, Canada, Saudi Arabia and Qatar.
Japan: health insurance (with long-term care from age 40 to 64) at the worker's prefecture rate (set their region to JP-01 to JP-47; Tokyo's rate applies when none is set), the child and childcare support levy, employees' pension and the employer's child and childcare contribution, each read from the monthly pay grade, plus employment insurance at the general business rate and the employer's workers' accident insurance at the rate for other businesses (set your business type's rate on that row). Bonuses pay at the same rates with their caps. Overtime is 125%, 150% past 60 overtime hours in a month, the weekly statutory holiday 135%, and night overtime 25% more. Income tax is withheld by the monthly table (column kou) with the worker's dependants; set dependants on their pay profile. Bonus withholding is not computed. Resident tax is an estimate marked approximate until you replace it with the amount the municipality notifies in May.
Vietnam: social insurance, occupational accident insurance, health insurance and the trade union fee on the social insurance salary up to 20 times the base salary, and unemployment insurance up to 20 times the regional minimum wage. Set the worker's region to VN-R2, VN-R3 or VN-R4 outside region I. Before July 2026 the social insurance cap is 20 times the earlier 2,340,000 base salary. Overtime is 150%, a weekly rest day 200%, a public holiday 300%, and night overtime 50% more; a run warns past 40 overtime hours in a month or 200 in a year. Personal income tax is withheld for residents on the 2026 table, after the 15,500,000 personal deduction and 6,200,000 for each of the worker's dependants (set Dependants for tax on their pay profile), with overtime pay left out. An employer with the ministry's decision for the reduced 0.3% accident rate can turn on that rate in place of the 0.5% one.
Philippines, paid twice a month: a run for the 1st to the 15th or the 16th to the month end counts as half a month. SSS, PhilHealth and Pag-IBIG are worked out on the whole month's pay with their monthly floors and caps, then split: the first run of the month takes half, and the month's last run takes the rest, so the two runs add up to the monthly amount. Withholding tax projects the year in half-months.
Singapore: CPF reads the ordinary wage up to the monthly ceiling ($8,000 from 2026) for both the employee and the employer share, so the total contribution is never worked out on pay above the ceiling. Additional wages count up to the yearly ceiling.
Every amount on a line links to the rule that produced it.
A rule that is not verified yet still computes, and the line shows Rule to check until someone checks the rule in Payroll rules.
A worker with no work country, or a country with no rules, gets no statutory amounts and a flag on their line.
When a published table runs out (Japan's income tax at the turn of the year, its employment insurance in April), Sparko carries the last rates forward as Rule to check until the new table is in. If a tax or contribution has no current rule at all, the line shows Statutory rule expired and the run cannot be finalized until the current rule is added and the run recalculated.
End-of-service and statutory bonus at final settlement
When a worker's termination date falls in the run's period, their line pays what they are owed on leaving. You don't add it by hand.
- End-of-service gratuity (the UAE, Qatar, Saudi Arabia, India's gratuity) is worked out from their country's rule: the days per year of service in each band, on their final basic pay, for their service up to the termination date, never past the legal cap and nothing before the minimum service. In Saudi Arabia, a resignation (a voluntary separation on their offboarding case) pays the reduced share the law sets.
- Statutory bonus (the Philippines' 13th month pay, India's statutory bonus) pays the year's share up to the termination date.
- Each payout is its own line item, End-of-service payout or Statutory bonus payout, and shows the service years and the accruals it settles. It counts as taxable pay but not as wages for contributions.
- Finalizing the run marks the payout paid. Another run never pays it again: the line says Settlement payout held and why.
- If you already added the gratuity or bonus by hand on that line, the run does not add a second one. The line says Settlement entered by hand so you can remove whichever one you don't want.
- Indonesia's severance and religious holiday allowance are still entered by hand; the line says Settlement payout held to remind you.
- You can adjust a payout with a reason like any computed amount, and your amount stays when the line is recalculated.
Advances and loans
Issue advances and loans under Compensation > Advances.
- New advance takes the worker, the amount, the instalment per run and the date recovery starts.
- Each run takes the instalment, never more than the country's deduction limit. What the limit holds back stays outstanding.
- An advance closes itself when its balance reaches zero.
- Pause stops the instalments. Post adjustment and Write off correct the balance, with a reason.
- Where the worker's country needs written consent for a deduction, Sparko creates the advance paused and sends the consent for signature. It starts once the worker signs.
Reviewing and adjusting a run
Click a person's row to open their line in a drawer. It shows who they are paid by, their Change (joiner, leaver, comp change or unchanged), pay basis, hours, statutory total, deductions and bank details with a Verified, Unverified or Missing bank badge. Below that are their earnings, hours, deductions and employer items, each with its source. Any flags that name the person show at the top, with the same actions as in Needs a look.
- Adjust changes an amount. A reason is required, and amounts that depend on it are worked out again.
- Reset goes back to the calculated amount.
- The Changes tab lists every adjustment with its before and after. The other tab is Items.
- Finalize in the page header opens a confirmation titled for the run, for example "Finalize the October run". Approve and finalize freezes the run. If a line's deductions passed the legal limit, or a statutory rule was skipped, you tick a box to confirm you reviewed it first.
- Two people for payroll. The person who built a run, or changed its lines or pay date, acknowledged or overrode a compliance flag, or released a permit hold, can't finalize it, and sees "You built or last changed this run, so someone else has to finalize it." When nobody else can run payroll for that entity, they can still finalize, and the audit log records that the two-person check was skipped. An admin can turn this off under Security and sign-in.
- Every blocking flag must be fixed or overridden first, and every warning acknowledged. The confirmation names what is still open. When something blocks, Review takes you to the Needs a look drawer (see Payroll compliance below).
Billable hours export
From a client, press Export billable hours. Pick the project (optional), the period, and Detail or Summary, then press Download CSV. The file lists approved billable hours at the bill rate, by worker and project. It never shows pay.
WPS salary file (verify with your bank)
On Business and above, a finalized run for a UAE entity can be downloaded as a UAE WPS salary information file. Check it with your bank before you use it the first time. Sparko asks for the entity's establishment ID and routing code, and each worker's personal number, when they are missing.
Expenses
Employees claim what they spent for work and get it back with their pay. Find it under Payroll › Expenses. Everyone sees My claims. Managers also see Team, and HR Admins and Super Admins also see All claims. Expenses is included on every plan.
If you only have My claims, the page has one row of controls: the status tabs All, Waiting, Approved and Paid, with a search box. Below it, a single line tells you when receipts are waiting, then your claims are listed by month.
Expenses Drop receipts New claim AllWaitingApprovedPaid 2 receipts waiting · Claim them GrabOct 8 · Local transport 18.13
Submitted
Snap or drop a receipt
- On My claims, click Drop receipts. A window opens. Drop photos or PDFs on the box or click browse files. JPEG, PNG, WebP, HEIC and PDF files up to 10 MB work.
- Each file is listed in the window and shows Reading while Sparko reads it.
- When it says Ready, Sparko has filled in what it found. If it says Fill in, it could not read the receipt and you type the values yourself. Click Done to close the window.
Sparko reads the merchant and its tax registration number, the date, the currency, the total, each tax amount and rate, and the line descriptions. It also suggests one of the categories your company offers in your country. Sparko only fills in a suggestion. Nothing is filed until you check the values and confirm.
Sparko reads the receipt itself first: the merchant, the date, the total, the tax and a likely category. It asks AI only for what it could not read with confidence. A scanned PDF of up to 2 pages is read; for a longer scan, Sparko says why it stopped, and a photo of the receipt works instead.
Uploading the same file twice says "You already uploaded this receipt." On a paid Core plan, a receipt uses one of your monthly AI actions only when Sparko had to ask AI (see AI governance); paid Growth and above use fair use. Business trials draw from the allowance for the whole trial. When AI is off or the allowance is used up, the receipt still uploads, Sparko keeps what it read itself, and you fill in the rest.
Receipts you have dropped but not yet claimed show as one line above your claims, for example "2 receipts waiting · Claim them". Click Claim them to open the New claim drawer with those receipts already ticked.
Claim one receipt in a tap
In the New claim drawer, each receipt under Pick from unclaimed receipts has its own Claim button. Click it and a New expense drawer shows what Sparko read: Merchant, Date, Category, Amount and the tax. Click Edit to change any of them, then Confirm. Sparko files a one-line claim and sends it to your approver. If the claim cannot be submitted, it is saved as a draft and the message says why. All waiting receipts takes you back to the list.
New claim with several lines
Click New claim for a trip or a month of expenses. A claim holds one receipt or many.
- Give the claim a Title, for example "Client visit, Penang".
- Tick receipts from Pick from unclaimed receipts, or click Add receipt to upload more. If you opened the drawer from Claim them, the ready receipts are already ticked.
- Click Add mileage for a trip by distance or Add per diem for days away. Each becomes a line.
- Check the lines table. It shows each line's amount, tax and policy flags, and the running total. Who approves shows the route the claim will take.
- Click Save draft to finish later, or Submit claim.
A claim you save as a draft is only visible to you. A claim sent back by an approver reopens as editable. When you submit it again, the route is built again.
Mileage and per diem
- Mileage takes the Date, Distance, Vehicle (car, motorcycle or bicycle) and From and to. Sparko works out the amount from the rate in force on that date. Where the authority bands a rate by distance, Sparko counts your earlier claims in the same year. In the United Kingdom the first 10,000 miles of a tax year pay more than the rest, and in Canada the first 5,000 km of a year do.
- Per diem takes the First day, the number of Days and Where. Sparko multiplies the days by the daily rate.
- Official rates. Sparko holds published mileage rates for the United Kingdom, Australia, the United States, Canada (with the territories) and Germany, and published daily rates for the United States and Germany. Each shows its source in Admin Settings › Compensation › Expenses.
- Everywhere else Sparko holds no rate, because it only stores a rate that an official source publishes. A mileage or per diem line then says "No mileage rate for {country}. Set your company rate." Ask an admin to add one (see Expense policy below).
Policy flags
Sparko checks every line against your company's policy as you build the claim. The approver sees the same flags.
| Flag | What it means |
|---|---|
| Over cap | The category's limit for the claim, day, month or year is exceeded. If your admin set the category to block, the claim cannot be submitted |
| No receipt | A receipt is required for this category or amount, and none is attached. The claim cannot be submitted until you attach one |
| Late | The expense is older than the number of days your company allows |
| Duplicate receipt | The same receipt is on another claim |
| Unverified rate | The mileage or per diem rate has not been verified against its source |
| No FX rate | A line is in another currency and Sparko has no exchange rate for that date. The claim cannot be submitted until your admin adds one under Policy FX rates in Admin Settings › Compensation › Structure |
Your claim is in the currency you are paid in. A line in another currency shows the original amount and is converted with your company's exchange rate for the expense date.
Who approves
Sparko builds the route when you submit.
- Your manager. If you have none, the nearest person above you who can approve expenses.
- Your manager's manager (skip level), when the claim total reaches the skip-level limit your admin set.
- A finance approver, when the total reaches the finance limit. Sparko picks the first active person on your finance approvers list who is not the claimant. If there is none, no finance step is added.
A small, clean claim can be approved at once. Your admin sets the amount, and any claim with a policy flag still goes to a person. Nobody approves their own claim. In a workspace where one person is the only approver, they can approve their own and the audit log records it.
When an approver is away, their delegate decides in their place. A delegate set up for all approvals or for expenses only both work. If skip-level approvals are on in your workflow settings, a senior above the approver can also decide that step.
An approver opens the claim and can Approve, Send back or Reject. To approve less, lower the number in Approve at on a line. An approver can lower an amount and never raise it. A note is needed to send back, reject or lower an amount, and the claimant sees it.
Approvers find claims waiting on them in My Hub, on a row that reads "{n} expense claims to approve". Review opens the To approve view of Payroll › Expenses, which lists every claim waiting on you, including finance steps for people outside your team. Anyone who approves claims sees To approve beside Team and All claims. Managers get a notification when a claim reaches them, and the claimant is told when it is decided.
When nobody in the claimant's line can approve, the claim goes to the expenses admins who cover the claimant. One of them is notified, and any of them can find it under To approve and decide it.
You can cancel your own claim until it is approved. An expenses admin can cancel an approved claim until a payment is underway.
After approval
An approved claim is paid in one of three ways. Your admin picks the default under Pay approved claims.
- With the next payroll. The reimbursement appears on the person's payroll line as "Expense claim: {title}". It is outside the wage base, so no tax or contribution is worked out on it, and it changes net pay only. When the run is finalized the claim becomes Paid and the claimant is told. A claim in a different currency from the line is not added to the run, and the line is flagged so HR can move it off-cycle.
- Off-cycle. HR selects approved claims and clicks Pay off-cycle, then picks the Paying entity and Pay date. Sparko builds a draft payroll run that pays only those claims. Review and finalize it in Payroll Runs like any run, with its bank file. You need permission to run payroll as well, up to 200 claims at a time, and every person must belong to the entity you picked.
- Mark paid. For cash, card or a bank transfer made outside Sparko, click Mark paid, enter Paid on, an optional Reference and, when your company uses Books, an optional Paid from account. The claim is Paid at once.
A claim shows Scheduled while it sits on a draft payroll run. Remove it from that run before you cancel it or choose another payout.
The HR view
If you can see Team or All claims, a strip across the top switches between My claims, Team and All claims, each with its count. Team and All claims show a table with the employee, the total, the policy flags, the payout and the status. Team covers the people who report to you, directly or further down. All claims covers everyone your role covers, limited to your entities if your access is by entity.
- Search finds a claim by its title or a merchant.
- Filter holds the status (To approve, Sent back, Approved unpaid, Scheduled, Paid, Rejected) and narrows by employee, policy flags, payout, currency and total. A badge on the button shows how many filters are on. On My claims it holds the same status choices as the tabs above.
- Tick approved claims, then use Mark paid or Pay off-cycle for all of them at once. These need the Manage Expense Claims and Payouts permission. Open any claim to see its lines, receipts, route and history.
Receipts and privacy
A receipt is filed on the employee's profile but does not appear in their Files tab, in search or in e-sign. It stays with its claim. Only the claimant, the people on the claim's route and people who can view the claim can open it, and every time someone opens a receipt it is recorded in the audit log. A receipt file is deleted only when a leaver's data is erased or a data subject request is fulfilled, never because of its age. When that happens the claim says "File deleted under retention." and keeps its values.
Expense policy (admin)
Open Admin Settings › Compensation › Expenses. Anyone with View Expense Policies can read it. Changing it needs Manage Expense Policies, which HR Admins and Super Admins have. Every change is recorded in the audit log.
Approvals and payout Finance approves from1000.00 SGD Finance approversConnie Hennelly Pay approved claimsWith the next payroll ▾ Advanced Limits in SGD · skip level from 2,500.00 · approve automatically: never · claim within 90 daysApprovals and payout
The card shows three settings, with Save at its top right.
- Finance approves from. The claim total at which a finance step is added. Leave it empty for no finance step.
- Finance approvers. Add up to 20 people. Each must be active and able to approve expense claims, which means holding Approve Expense Claims. Give it through a company custom role (replicate Manager, or start from scratch) and assign that role to your finance people. Books roles do not carry it.
- Pay approved claims. With the next payroll, or off-cycle.
Under Advanced the fold's heading sums up the current values. Open it to change them. It opens by itself if a value needs fixing.
- Limits currency. The currency of the limits. It is required once any limit is set.
- Skip level approves from. The claim total at which a skip-level step is added. Leave it empty for no such step.
- Approve automatically under. Clean claims below this amount are approved at once. Leave it empty to always ask a person.
- Receipt needed over. Lines at or under this amount need no receipt, unless the category asks for one.
- Claim within. The days after the expense date before a line is flagged Late. The default is 90.
Categories
The table has four columns: Category, Country, Cap and Active. Click a row to open it in a drawer. Sparko starts you with Travel, Local transport, Meals and entertainment, Office supplies, Telephone and internet, Mileage and Per diem, available in every country. A country's category replaces the all-country one with the same code for people working there. When the list is long, a Filter button narrows it by country. Click Add category to add your own: its name, its type (receipt, mileage or per diem), the Books account it posts to, an optional Cap with its currency and period (per claim, day, month or year), and Over the cap: Flag it, the approver decides or Block the claim. Receipt needed makes a receipt compulsory. Tax recoverable lets Books post the tax as input tax. A category that claims already use is deactivated rather than deleted.
Mileage and per diem rates
The table has four columns: Country, Kind, Rate and Source. The source shows who set the rate and a verified tag. Click a row to open it in a drawer. Rates marked Sparko come from official sources, link to them, and are read-only. Click Add company rate to set your own for a country and vehicle or place. A company rate overrides the published one from its start date. A rate that claims already use cannot be deleted. End it and add a new one instead.
Known Limitations (summary)
- No bulk import for compensation data (salary, equity, bonus history). Enter it one employee at a time for now. (Pay and bank data export is available via Payroll Runs above.)
- No standalone Compensation Planning or budget-allocation page. Budget visibility is a tab inside each merit cycle.
- Equity grants can't be cancelled from the UI yet.
- Expenses can only be filed by the person who spent the money, and cannot yet be billed on to a client through an invoice. Sparko holds no mileage or per diem rate for a country whose authority publishes none in a form it can apply; add your own company rate.
- Statutory amounts are computed only for countries with payroll rules, and income tax only for the tax methods Sparko has built. Statutory filings and year-end forms are built as CSV files with each form's columns, for download only; only the UAE WPS file is in its bank format. Electronic submission to CPF is not live yet.
Related guides
- People Module: employee directory, profiles
- Books: how approved expense claims post to the ledger
- AI Features Overview: receipt reading and filing a claim from chat
- Performance Module: reviews inform merit recommendations
- Career Module: job families, ladders and the level vocabulary bands are priced against
Still need help? Reach us at [email protected].
← Back to Help Center