Hopshift
Admin Guide

Payroll

Run monthly payroll, manage earnings and deductions, generate payslips and compliance documents

Hopshift Payroll handles your full monthly payroll cycle: from calculating earnings and deductions to generating government compliance documents and individual payslips. All Thailand compliance filings (PND1 and SSO 1-10) are created automatically when you finalize a run; there is nothing to manually build or export.

Payroll is currently available for Thailand only. All monetary amounts are in Thai Baht (THB). Buddhist Era (BE) dates are used in all government filings.


The Payroll Cycle

Hopshift payroll runs on a monthly cycle. A typical month looks like this:

WhenWhat you do
Start of monthEnsure all employee profiles are complete (especially compliance fields)
Throughout monthEmployees clock in/out; shifts are assigned
End of monthCreate a new payroll run via the Run Payroll wizard
After creationReview and edit the payroll spreadsheet
When readyFinalize the run: documents are generated automatically
By 7th of next monthSubmit PND1 to the Revenue Department
By 15th of next monthSubmit SSO 1-10 to the Social Security Office

Before You Start: Compliance Requirements

For Thailand payroll, every employee included in a run must have three fields on their profile before the run can be created or finalized:

Required FieldWhere to set it
National ID numberEmployee profile → Personal information
GenderEmployee profile → Personal information
Date of birthEmployee profile → Personal information

These fields are mandatory because they are included verbatim in the PND1 and SSO 1-10 government filings. An employee without all three fields will show a red Missing compliance data badge in the payroll wizard preview, and the Create Run button will be disabled until every included employee passes the check.

Do not skip or defer entering compliance data. If an employee is missing these fields when you try to run payroll, you must update their profile and return to the wizard before you can proceed. There is no way to bypass this requirement.


Running Payroll: Step by Step

Step 1: Open the Payroll Wizard

Navigate to Payroll in the left sidebar and click Run Payroll. This opens the three-step wizard.

Step 2: Select the Pay Period

On the first screen, configure the run:

FieldDescription
Pay periodThe month and year being paid (e.g., February 2026)
Hours sourceChoose Clocked timesheets (actual clock-in/clock-out data) or Scheduled shifts (planned shift hours)
EmployeesSelect which employees to include: defaults to all active employees

Click Next to proceed to the preview.

Step 3: Review the Compliance Preview

Before Hopshift creates the run, it shows a preview of every included employee and their compliance status:

  • A green checkmark means the employee is ready.
  • A red Missing compliance data badge means the employee is missing National ID, gender, or date of birth. The employee's name links directly to their profile so you can fix the data without leaving the wizard.

The Create Run button remains disabled as long as any employee has a missing_compliance error. Fix all flagged employees, then return to this screen.

Step 4: Create the Run

Once all employees pass the compliance check, click Create Run. Hopshift creates the payroll run in DRAFT status and opens the payroll spreadsheet.


The Payroll Spreadsheet

The spreadsheet is where you review and adjust each employee's pay for the period. Each row is one employee. The run stays editable as long as it is in DRAFT status.

Column Reference

ColumnDescription
EmployeeEmployee name and ID
Pay TypeSALARY (fixed monthly) or HOURLY (rate × hours). Editable in DRAFT.
Planned HoursHours from the employee's assigned shifts for the period
Clocked HoursActual hours clocked, shown as Xh + Yh OT (regular + overtime)
Hourly RatePer-hour rate used for calculations. Defaults to the employee's configured rate. Editable in DRAFT.
Base PayCalculated base salary or hourly earnings for the period
AllowancesAny configured earning categories (housing, transport, meals, etc.)
OvertimeOvertime pay, calculated from OT hours and the applicable OT rate
DeductionsTax withholding (WHT) and any other configured deductions
Net PayFinal take-home amount: Base Pay + Allowances + Overtime − Deductions

Cells with a white background are editable. Click any editable cell to type a new value. Changes auto-save.

Validation Indicators

The spreadsheet highlights rows that need attention:

IndicatorMeaningBlocks finalization?
Red row: Negative net payDeductions exceed gross earningsYes
Red row: Zero deductions (TH)Thai employee has positive earnings but zero withholding tax calculatedYes
Amber row: Zero earningsNo earnings recorded this period (e.g., commission-only employee)No (warning only)

Resolve all red rows before attempting to finalize.


Payroll Items: Earnings and Deductions

Base Salary

For salaried employees (SALARY pay type), base pay equals the employee's monthly salary configured on their profile. For hourly employees (HOURLY), it is Hourly Rate × Regular Hours.

Allowances

Allowances are additional earnings added on top of base pay. Common examples:

Allowance TypeExample
Housing allowanceFixed monthly supplement for accommodation
Transport allowanceFlat or per-day transport reimbursement
Meal allowanceDaily or monthly meal subsidy
Position allowanceRole-based supplement (e.g., supervisory pay)

Allowances are configured per employee on their profile and carried into each payroll run automatically. You can adjust individual allowance amounts in the spreadsheet for a specific run.

Overtime

Overtime hours are drawn from the clocked timesheet data (or manual entry). The overtime rate is configured in your company's payroll settings. Thai labor law requires overtime pay at a minimum of 1.5× the regular hourly rate for working beyond 8 hours/day or 48 hours/week.

Deductions

DeductionHow it is calculated
Withholding Tax (WHT)Calculated per Thailand progressive tax rates on employment income (Section 40(1)/(2)): see Tax Calculation below
Social Security (SSO)Employee's 5% SSO contribution: see SSO Calculation below
Other deductionsAny custom deductions configured on the employee profile (e.g., loan repayments, equipment rental)

Tax Calculation (Thailand)

Thai income tax on employment income is withheld monthly under Section 40(1) and 40(2) of the Revenue Code and reported on the PND1 form.

How Monthly WHT is Calculated

The withholding tax for each employee is calculated by:

  1. Annualizing the employee's monthly income (multiplying by 12)
  2. Deducting the standard employment expense deduction (50% of income, capped at THB 100,000)
  3. Deducting the personal allowance (THB 60,000) and any other applicable allowances
  4. Applying Thailand's progressive tax rates to the net taxable income
  5. Dividing the annual tax by 12 to get the monthly withholding amount

Progressive Tax Rate Table

Net Taxable Income (Annual, THB)Tax Rate
0 – 150,0000% (exempt)
150,001 – 300,0005%
300,001 – 500,00010%
500,001 – 750,00015%
750,001 – 1,000,00020%
1,000,001 – 2,000,00025%
2,000,001 – 5,000,00030%
Over 5,000,00035%

The calculated WHT appears in the Deductions column of the payroll spreadsheet. For Thai employees, if WHT calculates as zero despite positive earnings, the spreadsheet flags the row in red and blocks finalization. This is a safety check to ensure no employee is accidentally filed with zero tax.

Income Types

Income TypeCodeCovers
Salary, wages, regular pay40(1)Regular monthly salary, allowances
Bonus, other employment income40(2)Annual bonuses, special payments

SSO (Social Security) Calculation

Thailand's Social Security contributions are governed by the Social Security Act and reported monthly on the SSO 1-10 form.

Contribution Rules

Both the employee and employer contribute 5% of the employee's gross wage each month, subject to a ceiling and floor:

Parameter2026 and laterBefore 2026
Rate (each side)5%5%
Monthly wage ceilingTHB 17,500THB 15,000
Monthly wage floorTHB 1,650THB 1,650

The contribution base is the employee's actual gross wage, clamped to the floor and ceiling:

contribution_base = clamp(actual_wage, 1,650, 17,500)   // for 2026+
employee_contrib  = contribution_base × 5%
employer_contrib  = contribution_base × 5%

Examples

Actual Monthly WageContribution Base (2026)Employee ContribEmployer Contrib
THB 10,000THB 10,000THB 500.00THB 500.00
THB 20,000THB 17,500 (capped)THB 875.00THB 875.00
THB 1,200THB 1,650 (floored)THB 82.50THB 82.50
THB 17,500THB 17,500THB 875.00THB 875.00

The employee SSO contribution is deducted from the employee's pay and appears in the Deductions column. The employer's matching contribution is a separate cost to your business and is shown in the SSO 1-10 report but does not reduce the employee's net pay.


Finalizing a Run

When the spreadsheet looks correct and all validation errors are resolved, click Finalize Payroll.

Pre-Finalization Check

A summary dialog appears listing:

  • Errors (shown in red): Must be resolved before proceeding. These include negative net pay, zero WHT on Thai employees, or any employee still missing compliance data.
  • Warnings (shown in amber): Informational only. You can finalize with warnings present.

Review the summary carefully. When you are satisfied, click Confirm & Finalize.

What Happens on Finalization

Finalizing a run triggers the following sequence:

  1. The run status changes from DRAFT to FINALIZED.
  2. The spreadsheet becomes read-only (no further edits).
  3. The following documents are generated and stored against the run:
DocumentFormatPurpose
PND1Pipe-delimited .txtRevenue Department e-filing: monthly WHT for Section 40(1)/(2) employment income
PND1 PDFPDFHuman-readable PND1 form for employer records
SSO 1-10 CSVCSV (UTF-8 BOM)Social Security Office monthly contribution schedule
SSO 1-10 PDFPDFHuman-readable SSO 1-10 form
Payroll CSVCSVFull payroll data export (all employees)
Payslips ZIPZIPIndividual payslip PDF for each employee

Document generation is all-or-nothing. If any of the six documents fails to generate, the entire finalization is rolled back and the run remains in DRAFT. An error message will identify which document failed. Fix the underlying issue and attempt finalization again.


Downloading Documents

After finalization, a Documents section appears at the top of the run detail page. Click any item to download it immediately.

Download ButtonWhat You Get
PND1 (e-filing).txt file for upload to the RD e-filing portal
PND1 PDFPrintable PND1 form
SSO 1-10 CSV.csv file for upload to the SSO portal
SSO 1-10 PDFPrintable SSO 1-10 form
Payroll CSVFull payroll data in spreadsheet-compatible format
Payslips ZIPZIP archive containing one PDF payslip per employee

All documents are stored indefinitely against the run and can be re-downloaded at any time from the run history.


Employee Payslips

What's on a Payslip

Each employee's payslip PDF contains:

  • Company name and logo
  • Pay period
  • Employee name, ID, and position
  • Earnings breakdown (base salary, allowances, overtime)
  • Deductions breakdown (withholding tax, SSO contribution)
  • Net pay

How Employees View Their Payslips

Employees can log in to the Hopshift employee portal and navigate to My Pay to view and download their payslips for any finalized pay period. Payslips are available to employees as soon as the run is finalized: no additional distribution step is required.

As an admin, you can also download the full Payslips ZIP from the run detail page and distribute the PDFs manually if needed.


Editing and Correcting Payroll

Editing Before Finalization

While a run is in DRAFT status, all editable cells in the spreadsheet can be modified freely. Changes take effect immediately. There is no save button: edits are auto-saved.

After Finalization: Regenerating Documents

A finalized run's figures cannot be changed. If you discover a data entry error after finalization (for example, an incorrect allowance amount or a missing employee), you have two options:

Option A: Correct employee data and regenerate documents

If the underlying payroll figures are correct but an employee's profile data (such as name or address) was wrong when the run was finalized:

  1. Go to the employee's profile and correct the data.
  2. Return to the payroll run detail page.
  3. Click Regenerate Documents.
  4. Hopshift re-runs all six document generators using the current employee data and overwrites the stored files.

Option B: Create a new run

If the payroll figures themselves are incorrect, you will need to create a supplementary or corrective run for the affected period. Contact your payroll administrator to determine the appropriate adjustment approach.

Regenerating documents overwrites all previously stored files for that run. The previous versions are not recoverable. Download and archive any documents you need to keep before regenerating.


Payroll History

All finalized payroll runs are listed on the Payroll dashboard, ordered by date descending. For each run you can see:

  • Pay period
  • Total employees
  • Total gross pay
  • Total net pay
  • Status (DRAFT or FINALIZED)
  • Finalized date

Click any run to open its detail page with the full spreadsheet, all documents, and the audit trail of who created and finalized the run.


Buddhist Era Dates

All Thai government documents use Buddhist Era (BE) years. The BE year is the Gregorian year plus 543:

GregorianBuddhist Era
20252568
20262569
20272570

Hopshift handles this conversion automatically. You will see BE years in the PND1 file header, SSO 1-10 headers, and on payslip dates for Thai payrolls. You do not need to convert dates yourself.


Frequently Asked Questions

Can I run payroll for a partial month?

Yes. When creating the run, you can adjust which employees are included. For employees who joined or left mid-month, you can manually adjust their base salary in the spreadsheet to reflect the correct pro-rated amount.

What if an employee has no hours clocked?

Salaried employees are paid their full monthly salary regardless of hours clocked (unless you manually adjust their base pay). Hourly employees will show zero base pay if no hours are recorded: the spreadsheet will flag this row in amber as a warning.

Can I add an employee to a run after it's created?

No. The employee list is locked when the run is created. If you need to add an employee, you will need to create a separate run for that employee or delete the current DRAFT run and create a new one with the correct employee list.

What is the e-filing deadline for PND1?

The standard filing deadline is the 7th of the following month for paper filing, and the 15th of the following month for e-filing via the RD portal. For example, January 2026 payroll → PND1 due by 7 February (paper) or 15 February (e-filing).

What is the deadline for SSO 1-10?

The SSO 1-10 monthly contribution schedule is due by the 15th of the following month.

Why is my employee's WHT zero?

If an employee's annual projected income falls below the personal exemption threshold (THB 150,000 net of standard deductions), their WHT will be zero. However, Hopshift still blocks finalization if a Thai employee shows zero WHT with positive earnings: this prevents accidental non-filing. If you believe zero WHT is correct for an employee, verify their income level and allowances, and contact support if the block persists unexpectedly.

On this page