Staff Payroll
The Payroll menu counts each staff member's salary from their salary profile, attendance, commission and kasbon (cash advances). You check the numbers, lock them, pay your staff yourself (cash or transfer) and mark them as paid. Every staff member gets a payslip they can open from a link or WhatsApp, and also in the POS app. The same menu also makes THR and files for your accountant.
Payroll is available from the Pro plan and only the shop Owner can open it. Shops that don't use it see no change apart from the new Payroll menu.
Mark as paid only records that you paid. You still hand over the money yourself, in cash or by bank transfer.
Before you start
Open Operations > Payroll (right below Attendance). The page has three tabs: Payrolls, Salary profiles and Kasbon.
You need:
- Staff added in the Staffs menu.
- A salary profile for each staff member you pay through Etalasse. Staff without a salary profile are not in any payroll.
- To count pay from clock-in times and lateness, switch on Attendance and set up shift schedules. It also works without attendance: you type the days worked yourself. See Shops that don't use attendance.
Salary profile
In the Salary profiles tab, tap a staff member and fill in how they are paid. Fill in the main part first; open the other parts only when you need them.
| Part | What you set |
|---|---|
| Pay type | Monthly (a fixed salary each month), Daily (paid per day present) or Hourly (paid per hour worked), and the salary or wage |
| Work days in a month | For a monthly salary. Used for the daily rate when someone is absent. Usually 26 |
| Meal and transport money | Meal money per day and transport money per day, paid for each day present |
| Fixed allowances and deductions | For example a position allowance or a uniform cut. Added once per payroll, up to 20 items |
| Late, absent and overtime | Late cut (per time late or per minute late), absence cut by the daily rate (monthly only), overtime pay (per hour or the government formula) and the minimum overtime (30 minutes by default) |
| Commission and kasbon | Include commission (when the shop uses staff commission) and the kasbon instalment per payroll |
| Bank account for the slip | Bank name, account name and account number. The slip shows only the last 4 digits; the full number is in the transfer CSV for you |
| Permit is cut from salary | Off (permit days are paid) or on (permit days are not paid). See Unpaid permit |
| Join date and leave quota | The date the staff member started work, used for THR and annual leave. Leave the quota empty to use the shop quota |
Switch Active off when someone is not being paid for a while (for example long leave). The profile is kept, but the person is left out of new payrolls.
Kasbon
The Kasbon tab records money you advanced to staff and what is still owed.
- Give kasbon: record money you handed over. It is cut from later salaries (by the instalment in the salary profile) or paid back in cash.
- Record cash repayment: the staff member paid back part of it in cash. It can't be more than what is still owed.
- Kasbon correction: fixes a wrong entry, always with a reason. A correction can't make the amount owed go below zero.
Every kasbon entry is kept and can't be deleted. If you typed something wrong, fix it with a correction, so the history always adds up.
Creating a payroll
In the Payrolls tab, tap New payroll:
- Pick the period: A whole calendar month (for example November 2026) or Custom dates, up to 31 days (for example weekly, or 1–15 Nov). With custom dates the end date can be today at the latest.
- Pick the staff. Everyone with an active salary profile is already ticked.
- Tap Create draft.
Making THR? Choose New THR in the same dialog. See THR.
This month's payroll can be made before the month is over, for example if you pay on the 25th. Attendance counts only up to today and the line is flagged Period not over yet. You can still lock it. A monthly base salary is paid in full, and the remaining days aren't lost: daily or hourly pay, meal money, transport money, lateness, absences, overtime and commission from those days go into the next payroll automatically. There the items say Termasuk … dari periode sebelumnya ("includes … from the previous period"), so the staff member can see where they come from.
The name is filled in for you, for example Gaji November 2026 or Gaji 1–15 Nov 2026. One staff member can't be in two payrolls whose dates overlap. If someone already is, Etalasse names them and you can Continue without them.
While it is a draft you can change everything. Tap Recalculate to pull in the latest attendance, commission and kasbon. Numbers you typed yourself and manual items are kept when you recalculate.
How the salary is counted
Each salary line is earnings minus deductions. Every item is rounded to the nearest rupiah on its own, then added up.
Earnings
| Item | How it is counted |
|---|---|
| Base salary | Monthly: the monthly salary. Monthly with custom dates: salary × days in the period ÷ days in that month (flag Prorated). Daily: wage × days present. Hourly: wage × hours worked outside overtime |
| Meal money, transport money | Amount per day × days present |
| Overtime | Only overtime that reaches the minimum overtime on that day. Per hour: rate × overtime hours. For staff paid by the hour, overtime minutes are paid once, here, at the overtime rate, and not again in the base salary. Government formula (monthly only): salary ÷ 173 per hour, the first hour each day × 1.5, the rest × 2. The result is flagged Overtime is an estimate |
| Allowances | The fixed amounts from the profile (prorated for a monthly salary on custom dates) |
| Commission | The staff member's commission in the period, when Include commission is on and the shop uses staff commission |
| Manual items | Bonuses or extras you add yourself |
Deductions
| Item | How it is counted |
|---|---|
| Late cut | Per time late × times late, or per minute late × minutes late |
| Absence cut | Monthly only: (salary ÷ work days in a month) × days absent. Approved sick days and leave are never cut |
| Permit cut | Monthly only, and only when Permit is cut from salary is on: (salary ÷ work days in a month, rounded) × permit days. See Unpaid permit |
| Fixed deductions | The fixed amounts from the profile (prorated for monthly on custom dates) |
| Manual items | Cuts you add yourself |
| Kasbon instalment | The instalment from the profile, or the amount you set on this payroll. Never more than what is owed, and never makes the salary negative |
Take-home pay can't be negative. A negative line is flagged Check this: salary is negative and the payroll can't be locked until it is fixed.
Example
Toko Ani pays two staff members for November 2026.
- Ani (monthly): salary Rp2.800.000, 26 work days, meal money Rp15.000/day, position allowance Rp200.000, late cut Rp10.000 per time, overtime Rp15.000 per hour (minimum 30 minutes), kasbon instalment Rp150.000 (Rp300.000 still owed). Her attendance: 24 days present, late twice, 1 day absent, overtime of 45, 20 and 90 minutes on three days.
- Budi (daily): wage Rp120.000/day, meal money Rp15.000/day, transport Rp10.000/day, late cut Rp1.000 per minute, commission included. His attendance: 22 days present, 35 minutes late in total. His commission that month: Rp85.000.
| Item | Ani (monthly) | Budi (daily) |
|---|---|---|
| Base salary | Rp2.800.000 | 22 × Rp120.000 = Rp2.640.000 |
| Meal money | 24 × Rp15.000 = Rp360.000 | 22 × Rp15.000 = Rp330.000 |
| Transport money | – | 22 × Rp10.000 = Rp220.000 |
| Overtime | 135 minutes (45 + 90; the 20 minutes don't count) × Rp15.000/hour = Rp33.750 | – |
| Position allowance | Rp200.000 | – |
| Commission | – | Rp85.000 |
| Gross pay | Rp3.393.750 | Rp3.275.000 |
| Late cut | 2 × Rp10.000 = Rp20.000 | 35 minutes × Rp1.000 = Rp35.000 |
| Absence cut | Rp2.800.000 ÷ 26 = Rp107.692 × 1 day = Rp107.692 | – |
| Kasbon instalment | Rp150.000 | – |
| Total deductions | Rp277.692 | Rp35.000 |
| Take-home pay | Rp3.116.058 | Rp3.240.000 |
If Ani were paid for the custom dates 1–15 Nov 2026, her base salary would be Rp2.800.000 × 15 ÷ 30 = Rp1.400.000 (flag Prorated), and her allowance would be prorated too.
Checking and changing a draft
Tap a name to see every item. There you can:
- Type numbers yourself: days present, minutes worked, times late, minutes late, days absent or overtime minutes. Left empty means taken from attendance; a number you type is used instead.
- Add manual items: for example a Lebaran bonus, a correction from last month or a cut for leave. Up to 20 items.
- Set the kasbon cut: use the profile, or set the amount (type 0 to skip it this time).
- Take someone out of the payroll, or add another staff member who has a salary profile.
Flags on each line: Check this: salary is negative, Period not over yet, No attendance data, Overtime is an estimate, Prorated and Commission already paid (part of this period's commission was already paid from the Commission menu, so it isn't counted again). A line is also flagged when that staff member has an undecided leave request in the period.
While a leave request isn't approved, that day counts as absent and can cut the salary. Approve or reject the request in Attendance > Leave first, then tap Recalculate before locking.
Unpaid permit
By default, approved permit days (izin) are paid in full. If in your shop a permit day means no pay, switch on Permit is cut from salary in that staff member's salary profile:
- Monthly staff: permit working days in the period become a Permit cut item = (salary ÷ work days in a month, rounded to the rupiah) × permit days. Example: salary Rp2.800.000, 26 work days, 2 permit days. The daily rate is Rp2.800.000 ÷ 26 = Rp107.692, so the cut is Rp107.692 × 2 = Rp215.384.
- Daily and hourly staff: permit days are simply not paid, because they are only paid for the days or hours they work. There is no extra cut.
Only working days (days with a shift in the staff member's schedule) of approved permits count. Sick days and leave stay paid even with this setting on. Every payroll line also records the number of permit, sick and leave days in the period.
Shops that don't use attendance
When attendance is off or the shop's plan doesn't include it, every attendance number starts at 0 and the line is flagged No attendance data. Type the days present yourself (for daily staff, meal and transport money), minutes worked (for hourly staff), and lateness or overtime if you use those rules. A monthly base salary is still paid in full without attendance data.
Locking and marking as paid
- When everything is right, tap Lock. Etalasse counts one last time, freezes the numbers and makes a payslip for each staff member. Still something wrong? Tap Unlock (as long as nobody is paid yet), fix it and lock again.
- Pay your staff yourself. For bank transfers, Export CSV for transfer lists the name, bank, account name and number, and take-home pay.
- Tap Mark as paid, pick everyone not paid yet or some of the staff, how you paid (cash, transfer or other) and the paid date (today at the latest).
When you mark a line as paid, Etalasse records:
- The kasbon instalment as paid back, so what the staff member owes goes down.
- The commission in the salary as paid, so it can't be paid a second time in the Commission menu.
- One expense in the Salaries category in Expenses, equal to take-home pay plus the kasbon instalment, so salaries show in Profit & Loss. The kasbon instalment is not a new cost, because that money already left when the kasbon was given. An expense written by payroll can't be edited or deleted on the Expenses page; correct it through the next payroll.
If you have been recording salaries by hand in Expenses, stop doing that for staff you pay through Payroll. Otherwise their salaries are counted twice in Profit & Loss.
If the kasbon owed changed after locking (for example a cash repayment), or that period's commission was paid from the Commission menu, Etalasse won't mark the line as paid. Unlock, tap Recalculate and lock again.
The payroll becomes Paid once every staff member in it is marked as paid. A payroll with nobody paid yet can be cancelled with a reason; it stays in the history as cancelled and its slip links stop working.
When something is wrong after paying
A paid salary can't be changed or cancelled. Put the correction into the next payroll as a manual item, for example "Underpaid in October" (earning) or "Overpaid in October" (deduction).
Payslips
Once locked, each staff member has their own payslip: shop name, period, every item, gross pay, total deductions, take-home pay, attendance numbers (days present, times late, days absent, hours worked) and the bank account with only the last 4 digits. The slip always says Not including BPJS and tax. A THR slip shows the holiday name and date and the THR item.
Tap Share slips and choose:
- Copy link, to send it with any app, or
- WhatsApp, which opens WhatsApp with a message containing the slip link. You pick the staff member's chat yourself.
Anyone with the link can open the slip without signing in, so send it only to that person. The slip can be printed or saved as a PDF with Print / Save as PDF. Slips of a cancelled payroll can't be opened any more.
Staff see their slips in the POS
Staff can also open their own payslips in the POS app, from My payslips in the staff menu. Only slips marked as paid appear there. See My payslips.
Export for the accountant
In the Payrolls tab, the Export for the accountant menu has three CSV files. They all open in Excel or Google Sheets: money is written as whole numbers without separators, dates as YYYY-MM-DD, and times use the shop time zone.
| File | What it has |
|---|---|
| Salary recap | Pick a range of paid dates (at most 366 days). One row for every staff line that has been paid: payroll name, its type (month, custom dates or THR), period, paid date and how it was paid, staff name and role, their pay type, then a column per item family: base, meal money, transport, overtime, allowances, commission, THR, manual earnings, gross pay, late cut, absence cut, permit cut, fixed deductions, manual deductions, kasbon, total deductions, take-home pay and cost (take-home pay plus the kasbon instalment, the same as the Salaries expense) |
| Yearly summary per staff | Pick a year. One row per staff member: name, role, join date, gross pay for each month (January to December, by the month it was paid, including THR paid that month), total gross for the year, total THR (a part of the total gross, not on top of it), total deductions excluding kasbon, total kasbon and total take-home pay. The top row says Belum termasuk BPJS dan PPh 21. (not including BPJS and PPh 21) |
| Kasbon ledger | Pick a date range. Every kasbon entry: advances given, cash repayments, payroll cuts and corrections |
Leave balances have their own file in Annual Leave.
Etalasse does not calculate PPh 21 or BPJS, and does not issue tax slips. These files are material for your accountant or tax consultant.
What you usually hand to the accountant:
- The Yearly summary per staff for each tax year. Monthly gross pay already includes THR; the total THR column shows how much of it was THR. The accountant uses these numbers to work out PPh 21 and issue the 1721-A1 tax slip at the end of the year.
- The Salary recap when the accountant needs the detail per item or per payroll, for example to work out monthly PPh 21.
- The Kasbon ledger when the accountant needs to keep staff loans apart from pay. A kasbon is a loan, not income.
The numbers follow the paid date, the same as the Salaries expense in Profit & Loss. December pay paid on 2 January counts in January.
What is not included
- BPJS Kesehatan and BPJS Ketenagakerjaan (national health and employment insurance) are not counted automatically. If you deduct them, add them as a fixed deduction in the salary profile.
- PPh 21 (employee income tax) is not counted. Hand the files for your accountant to your accountant.
Overtime from the government formula is an estimate. Check it against the rules that apply to your business.
Plans and roles
| Free | Growth | Pro | Enterprise | |
|---|---|---|---|---|
| Salary profiles, kasbon, creating and paying payrolls | No | No | Yes | Yes |
| Viewing past payrolls, salary profiles, kasbon, slips, CSV and accountant exports | Yes | Yes | Yes | Yes |
After a downgrade all payroll data stays readable: past payrolls, profiles, kasbon, slips and CSV. Slip links you already sent keep working, and staff still see their slips in My payslips. Pro is needed again to change profiles, record kasbon, and create or pay payrolls.
| Role | What they can do |
|---|---|
| Owner | Everything in the Payroll menu |
| Admin | Can't open the Payroll menu (salaries are Owner-only) |
| Cashier, Kitchen | Only their own payslips in My payslips in the POS |
MCP tools
An AI assistant can read the list of payrolls (THR included), one payroll with its lines and flags, and kasbon balances (payroll.runs_list, payroll.run_get, payroll.advances_balances). Bank account numbers are never sent to an AI assistant. Creating, locking and paying payrolls, and the export files, are Dashboard-only. See Tool Surface.