Instructor Pay

Built-in earnings tracking and payout ledger for instructors. Configure a default pay rule per instructor, optionally override it for a specific schedule, watch earnings accrue from confirmed enrollments, and record payouts when you pay the instructor out.

How pay rules work

Each instructor has a default rule with two parts: kind and value. Three kinds are supported:

  • Flat $ per schedule — paid once per schedule regardless of headcount. Useful for a fixed teaching fee.
  • $ per confirmed student — multiplied by the count of enrollments in CONFIRMED status. Cancellations and no-shows don't count.
  • % of enrollment revenue — a percentage 0–100 of the gross amountPaid on confirmed enrollments. Out-of-range values are clamped.

Each schedule can override the instructor's default — a per-engagement rate for a one-off premium event, a discounted co-teaching arrangement, etc. The override only applies if both kind AND value are set; otherwise the instructor default is used. When neither side has a complete rule, earnings stay at $0 and the row is flagged with an amber “No rule configured” notice in the earnings table.

Recording payouts

From /admin/instructors/<id>/pay you can:

  • Edit the instructor's default rule.
  • See every assigned schedule with its computed earnings, rule label, revenue base, student count, and payout status.
  • Select one or more unpaid schedules and Record payout — pick the method (cash, e-transfer, cheque, EFT, other), the paid-on date, an optional reference (cheque #, e-transfer confirmation), an optional note, and an optional statement window.
  • Each schedule's amount is snapshotted at the current rule when the payout is recorded — later rule edits don't move historical numbers, and editing an already-paid schedule's override is blocked until the payout is deleted.
  • Past payouts can be deleted to correct mistakes; the linked schedules return to the open balance.

Statements

Three ways to produce a printable HTML statement (use your browser's “Save as PDF”):

  • Per payout — click “Statement” on any row in the payout history. Lists exactly the schedules closed out by that payout, with method and reference at the top.
  • Custom period — pick from/to dates on the “Statement for period” panel to generate a draft covering every schedule in the window (paid or open) for the instructor's own records.
  • Default 30-day — opening the statement route without any params gives the last 30 days.

The platform doesn't move money — payouts are recorded after you hand over cash or send an e-transfer outside the system.

What the instructor sees

Instructors get a self-serve view at /instructor/earnings: their own open balance and lifetime paid-out totals, every assigned schedule with its earnings status, and the payouts they've received. Read-only — only admins configure rules and record payouts.

Permissions

  • MANAGER and ADMIN — full access: edit rules, record payouts, delete payouts.
  • INSTRUCTOR — sees only their own earnings page.
  • STAFF, BOOKKEEPER, CONTENT_EDITOR, CUSTOMER — no access.