Skip to main content

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

  1. Set pay rates for each instructor or staff member.
  2. Classes run as normal — when the first student checks in, the instructor's hours are logged automatically.
  3. Private lessons are logged when marked as completed.
  4. Run a payroll report for any date range to see hours, classes, students, and calculated pay.
  5. 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 TypeHow it worksExample
Per ClassFlat rate for each class taught$50 per class
Per HourRate multiplied by class duration$30/hr × 1.5 hours = $45
Per StudentRate multiplied by enrolled students$5/student × 12 students = $60
CommissionPercentage of class revenue per student10% of ($20 × 12 students) = $24

To set a pay rate:

  1. Find the team member in the pay rates list.
  2. Select their Pay Type from the dropdown.
  3. Enter the Rate amount.
  4. Click Save.
tip

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:

ColumnDescription
Team MemberInstructor name and email
Total HoursSum of all class durations in the period
Classes TaughtNumber of classes and private lessons
Total StudentsSum of all enrolled students across classes
Total PayCalculated 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

EndpointMethodDescription
/api/payroll/pay-ratesGETList all team members with pay rates (owner/admin)
/api/payroll/pay-rates/:teamMemberIdPUTSet pay rate for a team member (owner/admin)
/api/payroll/reportGETGenerate payroll report with optional CSV export (owner/admin)

Report query parameters

ParameterRequiredDescription
startDateYesStart of period (YYYY-MM-DD)
endDateYesEnd of period (YYYY-MM-DD)
teamMemberIdNoFilter to specific team member
formatNojson (default) or csv