Hopshift
Payroll

Compliance

Thailand government compliance documents: PND1 withholding tax and SSO 1-10 social security filings

Hopshift automatically generates all required Thailand government compliance documents every time you finalize a payroll run. You do not need to use external software, manually build files, or copy data from spreadsheets.

Compliance document generation is a core part of payroll finalization. If any document fails to generate, the finalization is rolled back entirely and the run remains in DRAFT. All documents must succeed before a run is marked FINALIZED.


Documents Generated on Finalization

Every finalized Thailand payroll run produces seven documents:

DocumentFormatSubmitted toDeadline
PND1Pipe-delimited .txtRevenue Department (RD) e-filing portal15th of following month (e-filing)
PND1 PDFPDFKeep for employer recordsn/a
SSO 1-10CSV (UTF-8 BOM)Keep for employer records (opens in Excel)n/a
SSO 1-10 PDFPDFKeep for employer recordsn/a
SSO e-Service Upload FileFixed-width .txtSocial Security Office (SSO) e-Service portal15th of following month
Payroll CSVCSVInternal usen/a
Payslips ZIPZIPDistribute to employeesn/a

Documents are stored against the run and can be re-downloaded at any time from the run detail page.

The SSO 1-10 CSV is for your records and Excel; upload the SSO e-Service Upload File to the SSO portal.


Employee Compliance Requirements

Why These Fields Are Mandatory

PND1 and SSO 1-10 filings carry the employee's national ID number on every detail row, and the Thai title (นาย / นาง / นางสาว) is derived from gender. Without these two fields, Hopshift cannot generate valid government files.

Required FieldUsed inWhere to set it
National ID number (13 digits, not a placeholder)PND1, SSO 1-10Employee profile, Personal page (Personal Information section)
GenderPND1 (title field: นาย / นาง / นางสาว)Employee profile, Personal page (Personal Information section)

Only National ID and Gender are required to finalize a run; Date of birth is not. It is not written to PND1 or SSO 1-10.

How the Compliance Gate Works

The compliance check runs at two points:

  1. Payroll wizard preview: Before a company run is created, Hopshift checks every employee. If anyone is missing a National ID, the preview shows a red warning: "N employee(s) are missing a National ID. Update their profiles before finalizing; they will be excluded from SSO documents." The Create Payroll Run button is disabled while that warning is present.

  2. Publishing: A second check runs when you publish (or click Finalize on the company run page). If any employee in the run is still missing National ID or gender (for example, if data was deleted after the run was created), finalization is blocked with a specific error identifying the affected employees.

How to Fix Missing Compliance Data

  1. In the payroll wizard (or from the employee list), click the flagged employee's name to open their profile.
  2. Open the Personal page and find the Personal Information section.
  3. Enter the missing fields: National ID and Gender.
  4. Save the profile.
  5. Return to the payroll wizard: the compliance check re-runs automatically and the warning should clear.

Updating an employee profile after a run has been finalized does not automatically update the compliance documents. You must use the Regenerate button in Generated Documents on the run detail page to rebuild the files with the corrected data.


PND1: Monthly Withholding Tax Return

What is PND1?

PND1 (ภ.ง.ด.1: Por Ngor Dor 1) is the monthly withholding tax return that employers must file with the Revenue Department (กรมสรรพากร) for all employment income payments. It covers income under Section 40(1) (regular salary and wages) and Section 40(2) (bonus and other employment benefits).

Every month you pay employees, you must:

  1. Withhold income tax from each employee's pay
  2. File the PND1 return declaring the amounts withheld
  3. Remit the withheld tax to the Revenue Department

Hopshift calculates the withholding amounts and generates the filing: you only need to download it and upload it to the RD portal.

Filing Deadlines

MethodDeadline
Paper filing (in person)7th of the following month
E-filing via RD portal15th of the following month

E-filing gives you an extra 8 days compared to paper filing. Hopshift generates the PND1 in the exact format required for e-filing, so there is no reason to file on paper.

The PND1 e-Filing Format

The PND1 file Hopshift generates is a plain text file in the Revenue Department's e-filing layout: one line per employee, fields separated by |, Thai text in the TIS-620 encoding the portal expects. There is no header row; the employer tax ID, the employee's ID, name and address, the tax month and BE year, the income and the tax withheld are all on each line.

Do not open, edit, or re-save the PND1 .txt or the SSO e-Service .txt before uploading; the portals reject files that lose their TIS-620 encoding or line endings.

Filename pattern:

PND1_{TaxID13}_{Branch6}_{YearBE4}_{Month2}_{FormType2}_{Seq2}.txt

Example: PND1_1234567890123_000000_2569_02_01_01.txt

How to Download and Submit PND1

  1. Open the finalized payroll run from the company Payroll page.
  2. In the Generated Documents panel, click Download on PND1: Withholding Tax Return (TXT).
  3. Save the .txt file to your computer.
  4. Log in to the Revenue Department e-filing portal at efiling.rd.go.th.
  5. Navigate to ภ.ง.ด.1 and use the upload/import function.
  6. Upload the .txt file. The portal will validate and confirm acceptance.
  7. Remit the total WHT amount by the deadline.

You can also download PND1 PDF for a printable, human-readable version of the same data: useful for internal records or accountant review.


SSO 1-10: Monthly Social Security Contributions

What is SSO 1-10?

SSO 1-10 (แบบ สปส. 1-10) is the monthly contribution schedule filed with the Social Security Office (สำนักงานประกันสังคม). It declares each insured employee's wages and the corresponding contribution amounts for both the employee and employer.

Both the employee and employer contribute 5% of the employee's gross wage each month, subject to a ceiling and floor. Hopshift deducts the employee's share from their pay and calculates the employer's matching contribution separately.

Filing Deadline

SSO 1-10 is due by the 15th of the following month. Late filing may result in a surcharge on top of the contribution amount.

Contribution Rates and Limits

RateWage Ceiling (2026+)Wage Ceiling (before 2026)Wage Floor
Employee contribution5%THB 17,500/monthTHB 15,000/monthTHB 1,650/month
Employer contribution5%THB 17,500/monthTHB 15,000/monthTHB 1,650/month

Calculation logic:

contribution_base = max(actual_wage, 1,650)       // apply floor
contribution_base = min(contribution_base, 17,500) // apply ceiling (2026+)

employee_contribution = contribution_base × 5%
employer_contribution = contribution_base × 5%

Examples for 2026:

Monthly Gross WageContribution BaseEmployee (5%)Employer (5%)Combined
THB 9,000THB 9,000THB 450.00THB 450.00THB 900.00
THB 17,500THB 17,500THB 875.00THB 875.00THB 1,750.00
THB 25,000THB 17,500 (capped)THB 875.00THB 875.00THB 1,750.00
THB 1,200THB 1,650 (floored)THB 82.50THB 82.50THB 165.00

The ceiling increased from THB 15,000 to THB 17,500 effective 2026. Hopshift automatically applies the correct ceiling based on the payroll run year: you do not need to update any settings.

The SSO 1-10 CSV Format

The SSO 1-10 CSV Hopshift generates is for your records: it has a UTF-8 BOM prefix (\uFEFF) so it opens correctly in Thai-language Excel installations without garbling Thai characters. The SSO does not accept this CSV directly; the file to upload is the SSO e-Service Upload File (a fixed-width .txt in the official "Format เงินสมทบ 135" layout), which is generated alongside it.

Summary (header) block fields:

FieldExampleDescription
Employer SSO account number123456789010-digit SSO account
Branch code000000Branch identifier (000000 = head office)
Company nameบริษัท ตัวอย่าง จำกัดRegistered company name
Contribution period02/2569Month/BE year
Insured person count12Number of employee rows
Total wages480000.00Sum of all actual wages
Total employee contributions10500.00Sum of employee 5% shares
Total employer contributions10500.00Sum of employer 5% shares
Surcharge0.00Late-payment surcharge (0 if filed on time)
Grand total21000.00Employee + employer + surcharge

Employee detail row fields:

FieldExampleDescription
Sequence1Row number starting from 1
Citizen ID110060012345613-digit national ID
Title (Thai)นายนาย / นาง / นางสาว
Full nameสมชาย ใจดีEmployee full name
Actual wage40000.00Gross wage for the period
Contribution base17500.00Wage after applying floor/ceiling
Employee contribution875.00Employee's 5% share
Employer contribution875.00Employer's 5% share
Remarks``Optional: e.g., ลาออก for resigned employees

How to Download and Submit SSO 1-10

  1. Open the finalized payroll run from the company Payroll page.
  2. In the Generated Documents panel, click Download on SSO e-Service Upload File.
  3. Save the .txt file to your computer without opening it.
  4. Log in to the Social Security Office portal at www.sso.go.th or ssoinscl.sso.go.th.
  5. Navigate to the monthly contribution upload section.
  6. Upload the .txt file. The portal will validate and confirm the import.
  7. Pay the total contribution amount (employee + employer) by the 15th.

You can also download SSO 1-10: Contribution Report (CSV) for Excel and SSO 1-10: Contribution Report (PDF) for a human-readable version suitable for accountant review or physical records.


Buddhist Era Year Conversion

All Thai government documents use Buddhist Era (BE) years. The BE year is calculated by adding 543 to the Gregorian year. Hopshift handles this conversion automatically: you will see BE years inside the documents and in filenames.

Gregorian YearBuddhist Era Year
20242567
20252568
20262569
20272570
20282571

Dates in the PND1 file are formatted as DDMMYYYY using the BE year. For example, 28 February 2026 (Gregorian) becomes 28022569 in the PND1 file.


Regenerating Documents

If you need to regenerate compliance documents after a run has been finalized (for example, because you corrected an employee's name, address, or national ID), use the Regenerate button in the Generated Documents panel.

When to Regenerate

  • An employee's name was misspelled on their profile when the run was finalized
  • An employee's national ID was entered incorrectly
  • An employee's address was incomplete or wrong
  • A technical error occurred during the original generation

How to Regenerate

  1. Navigate to Payroll and open the finalized run.
  2. Scroll to the Generated Documents panel and click Regenerate. It runs immediately; there is no confirmation dialog.
  3. Hopshift re-runs every document generator using the current state of all employee profiles.
  4. The new documents overwrite the previously stored versions.
  5. The message "Documents regenerated successfully" appears when generation is complete.

Regenerating documents permanently overwrites the previously stored files. If you need the original versions, download them before regenerating. Previous document versions are not recoverable.

Regeneration does not change any payroll figures (salary amounts, WHT amounts, SSO contributions). It only rebuilds the document files. If you need to correct a payroll amount, regenerating will not help: reopen the run from Group Payroll ( menu > Reopen run…), fix the figures and publish again.

Regeneration Checklist

Before regenerating, verify:

  • You have downloaded and archived any documents you may need to reference later
  • The employee profile data is now correct (name, national ID, gender, address)
  • You understand that all seven documents will be rebuilt simultaneously

Annual and Ad-hoc Forms

Beyond the monthly documents, the company Payroll > Compliance tab (titled Compliance & Filing) lets you generate forms for any month or year without a payroll run:

FormWhat it is
PND1: Monthly Withholding Tax ReturnAd-hoc PND1 for a chosen month
PND1 Kor: Annual Withholding Tax SummaryYear-end summary of all PND1 filings, due by February of the following year
50 Tawi: Withholding Tax CertificateThe annual withholding certificate issued to each employee
SSO 1-10: Monthly Social Security Contribution ReportAd-hoc SSO 1-10 for a chosen month

Employee tax allowance declarations, which feed the withholding calculation, are managed under Tax Declarations in the group sidebar (or on each employee's Tax declaration page).


Common Issues

Missing National ID or gender blocking publishing

Cause: One or more employees in the run are missing National ID or gender on their profile.

Fix: Click the employee's name in the error message to go directly to their profile. Fill in both fields and save. Return to the payroll run and attempt finalization again.

PND1 file rejected by the RD portal

Possible causes:

  • The PND1 Tax ID in your company's Payroll Settings is incorrect
  • The file was opened or edited after download
  • The portal is experiencing issues

Fix: Check the PND1 Tax ID and SSO Registration Number on the company's Payroll > Settings page (the branch code is always 000000, head office). Download a fresh copy of the PND1 file (do not use a previously opened version) and re-upload.

SSO CSV shows garbled characters in Excel

Cause: The file was opened without recognizing the UTF-8 BOM, or Excel did not detect the encoding correctly on your machine.

Fix: The file has a UTF-8 BOM prefix which should cause Excel to open it correctly. If characters still appear garbled, use the Excel "Get Data from Text/CSV" import wizard and explicitly select UTF-8 encoding. For portal upload, the encoding is handled automatically and this is not an issue.

Documents generated with old employee data

Cause: Employee profile data was updated after the run was finalized.

Fix: Use Regenerate in the Generated Documents panel on the run detail page to rebuild all documents with the current profile data.

On this page