Staff Payroll
Track instructor compensation automatically based on the classes they teach. BailaYa derives work hours from your class schedule — no manual clock-in or timesheets required. Set a pay rate per team member, and the system calculates pay every time a class runs.
How it works
- Set pay rates for each instructor or staff member.
- Classes run as normal — when the first student checks in, the instructor's hours are logged automatically.
- Private lessons are logged when marked as completed.
- Run a payroll report for any date range to see hours, classes, students, and calculated pay.
- Export to CSV for your accounting software (compatible with ADP, QuickBooks, Paychex, Xero).
No extra steps for instructors. No clock-in buttons. No timesheets to fill out.
Setting pay rates
Go to Settings → Payroll (visible to owners and admins only).
Each team member can have one of four pay types:
| Pay Type | How it works | Example |
|---|---|---|
| Per Class | Flat rate for each class taught | $50 per class |
| Per Hour | Rate multiplied by class duration | $30/hr × 1.5 hours = $45 |
| Per Student | Rate multiplied by enrolled students | $5/student × 12 students = $60 |
| Commission | Percentage of class revenue per student | 10% of ($20 × 12 students) = $24 |
To set a pay rate:
- Find the team member in the pay rates list.
- Select their Pay Type from the dropdown.
- Enter the Rate amount.
- Click Save.
Per Class is the simplest option and works well for most studios. Use Per Student if you want to incentivize instructors to grow their classes.
Automatic time logging
When the first student checks into a class, BailaYa automatically creates a clock entry for the instructor with:
- Clock in = scheduled class start time
- Clock out = scheduled class end time
- Duration = calculated from the schedule
- Student count = total enrolled attendees at that time
- Pay = calculated based on the instructor's configured rate
This is completely automatic and idempotent — if multiple students check in, only one clock entry is created for the instructor.
Private lessons
When a private lesson is marked as Completed, a clock entry is created for the instructor using the lesson's scheduled time and the instructor's pay rate.
Payroll report
Go to Settings → Payroll → Report to generate a payroll summary.
Filtering
- Date range — select a start and end date
- Team member — filter to a specific instructor or view all
Report contents
The report shows one section per team member with:
| Column | Description |
|---|---|
| Team Member | Instructor name and email |
| Total Hours | Sum of all class durations in the period |
| Classes Taught | Number of classes and private lessons |
| Total Students | Sum of all enrolled students across classes |
| Total Pay | Calculated compensation for the period |
You can expand each team member to see individual entries with date, class name, duration, student count, and pay per class.
CSV export
Click Export CSV to download the report. The CSV includes:
Employee Name, Email, Total Hours, Total Classes, Total Students, Pay Type, Rate, Total Pay
This format is compatible with most payroll and accounting software.
Examples
Studio with flat-rate instructors
- Salsa instructor: Per Class at $60
- Teaches 4 classes/week × 4 weeks = 16 classes
- Monthly pay: $960
Studio with per-student incentive
- Bachata instructor: Per Student at $4
- Teaches 3 classes/week, average 15 students each
- 3 × 15 × 4 weeks = 180 student-sessions
- Monthly pay: $720
Studio with hourly instructors
- Contemporary instructor: Per Hour at $35
- Teaches 5 classes/week, 1.5 hours each
- 5 × 1.5 × 4 = 30 hours
- Monthly pay: $1,050
Things to know
- Clock entries are created once per class (on first student check-in). They cannot be duplicated.
- If no students check in, no clock entry is created (the class effectively didn't run).
- Changing a pay rate only affects future clock entries — existing entries keep the rate from when they were logged.
- Instructors do not need to do anything extra — the system uses the class schedule they're already assigned to.
- Only owners and admins can view and manage payroll.
API reference
| Endpoint | Method | Description |
|---|---|---|
/api/payroll/pay-rates | GET | List all team members with pay rates (owner/admin) |
/api/payroll/pay-rates/:teamMemberId | PUT | Set pay rate for a team member (owner/admin) |
/api/payroll/report | GET | Generate payroll report with optional CSV export (owner/admin) |
Report query parameters
| Parameter | Required | Description |
|---|---|---|
startDate | Yes | Start of period (YYYY-MM-DD) |
endDate | Yes | End of period (YYYY-MM-DD) |
teamMemberId | No | Filter to specific team member |
format | No | json (default) or csv |