Payroll setup guide

This page walks through 8 steps to set up Payroll, in the order the in-app Setup assistant recommends. Each step lists what to prepare, the questions to answer first and the screen to use.

In the app, open Settings → Setup assistant: it measures your current state, asks the survey questions below and proposes a change set you approve before it is applied. This page is the read-only version for preparing ahead or doing it by hand.

Payroll setup guide
Payroll setup guide

1. Prepare

Optional

What to have ready before setting up payroll: company time zone and currency, HR data in place, payroll accounting mapping and a cleaned-up salary list.

#TaskHowScreen
1Time zone and base currency confirmedCompany settings: the payroll period and amounts use the company time zone and currency./settings/company
2HR setup doneEmployees, departments, work schedule and public holidays — payroll counts working days from them./hr/employees
3Payroll accounting mapping existsSalary expense, 334, insurance and PIT accounts (Payroll → Accounting mapping → Load defaults)./payroll/accounting-mapping
4Salary list readyBase salary, insurance salary, allowances and number of dependants of each employee.—
Prepare
Prepare

2. Payroll process controls

Required

Choose the rules payroll follows: who may approve and pay a run, which inputs must be approved first, tax and insurance rules, advances and deductions, payslips and accounting. Keeping a default also counts as a decision — confirm it.

Prepare first

  • The company payroll rules agreed with management: who prepares and who approves payroll, whether overtime and salary changes need approval, when employees see payslips.
  • Tax and insurance rules: statutory PIT or company brackets, non-taxable allowances, contractors with flat 10% withholding, minimum days for insurance.

Questions to answer

  • Who prepares the payroll and who approves it? Must they be different people? Is payroll checked against the budget?
  • Do overtime, bonuses/deductions and salary changes need approval before they reach payroll? Is pay linked to KPI or completion evaluations?
  • Do you use the statutory PIT and insurance rules, or company-specific ones? Do you pay contractors on short contracts?
  • Do employees get salary advances, and are they deducted from salary? Are expense claims reimbursed through payroll?
  • When should employees see their payslips: when payroll is approved, when it is paid, or when HR publishes them?
  • Should payroll post to the general ledger, split by department cost centre or by project?
ToggleKeyDefaultEffect
Block creator from approving own payroll run (legacy maker-checker key)people.manager_approval_before_runOnEquivalent to “Separate payroll preparer and approver” — maker-checker applies when EITHER toggle is on: the creator cannot approve the run, and whoever marks it paid must differ from the creator and the approver. It does NOT add a manager approval step; use a workflow for that.
Separate payroll preparer and approverpeople.payroll_enforce_maker_checkerOffThe person who created a payroll run cannot approve it, and the person who marks it paid must differ from the creator and the approver. Also in force when the legacy key “Block creator from approving own payroll run” is on — either toggle enables it.
Budget check when approving payrollpeople.payroll_budget_gateWarnRequires Budget control ON. Warn: approval shows the budget impact and proceeds. Block: approval is refused when a payroll expense line exceeds its available budget.
Block payroll run on unreviewed inputspeople.payroll_block_run_on_unapproved_inputsOnRefuse to create a real payroll run while an enforced input gate is unsatisfied. Payroll or HR approvers can override with an explicit acknowledgement.
Block payroll while leave is pendingpeople.payroll_block_run_on_pending_leaveOffRefuse to create a payroll run while leave in the period is still pending. Works only with “Block run on unapproved inputs”; an approver can override.
Overtime Approval Requiredpeople.overtime_approval_requiredOnRequire manager approval for overtime before it is included in payroll
Adjustments need approvalpeople.payroll_adjustment_approval_requiredOnA payroll adjustment must be approved by someone other than its creator before it is paid.
Salary changes need approvalpeople.salary_change_approval_requiredOnBase salary changes go through a request approved by a second person instead of a direct edit.
KPI period must be closedpeople.payroll_kpi_closure_requiredOffKPI achievement only counts towards pay once the KPI period has an approved closure.
Completion evaluation modepeople.completion_evaluation_modeOff — no completion evaluationOff: the completion_pct / completion_coefficient formula variables and the Completion evaluation page are hidden; a formula that still references them blocks the run. Manual: the evaluator enters a percentage or picks a grade, no KPI prefill. KPI: the value is prefilled from KPI achievement (or a performance review) and finalized by the evaluator.
Completion prefill sourcepeople.completion_prefill_sourceWeighted KPI achievementKPI mode only: what the suggested completion value is derived from before the evaluator finalizes it.
Block payroll run without an approved completion evaluationpeople.completion_eval_block_runOnON (default): an employee whose formula uses completion_pct must have an APPROVED evaluation for the period or the run is refused. OFF: the run proceeds with the configured default completion (payroll_config.completion_default_pct, default 100%), traced as a fallback and listed as a readiness warning.
Tenant PIT overridespeople.pit_tenant_overrideOffUse the personal/dependent deductions and progressive brackets configured in Payroll settings instead of the statutory regime for the tax year. OFF: the statutory values are applied and the settings rows are read-only.
Honor component taxabilitypeople.payroll_honor_component_taxabilityOffEarning components and allowance types flagged non-taxable are paid in gross but excluded from the PIT base (up to the allowance type exempt cap). OFF: every earning is taxable (previous behaviour).
BHXH minimum working days rulepeople.payroll_bhxh_min_days_ruleOffSkip social/health/unemployment insurance (both sides) in a month where the employee worked fewer than the configured minimum working days (default 14, per the Social Insurance Law). Recorded in the payslip calculation trace.
Custom deduction componentspeople.payroll_custom_deduction_componentsOffEvaluate structure components of type Deduction (e.g. union fee, uniform). Taxable=yes means pre-tax (reduces the PIT base). Reserved statutory codes (PIT, BHXH, BHYT, BHTN, BHTNLD, KPCD) are always engine-managed and never evaluated.
Blended mid-month salary changepeople.payroll_blended_salary_changeOffWhen an employee’s salary changes inside the month, base pay is the working-day-weighted blend of each salary segment instead of the latest row only. BHXH base and salary structure follow the segment in force at month end. Segments are recorded in the payslip trace; the “salary changed mid-period” readiness gate becomes informational.
Flat 10% PIT for contractors and short contracts (< 3 months)people.pit_short_contract_flatOffContractors and seasonal/casual staff whose contract covering the month runs less than 3 months are withheld 10% per payment, using the same threshold rule as individual service payments (2M before 01/07/2026, 5M from then; dated by the period end). Off: contractors keep the flat rate without threshold and seasonal/casual stay on the progressive table. Changes tax amounts — review with your accountant before enabling.
Salary advance GL methodpeople.salary_advance_gl_methodVAS — debit 334 at disbursementHow a salary advance is posted when the cash leaves. VAS (Circular 200/133/99): debit 334 immediately — the run’s net already excludes the advance, so no deduction entry is needed. Receivable: debit 1411 when disbursed and credit 1411 back from the payroll run (for charts that book employee advances as a receivable, e.g. IFRS).
Separate disbursement step for salary advancespeople.salary_advance_disburse_stepOffOff: approving a salary advance also records the cash out (one step, the approver is the cashier). On: approval only grants permission; a second person disburses (posts the GL entry) before the advance is deducted from payroll — maker-checker for cash.
Salary advances go through Requestspeople.salary_advance_via_requestsOffOff (default): HR or the employee creates a salary advance directly in Payroll. On: an advance must be a “Salary Advance” request — approved in the Approvals inbox, then disbursed (cash + GL entry) by a second person via Fulfil — and only then is it deducted from payroll. Existing advances are unaffected.
Recover overdue cash advances through payrollpeople.payroll_deduct_overdue_cash_advanceOffA cash advance (GL 141) still unsettled after the grace period (Payroll settings → cash_advance_overdue_days, default 30) is deducted from the payee’s next payslip. The deduction is recorded as an advance return on the case, so a later settlement sees the reduced balance — never recovered twice. Off: 141 is only cleared by settlement or a cash return.
Deduct other receivables (138) through payrollpeople.payroll_deduct_other_receivablesOffReceivables flagged “deduct via payroll” (damage, shortage, overpayment…) are withheld from the payslip by their monthly amount and settled on the receivable when the run is approved. Off: they are settled by hand.
Reimburse expenses with the salaryfinance.expense_reimburse_via_payrollOffAn approved expense claim whose payment method is “payroll” is added to the employee’s net pay (GL 335 → 334) and marked paid when the run is approved, instead of a separate transfer. Off: every reimbursement is paid from Finance.
Publish payslips to employeespeople.payslip_auto_publish_onAutomatically on approvalWhen employees can see their payslips in self-service (and payslip emails go out): automatically on approval (default), automatically when the run is marked paid, or only when HR clicks “Publish” on the run.
Email Payslip on Finalisepeople.payslip_email_on_finaliseOnEmail employees when their payslips are published (the publishing moment is set by “Publish payslips on”).
Calculation detail on payslip PDFspeople.payslip_pdf_include_traceOffEvery payslip PDF/HTML employees download or receive by email carries a “Calculation detail” appendix: formula and inputs per line, PIT bands, insurance basis. HR can always request it on a single payslip with ?detail=1.
GL Postingpeople.gl_posting_enabledOffAutomatically post payroll journal entries to the general ledger
Accrue unused paid leave (IAS 19 / TK 335)people.payroll_accrue_leave_liabilityOffEach approved run posts the CHANGE in the liability for paid leave not yet taken: Σ remaining days × daily base salary, versus the balance accrued by the previous run. Debit the salary expense by cost nature, credit 335. Required under IFRS (short-term compensated absences); optional under Vietnamese standards.
Accrue 13th-month bonus monthly (TK 335)people.payroll_accrue_bonus_13thOffEach approved run accrues base salary × bonus_13th_pct / 12 (Payroll settings, default 100%) to 335 instead of hitting expense in the month the bonus is paid. Map the bonus component to debit 335 on the bonus run so the accrual unwinds.
Payroll expense split by cost centrepeople.payroll_gl_dimension_levelCompany (by cost nature only)Company: one expense line per cost nature (admin / selling / direct labour / factory). Department cost centre: the expense side of the payroll entry is split by each employee’s department cost centre (cost_centers.department_id), so cost-centre budgets and dimension reports see payroll. Liability lines (334, 338x, 3335) stay company-level.
Allocate payroll cost to projectspeople.payroll_project_allocationOffOff: no project attribution. Time logs: each employee’s payroll cost is split across projects in proportion to their APPROVED project hours in the period; hours not logged stay on the department cost centre. Assignment: HR declares a fixed % per employee (effective-dated) on the employee record.
What follows the project allocationpeople.payroll_project_allocation_scopePlus employer insurance + union feeExpense only: salary, allowances, bonus and overtime. With employer contributions: also social insurance employer share and union fee, so the project carries the full loaded labour cost.
Salary Grades (3P — P1)people.salary_grades_enabledOffTurn on the salary grade/band catalog and the salary_grade_amount formula variable (position-based pay). Formulas referencing the variable while this is off fail validation instead of paying 0.
Competency-based Pay (3P — P2)people.competency_pay_linkOffTurn on the competency band → pay coefficient ladder and the skill_coefficient formula variable. Band = weighted average of assessed levels over the competencies the position expects.
Project & Company Performance Pay (3P — P3/P4)people.project_performance_payOffTurn on the project_factor variable (approved timesheet effort % × finalized project scorecards; unscored projects count as neutral 1.0) and company_result_pct (company BSC overall score). Scorecards are managed via Performance → Scorecards API; finalize requires performance:finalize.
Payroll process controls
Payroll process controls

3. Payroll people

Required

Choose who prepares payroll, who approves salary changes and adjustments, and who approves and pays the monthly payroll. The person who prepares a run should not be the one who approves it.

Prepare first

  • The list of payroll staff, HR approvers and the finance people who approve and pay payroll — each must already be invited as a user.

Questions to answer

  • Who prepares payroll, and who approves salary changes and adjustments?
  • Who approves the monthly payroll and who marks it paid?
Role templateKeyFor
Payroll Officerpayroll_officerPayroll officer: prepares runs, salaries and payslips, owns payroll settings
Payroll Specialistpayroll_specialistPayroll specialist: helps prepare runs and inputs
HR Managerhr_managerHR manager: approves salary changes and adjustments
Chief Human Resources OfficerchroHR director: heads HR company-wide
Finance Managerfinance_managerFinance manager: approves and pays payroll runs
Chief Financial OfficercfoCFO: approves payroll runs and the budget
Payroll people
Payroll people

4. Payroll lists

Optional

The reasons used when correcting a payroll that is already approved (back pay, recovery of over-payment).

Prepare first

  • The reasons the company uses for retroactive pay corrections, in Vietnamese and English.

Questions to answer

  • For which reasons do you correct a payroll that is already approved?

Lookups to review (Settings → Lookups):

  • Payroll Retro Adjustment Reasons (payroll_retro_reasons)
Payroll lists
Payroll lists

5. Approval workflows

Optional · After step: Payroll process controls, Payroll people

Payroll runs always need approval; salary change requests too when direct salary edits are off. Without an active workflow the document waits for someone holding the approve permission.

Questions to answer

  • Who approves the monthly payroll: the finance manager only, or HR then finance?
  • Must salary changes, payroll adjustment requests and penalties go through an approval workflow?

Approval workflows to enable (Workflow → Template library) — see Workflow templates:

  • payroll_run
  • salary_change_request
  • payroll_adjustment_request
  • payroll_penalty
Approval workflows
Approval workflows

6. Salary data

Optional

Create the salary structures and set the current salary of every employee before the first run.

Prepare first

  • Enter in this order: salary structures (components and formulas) → salary of each employee → dependants. Each employee’s salary points to a structure.

Questions to answer

  • Where is the salary list kept today, and how many salary structures (office, factory, sales…) do you use?
#TaskHowScreen
1Salary structures createdEarning, deduction and insurance components (Payroll → Structures), or start from a template./payroll/structures
2Every employee has a salaryCurrent salary of each employee (Payroll → Employees)./payroll/employees
Salary data
Salary data

7. Opening balances

Optional

Advances and receivables still open on the first payroll month are entered so payroll deducts them.

Prepare first

  • Agree the first payroll month in XBuddy; earlier months stay in the old system.
#TaskHowScreen
1Open salary advances enteredAdvances still being repaid (HR → Employees → employee → Employment → Advances)./hr/employees
2Other receivables enteredEmployee receivables deducted through payroll (Payroll → Other receivables)./payroll/other-receivables
3Year-to-date PIT keptFor a mid-year start: year-to-date taxable income and PIT withheld per employee, for the annual settlement.—
Opening balances
Opening balances

8. Go-live check

Optional

Run one month for one department with the key user and compare with the old payroll before go-live.

Prepare first

  • Use one real department and compare the result with last month’s payroll from the old system.
#TaskHowScreen
1Simulation matchesGross, insurance, PIT and net match the old payroll./payroll/simulation
2Run approved by another personCreate the run, submit it, and have another person approve it./payroll/runs
3Payslips publishedPublished at the agreed time; an employee sees only their own payslip in My HR./payroll/payslips
4Journals balancedIf payroll posts to the ledger: the approval and payment journals are created and balanced./payroll/accounting-mapping
Go-live check
Go-live check

Next

See the feature pages of this app in the left menu, or the setup guides of every app.