Staff Payroll
This page explains how to configure how staff members earn pay, generate a payroll run, and record that you paid them.
Navigation label — Staff Payroll: EN: Staff Payroll · IT: Buste Paga · FR: Paie du Personnel · DE: Personallohn · ES: Nómina del Personal · PT: Folha de Pagamento · NL: Personeelssalaris
Before you start
Only studio managers can access Staff Payroll in the left sidebar. This feature has no client-facing surface — clients never see pay configuration or payroll runs.
Agon's Staff Payroll is record-keeping only, not a payment processor. It does not transfer money to anyone. You still pay staff the way you always have — bank transfer, cash, or however your studio handles it — and then use Mark Paid afterward to log that it happened, so your records reflect reality.
Staff members are selected from your existing instructor list. If someone you pay through Agon isn't showing up as a selectable staff member, they need an instructor profile first, under Instructors in the left sidebar.
Overview
A staff member's pay is built from one or more pay components, and you can turn on several different types for the same person at once. For example, an instructor could earn an hourly rate for the classes they teach, a flat per-class bonus, and a commission on the retail products they sell — all simultaneously. The available component types are:
- Hourly — a rate multiplied by hours taught. Hours come from the duration of that instructor's completed classes in the payroll period.
- Per-class — a flat amount for every completed class the instructor taught in the period.
- Commission — a percentage of the retail product sales the staff member rang up (see POS / Retail). Commission on membership or class payments isn't supported yet.
- Fixed salary — a recurring salary, prorated to the length of the payroll period (a monthly salary run for half a month pays half the salary).
A staff member can have only one active component of each type at a time — for example, one active hourly rate — but any combination of different types can be active together.
Once you've configured pay components, you generate a payroll run for a date range. Agon computes one line per staff member per active component, showing exactly how each number was derived so you can verify it before paying anyone. A run starts as a draft and can be freely regenerated; once you're satisfied, you finalize it, which locks the amounts permanently. After finalizing, you mark each line item paid once you've actually paid that person outside Agon.
Setting up pay components
- Go to Staff Payroll in the left sidebar.
- Click Add Component.
- Choose the Staff Member from the list (instructors only).
- Choose the Component Type: Hourly, Per-class, Commission, or Fixed Salary.
- Enter the rate:
- Hourly and Per-class — enter the amount per hour or per class.
- Commission — enter a percentage (e.g.
10for 10%). - Fixed Salary — enter the salary amount, then choose a Salary Period: Weekly, Monthly, or Yearly.
- Click Add Component.
The component appears in the table with the staff member, type, rate, and an Active / Inactive badge. Repeat these steps to add more component types for the same staff member — each type is independent, so a staff member can have an hourly rate, a per-class rate, a commission, and a fixed salary all active together.
Editing a component
- Find the component in the table and click Edit.
- Update the rate (and Salary Period, for a fixed salary component).
- Click Save.
The staff member and component type cannot be changed once a component is created — deactivate it and add a new one instead if you need to change either.
Deactivating a component
- Find the component in the table and click Deactivate.
- Confirm.
Deactivating a component removes it from future payroll runs. It does not delete its history — any past payroll run that already used it keeps its computed amounts unchanged. You can add a new active component of the same type for that staff member afterward.
Generating a payroll run
- Go to Staff Payroll in the left sidebar and switch to the Payroll Runs tab.
- Click Generate Run.
- Choose a Period Start and Period End date.
- Click Generate.
Agon computes one line item per staff member per active pay component for that period and opens the run's detail view. A newly generated run is a draft — you can review it, and if something looks wrong (for example, a rate needs correcting), fix the pay component and generate a new run for the same period; regenerating simply creates a fresh draft calculation.
Reading the breakdown
Each line item in a run shows exactly how its amount was derived:
- Hourly — hours taught × rate (e.g. "12.50 hours × 20.00/hr").
- Per-class — number of classes taught × rate per class.
- Commission — the product-sales revenue the staff member rang up × the commission percentage.
- Fixed salary — the salary amount, the salary period, and the number of days in the run that the proration is based on.
Use this to confirm every figure before you finalize the run and pay anyone.
Finalizing a run
- Open the run's detail view.
- Click Finalize.
- Confirm.
Finalizing is irreversible — once a run is finalized, its computed amounts never change. Only finalize a run once you're satisfied every line item is correct.
Marking a line item paid
Do this after you've actually paid a staff member outside Agon — by bank transfer, cash, or however you normally pay them.
- Open a finalized run's detail view.
- Find the staff member's line item and click Mark Paid.
- Optionally add a Note (e.g. which bank transfer it corresponds to).
- Click Mark Paid.
The line item's status changes to Paid, along with any note you added. Marking a line item paid is bookkeeping only — no money moves inside Agon.
What if something goes wrong?
A staff member can't be added again with the same component type
STAFF_PAY_COMPONENT_DUPLICATE_TYPE — this staff member already has an active component of that type. Edit the existing one instead, or deactivate it first if you need to replace it.
Agon won't let me save a fixed salary component
STAFF_PAY_COMPONENT_SALARY_PERIOD_REQUIRED — a fixed salary component needs a Salary Period (Weekly, Monthly, or Yearly). Choose one and try again.
Agon rejects a Salary Period on a non-salary component
STAFF_PAY_COMPONENT_SALARY_PERIOD_NOT_APPLICABLE — Salary Period only applies to Fixed Salary components. Leave it blank for Hourly, Per-class, or Commission.
Generating a run says the period is invalid
PAYROLL_INVALID_PERIOD — the end date is before the start date. Check both dates and try again.
I can't finalize a run
PAYROLL_RUN_ALREADY_FINALIZED — this run has already been finalized. Finalizing only works once per run; generate a new run if you need to make further changes for that period.
I can't mark a line item as paid
PAYROLL_RUN_NOT_FINALIZED — line items can only be marked paid on a finalized run. Finalize the run first.
A staff member I want to pay isn't in the list Staff selection currently draws from your instructor list. If the person doesn't have an instructor profile, add one first under Instructors in the left sidebar.