Skip to content
Help centre

Payroll

Last updated 2026-10-10

Payroll runs staff pay for a period and produces payslips.

When you'd use this

  • Paying your team for a period.

Running a pay period

  1. Open Finance → Payroll and press New Period. The new period always starts the day after your last period ended, so there's never a gap in coverage: that start date is shown and fixed for you. Choose the length with a preset button: Monthly (a whole calendar month), Semi-monthly (splits the month into 1st-15th and 16th-end), or Weekly (7 days). The name and end date fill in automatically. Use Customise name & end date for an odd-length period. Your first-ever period lets you pick its start date; after that each one follows on from the last. To fix an existing period's name, click the pencil next to it in the period picker. You can't create a period with a gap, an overlap, or a backwards date, so pay can never be counted twice, split ambiguously, or leave days uncovered.
  2. The figures (base pay, commission, gross, tax and net for each person) calculate automatically when you open the period. Press Recalculate any time to refresh after a change. Commission combines: course commission (their share of the courses/dives they led, at their course rate) and retail commission (their POS sales in the period × their retail rate). Each appears as its own line on the payslip. Any bonuses, added on a team member's profile, or directly from a booking's Continued Education section (pick any staff member, not only the one assigned to that booking), show immediately in the table's Bonus column while the period is open (marked as pending until you close), are added to gross and taxed like the rest of pay; a person whose only pay this period is a bonus still gets their own row. When more than one period is open, the bonus and deduction cards show a picker with each period's dates so you always choose where the money goes: it defaults to the period covering today; any deductions (e.g. lunch, fronted kit) are then subtracted after tax to give net pay. Both are listed on the payslip.
  3. Press Pay staff. A short review opens. Each person's amount is their take-home (what's left after tax, any deductions such as lunch or fronted kit, and any early payment you've already made), so it matches their payslip exactly and is the figure to hand over. Where a deduction or advance applies, a small note under the name shows what was taken off. Choose how everyone was paid (cash, bank transfer, etc.) with one setting, and change it for anyone paid differently. It also re-checks the commission for you and flags anything that changed after it was approved (a cancelled booking, a refund, a changed split) with a link to Finance → Commissions → Needs a look: you can still pay, it's just a heads-up. If a Taken back line (pay taken back after an instructor change) would leave someone below nil, Pay staff stops and says which diver it was for, with a link to move it to a later period in Finance → Commissions. Confirm to record everyone as paid in one step: it locks the numbers, creates each person's payslip, and books the wages to your accounts (cash comes out of your Cash Drawer, transfers out of your Bank, so both stay correct).
  4. Set the Pay date (it pre-fills from your centre's pay day if you've set one), then press Release payslips to make them visible to staff under My Pay. Nothing is shown to staff until you release.
  5. Press Email all to email everyone their payslip (PDF attached), or use the per-row Resend. Each row also has a Payslip PDF.

Reopen a paid period (undo a mistake)

Paid a period and then spotted a mistake: a wrong amount, a missed bonus, or the wrong payment method? Press Reopen period on a paid period and confirm. This cleanly reverses the pay: the wage entry is voided (it leaves your P&L, cash drawer and bank), any staff advances and shop-tab deductions are put back, commission returns to to review, and payslips are hidden from staff again. The period becomes fully editable again. Fix what you need, then Close and Pay staff as normal.

  • It reverses everything at once: you can't part-undo it.
  • If your centre syncs payroll to external accounting, reopening isn't available yet (the external entry can't be pulled back automatically).
  • A closed or paid period is locked: its pay, payslips and dates can't be changed until you reopen it. You can still rename it or change its pay date.

Pay someone before the period is closed

Sometimes you need to pay a staff member before the period is closed: they're leaving, or the period's dates are over and you're paying wages before you've pressed Pay staff. While a period is Open, each person's row has a payment button. It says Pay early while the period is still running, and Pay now once its last day has passed (paying for a finished period isn't early).

  1. Press Pay early or Pay now, enter the amount to pay them (their take-home for what you owe so far), choose how you paid (cash, bank transfer, etc.) and the payment date, then confirm. This records a real payment straight away.
  2. Their row shows a "Paid …" chip. They stay on the payroll. They aren't removed.
  3. When you later Close and Pay staff, their pay is worked out in full as normal and the amount you already paid is counted as paid already, so they receive only the balance. Nobody is ever paid twice. If you paid them everything they were owed, their row shows Paid in full and nothing more is due.
  4. Made a mistake? While the period is still Open, the chip has an undo (×) that reverses the payment. Once the period is closed, correct it the normal way instead (it can't be undone with one click after that).

Good to know:

  • For a leaver, set their End Date (their last day) on their Team profile. Their base pay then runs up to that day, even once you mark them inactive, so an early payment always has their pay to come off. Someone marked inactive with no End Date gets no base pay.
  • The money is recorded as an advance (money owed back) until the period settles it, so your books stay balanced and the wage cost is only counted once, on payday.
  • If your centre syncs payroll to external accounting, early payments aren't available yet.
  • On the payroll table, money paid against the same period shows in the Deductions column as "Paid already". Only money paid more than someone earned in an earlier period, and taken back from a later one, shows as "Advance repaid". Neither is a lunch or kit deduction.

Not paying someone today

Closing a period but holding someone's pay back (they're away, or you've agreed to pay them later)? You don't need to leave the period open.

  1. Press Pay staff. Under the person's name, tick Not paying today. Their amount shows Owed later, and the bar underneath shows Paying now and Owed later with the totals.
  2. Confirm. The period closes for everyone and everyone gets a payslip, including the people you held back. Their pay is worked out in full as normal; it just hasn't been handed over yet.
  3. Their row now shows Owed and the amount, with a Pay button. A reminder at the top of Payroll (people are still owed pay) stays on every period until they're paid, so it can't be forgotten.
  4. When you hand the money over, press Pay on their row, choose how you paid and the date, and confirm. The row then shows Paid with the date and how. Made a mistake? The × next to it undoes the payment and they're owed again.

Good to know:

  • Their payslip says Not paid yet until you press Pay, then the date it was paid.
  • The money waits in Wages owed in your accounts: the wage cost lands in the right month, and it only leaves the cash drawer or bank on the day you pay.
  • You can only hold back someone who has something left to be paid (not someone already paid in full early).
  • To reopen a period, first undo any held pay you've since paid out. Reopening puts held people back on the open period like everyone else.
  • If your centre syncs payroll to external accounting, this isn't available yet (same as early payments).
  • Pay rules in your country may set how long wages can be held. Agree it with the staff member.

Pay your periods oldest first

Wages are settled one period at a time, in date order: pay July before August before September. If you try to pay a newer period while an older one is still unpaid, DiveOps stops you and names the one to do first (e.g. "Pay 16-31 July first"), and shows a reminder on the newer period.

Someone away on payday? Use Not paying today (above) so the period can still close.

Why it matters: an early payment is taken back off the next pay run. Paying in date order means each early payment comes off the right month's payslip. If several periods have built up unpaid, just work through them oldest-first and everything lines up. Nothing is lost, and no one is paid twice.

Paying the tax office

If you take tax off your staff's pay (a Tax % on someone's profile), that tax isn't yours: you hold it until you pay it to the tax office. When you press Pay staff, DiveOps books the tax taken off as Wage tax owed in your accounts.

Once a period is paid, a line under Reopen period shows Owed to the tax office for September · €416.80. When you've paid it:

  1. Press Mark as paid to the tax office.
  2. Choose how you paid (usually Bank transfer) and the date you paid. Leave the date blank for today.
  3. Confirm. The tax leaves your bank (or the cash drawer) and nothing is owed any more.

The amount is fixed: it's exactly the tax booked when you paid staff, so it always matches your payslips. Marked it by mistake? Press Undo next to it.

  • Don't record this payment as an expense. The wages are already counted when you pay staff, so an expense would count them twice. Use Mark as paid to the tax office instead.
  • If you need to reopen a period, undo its tax office payment first.
  • If a period's tax still isn't marked paid 45 days after the period ended, you'll get a reminder in the bell.
  • Periods paid before this feature (before 4 October 2026) don't show the line.
  • If your centre sends payroll to your accounting software, record the tax payment there instead.
  • If you use the Accountant export, you may be asked to map the new Wage tax owed account once.

Months not run through Payroll

Sometimes a month's staff were paid by hand and never went through Pay staff, maybe from before you started using Payroll, or a month someone settled the wages themselves. You can record that without running Payroll, so the month stops showing as unfinished and stops holding up newer months.

On an open month, choose Mark as not run through Payroll and give a short reason. DiveOps then:

  • marks the month done without running Payroll: no payslips are created, and nothing is posted to your accounts;
  • keeps the profit report honest: wages for that month are counted from your expenses (whatever you entered when you paid the staff), not from Payroll, so the same wages are never counted twice;
  • clears any early payments for that month as already paid.

You can Undo it while it's your most recent not-run month. That returns the month to open so you can run it through Payroll properly.

One rule to avoid double-counting: if you do run a month through Payroll, don't also add the same wages as an expense for those staff. Pick one way per month: Payroll, or your own expenses.

Pay some staff now, the rest later

Payday, but a few people are away? You don't have to close the whole period, and you don't need to do each person one by one. In the Pay staff review, switch from Pay everyone and close to Pay some now, rest later.

  1. Choose Pay some now, rest later. A tick box appears next to each person, and everyone who's owed pay starts ticked. Untick anyone who isn't here yet. (Use Select all / none to start from the other end.)
  2. The bar at the bottom shows Paying now · how many · the total and Left for later. Choose how they're paid (and change it for anyone paid differently), then press Pay N now.
  3. Each person you paid gets a "Paid …" chip and the period stays Open. When everyone's back, press Pay staff as normal. It settles the whole period and takes off what you already paid, so nobody is paid twice.

Good to know:

  • Someone who's already been paid this period, or who's owed nothing, can't be ticked (their row says why). The final Pay staff run tidies them up.
  • Each "pay now" records the person's full take-home as an early payment. Need to pay only part of what they're owed? Use their row's Pay early or Pay now button instead.
  • If your centre syncs payroll to external accounting, this isn't available yet (same as early payments).

Pay by the trip or by the day at sea

A team member's Pay Period can be Per trip led, Per day at sea or Per trip skippered (set on their Team profile). Their base pay is the rate times what they did in the period, counted from published trip sheets and only between their start and leaving dates. The payroll table and payslip say what was counted, for example "12 days at sea × ฿1,500".

  • Publish the trip sheets before you pay. A draft sheet doesn't count. If a draft sheet in the period names someone paid this way, the Pay staff window warns you: publish it, press Recalculate, then pay.
  • A paid period never changes. If a sheet is published, unpublished or corrected after you've paid, the bell tells you the next day ("Tom: trip sheets changed after their pay was closed"). The bell doesn't say how anyone is paid, as the whole team can see it. Compare their payslip with the trip sheets, then add a bonus or deduction line in the open period.

See how a commission was calculated

  • On the payroll table, any Commission amount is a button. Press it and the row expands to show every line behind the figure: each course/dive payment (with the split % if instructors shared a group, and "6 dives × ฿500" or "฿2,500 per course" where that person is paid per dive or per course) and each retail sale on its own line (customer or "Walk-in" · date · rate), with a Commission total that matches the column. The per-sale retail lines add up to the exact same total that's paid: a refund shows as a negative line.
  • On Open and Closed periods the breakdown is calculated live. On Paid periods it shows the exact lines frozen on the payslip, so it always matches what was paid.
  • Each person's name links to their Team profile, where a Pay History section lists every period they've been paid in (base, commission, net and the payslip PDF). See team.md.

Set your pay day (optional)

In Settings → Centre Info, a payroll pay day (1-31) lets each new period's pay date pre-fill automatically.

For staff: My Pay

Every staff member sees only their own pay under My Pay (in the sidebar): their latest payslip, year-to-date totals, full history, a full breakdown, a Download PDF, and an Email me button. The breakdown shows Commission and Bonus (continuing education, tips) as two separate sections, both on screen and on the PDF. A staff member sees their con-ed on their payslip as soon as it's added, as an estimate (just like commission), not only after the period is paid; it's added to their gross. They only see a released or already-visible payslip: the full history follows the same release rule.

Tips

  • Periods move through Open → Closed → Paid, and payslips through draft → released.
  • A paid payslip is locked. Once a period is marked paid, its payslips are frozen: changing a team member's tax rate, or editing a booking later, won't rewrite a payslip that's already been paid. New rate or commission changes only affect future unpaid periods.
  • Marking a period paid twice is safe. It won't create duplicate payslips or post the wage journal a second time.
  • Base pay follows each person's dates, automatically. Base pay covers only the days someone worked in the period: from their Start Date to their End Date on their Team profile (either can be blank). Someone who starts on 11 September is paid for 20 of September's 30 days; a leaver is paid up to their last day. Monthly and yearly pay is worked out per day of that calendar month; daily pay counts the days. The Base Pay figure shows a small note when this applies (for example 11-30 Sep · 20 of 30 days), and the payslip says the same. Someone employed for the whole period is paid exactly as before. An End Date can't be before the Start Date.
  • Retail commission rates are set per person on the Team member's profile (Retail Commission Rate %), with an optional centre-wide default in Settings → Commissions. Pick the Salesperson on each sale at the till. Refunds reduce that person's commission automatically.

Related

Can't find what you need? Get in touch.