TotalApp Docs

Payroll

Generate, approve, and disburse monthly payroll batches through a locked draft → approved → paid workflow.

Overview

Payroll generates one batch per calendar month, computing every active employee's pay from their base salary using a fixed formula, then walks that batch through an immutable state machine — Draft → Approved → Paid — that mirrors how the underlying accounting entries are locked in.

Reads Base Salary from HR

Payroll pulls each active employee's base salary from their HR record. Employees with no salary set, or marked archived, are excluded from the batch entirely — they never appear as a $0 row.

Screen previews

A quick look at the screens. Use the toggle in the corner of each preview to switch between the dark and light themes.

app.totalapp.app/finance/payroll
Payroll — June 2026
— Processing
28
EMPLOYEES
—842,400
GROSS
—189,540
DEDUCTIONS
—652,860
NET PAY
AK
Adam Kelly
Engineering
—55,000
—42,350
Paid
SY
Sophie Young
Design
—42,000
—32,340
Paid
MO
Michael Owens
Marketing
—38,500
—29,645
Pending
E—
Emily Clark
Finance
—48,000
—36,960
Pending

Payroll run

app.totalapp.app/finance/payroll/payslip
Acme Corp A.S.
Tax ID: 1234567890 — Boston
PAYSLIP
June 2026 — EMP-0042
Employee
Adam Kelly
Department / Role
Engineering — Sr. Developer
Pay Period
Jun 1 — Jun 30, 2026
Payment Date
Jun 30, 2026
Description Amount (—)
Base Salary48,000.00
Overtime (12 hrs)4,500.00
Transport Allowance1,500.00
Income Tax (15%)-8,100.00
SSI Employee Share-3,550.00

Payslip

app.totalapp.app/finance/payroll/tax
Tax & Deductions — June 2026
28 employees
Total Income Tax
—126,400
Avg 15% effective rate
SSI Employee Share
—49,750
14% of gross salary
SSI Employer Share
—72,680
20.5% of gross salary
Other Deductions
—13,390
Pension, union, health
Deduction Breakdown by Type
Income Tax
49%
SSI Employee
20%
SSI Employer
28%
Other
5%

Tax and deductions

app.totalapp.app/hr/leave-benefits
Leave & Benefits
June 2026
Annual (18)
Sick (4)
Maternity (1)
AK
Adam Kelly
Sr. Developer — Engineering
14
REMAINING
6
USED
20
TOTAL
SY
Sophie Young
Lead Designer — Design
18
REMAINING
2
USED
20
TOTAL
E—
Emily Clark
Finance Manager — Finance
8
REMAINING
12
USED
20
TOTAL
PN
Priya Nair
HR Coordinator — People
16
REMAINING
4
USED
20
TOTAL
DR
Daniel Reyes
Data Analyst — Analytics
9
REMAINING
11
USED
20
TOTAL

Leave balances synced with payroll

app.totalapp.app/finance/payroll/analytics
Payroll Analytics
Jan—Jun 2026
—4.9M
YTD PAYROLL
28
HEADCOUNT
—30,175
AVG NET PAY
Monthly Net Payroll (—000)
Jan
Feb
Mar
Apr
May
Jun

Payroll analytics

app.totalapp.app/finance/payroll
Payroll · June 2026
28 employeesDraft
Income tax15% avg
Employer SSICalculated
Payment dateJun 30

Payroll run for June

Payroll Calculation

Each employee's line is calculated with a fixed rule set — there is no overtime, days-worked proration, or manual per-line deduction entry:

Net Pay =
  Base Salary
  + Allowances (5% of base)
  − Tax Withholding (18% of base)
  − Social/Pension Deductions (6% of base)

If an employee's computed net pay would be negative (deductions exceeding gross), that employee is skipped from the batch and an error message naming them is attached to the batch for review — the batch still generates with everyone else.

Batch Lifecycle

StateWhat it meansWhat you can do
DraftBatch generated, figures computed but nothing posted to the ledgerApprove or Cancel
ApprovedJournal accruals posted (Debit Salary + Allowance Expense, Credit Salaries/Tax/Deductions Payable); batch is lockedDisburse via bank transfer
PaidNet amount deducted from the selected bank account and Salaries Payable clearedExport bank transfer sheet; view only
CancelledA Draft batch that was cancelled before approvalNone — a new batch can be generated for the same period

Only one batch can exist per period (e.g. one for "2026-05") unless the prior one was cancelled — trying to generate a second active batch for the same month is rejected.

Running Payroll

  1. Click Generate Batch and pick the target month — this computes a new Draft batch for every active, salaried employee.
  2. Review the payroll line grid: base salary, allowances, deductions, tax withholding, and net pay per employee.
  3. Click Approve & Post. TotalApp validates the journal entries balance (debits = credits) and posts the accrual — the batch is now locked and cannot be edited.
  4. Select the corporate Bank Clearing Account and click Register Bulk Payment to disburse. TotalApp verifies the account balance covers the total net payout before deducting it and clearing Salaries Payable.

Insufficient Funds Blocks Disbursement

If the selected bank account's balance is below the batch's total net payout, disbursement is rejected outright — there is no partial payout. Top up the account or select a different one before retrying.

Export Bank Transfer Sheet

Click Export Transfer Sheet (available once a batch is Approved or Paid) to download a CSV listing each employee's name, role, department, net pay, and a payroll reference — ready to hand to your bank for a bulk wire transfer.

AI Assistant

Payroll includes an embedded AI Assistant panel that reads the currently selected payroll batch — period, state (draft / approved / paid / cancelled), and every employee line (role, department, base salary, allowances, deductions, tax withholding, net pay) — and answers questions about the batch directly on the screen.

Batch Review

Ask for a headcount, gross/net totals, or a department cost breakdown for the selected pay period.

Variance Detection

Flag employees whose allowances, deductions, or net pay differ unusually from peers in the same role or department.

Compliance Checks

Surface missing or zero tax withholding, negative net pay, or duplicate-looking employee lines before you approve the batch.

Save as Report

Any AI response can be saved as a named report to My Reports with one click — the title is generated automatically from your prompt and the current month.

Open the panel from the vertical AI Assistant tab on the right edge of the screen. It uses the Writer Engine configured in Settings → General → Writer Engine (API or in-browser engines) — no per-screen configuration is required.

Frequently Asked Questions

Why is an employee missing from the payroll batch entirely?
An employee is excluded from batch generation if they are archived, or if their base salary is zero/unset in HR. Unlike a "$0 row" placeholder, Payroll simply skips them — go to HR, set a valid base salary, and generate a new batch (or wait for next month's) to include them.
Can I edit a payroll line after generating the batch?
Only while the batch is in Draft state. Once you click Approve & Post, the batch — including every employee line — is locked permanently; the journal accrual has already been posted against those exact figures. To correct a mistake, cancel the Draft batch before approving and regenerate it, or handle the correction as a separate manual journal entry once posted.
What happens if an employee's deductions exceed their gross pay?
That employee is excluded from the generated batch, and a message identifying them is attached to the batch's error list for you to review. This is a hard interlock — TotalApp will never generate a negative net-pay line. Adjust the employee's salary or deduction rules, then regenerate the batch.
Can I disburse payroll without approving it first?
No. Register Bulk Payment is only available once a batch is in Approved state — a Draft batch has no posted journal accrual yet, so there is nothing valid to disburse against. Approve the batch first, then select the bank clearing account to disburse.
What happens in Financial Accounts when I approve vs. disburse a batch?
Approval posts the accrual: debit Salary Expense and Allowance Expense, credit Salaries Payable, Tax Withholding Payable, and Social/Pension Deductions Payable — no bank account is touched yet. Disbursement (Register Bulk Payment) posts the cash movement: debit Salaries Payable, credit the selected bank/cash account for the net amount. You never create either entry manually.