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.

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, Local CLI, 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.