Tax & compliance¶
4Geeks Payroll applies the rates of one country per workspace: the country you choose in Settings → Business. This page explains the proposed packs, the client signature that unlocks payment and the checklist the console verifies.
In short
For: payroll administrators and the person who signs the company’s rates.
Time: 10 minutes to review and sign; rate edits take a minute.
Result: payroll runs in the right country, with the rates the company signed.
The compliance country¶
The console takes the country from Settings → Business (company_profiles.country) and mirrors it into the payroll settings. There is no separate country selector in Tax & Compliance: what you see is the compliance country.
- Owner and workspace admins are the only ones who can change it.
- 18 LATAM countries are supported: Argentina, Bolivia, Brazil, Chile, Colombia, Costa Rica, Dominican Republic, Ecuador, Guatemala, Honduras, Mexico, Nicaragua, Panama, Peru, Paraguay, El Salvador, Uruguay and Venezuela.
- A non-LATAM country leaves the compliance country empty. Payroll then shows the “set the business country” banner and cannot apply rates.
- New employees inherit the country from the database trigger, including CSV imports and API writes. Existing employees are not rewritten silently: the console shows the mismatch and offers Align N employees, an explicit and audited action.
- Changing the country is blocked while the workspace still has employees, tax rows, income-tax tables or draft runs of the previous country (
PAYROLL_COMPLIANCE_COUNTRY_LOCKED, with the counts in the error detail). Align the employees, remove the previous country’s configuration (Settings → Payroll → Tax & Compliance shows the dormant rows) and save again.
The proposed packs¶
Each country ships a proposed general-regime pack. The rates are a starting point the company reviews, edits if needed and signs; 4Geeks does not certify them.
| Country | Employee | Employer | Income tax table |
|---|---|---|---|
| Argentina | 17.00% | 25.11% | 2025 |
| Bolivia | 11.71% | 6.71% | 2025 (RC-IVA) |
| Brazil | 7.5–14% (INSS, progressive) | 35.80% | 2025 |
| Chile | 20.20% | 10.30% | 2025 |
| Colombia | 8.00% | 30.02% | 2025 |
| Costa Rica | 10.83% | 26.83% | 2026 (Hacienda) |
| Dominican Republic | 5.91% | 16.34% | 2025 |
| Ecuador | 7.20% | 22.48% | 2025 |
| Guatemala | 4.83% | 14.67% | 2025 |
| Honduras | 3.50% | 9.50% | 2025 |
| Mexico | 2.295% | 18.275% | 2025 |
| Nicaragua | 7.00% | 23.50% | 2025 |
| Panama | 9.00% | 18.35% | 2025 |
| Peru | 12.50% | 10.15% | 2025 |
| Paraguay | 9.00% | 23.80% | 2025 |
| El Salvador | 10.25% | 9.75% | 2025 |
| Uruguay | 18.00% | 14.50% | 2025 |
| Venezuela | 5.50% | 15.00% | Manual |
Each pack expands into individual line items (for example CCSS/IVM in Costa Rica, IMSS/INFONAVIT in Mexico, AFP/ISAPRE in Chile, INSS/FGTS in Brazil) that you can review, edit or delete.
Caps and progressive contributions
A row can have a contribution cap (max_base): gross above it does not contribute (Mexico, Chile, Panama, Honduras, El Salvador, Dominican Republic). Brazil’s employee INSS is progressive: each rate applies to its slice. Both fields are optional and stay empty for Costa Rica, so its calculation does not change.
Income tax¶
The console withholds salary income tax when the country has a table in force:
- 17 bundled tables (Argentina, Bolivia, Brazil, Chile, Colombia, Costa Rica, Dominican Republic, Ecuador, Guatemala, Honduras, Mexico, Nicaragua, Panama, Peru, Paraguay, El Salvador, Uruguay). Venezuela has no proposed table: add your own and sign it.
- Base after social security: for most countries the taxable base is the gross minus the employee’s contributions of the same payment. Costa Rica keeps the gross base.
- Family amounts: they can be a tax credit on the computed tax (Costa Rica) or a deduction from the taxable base (Argentina).
- Currency: the table only applies when its currency matches the payroll currency. The screen warns when they differ (for example a Costa Rica workspace paying in USD) and the tax is not withheld until they match.
Edit or add a table in Tax & Compliance → Salary income tax. New versions keep history: a table applies from its effective date and never rewrites previous payslips.
Install or restore the pack¶
When you set or change the business country, the console installs the proposed pack automatically: social-security rows, the income-tax table and the holidays of the year. It never overwrites rows that already exist for that country.
If you edited the rows and want the proposal back, use Restore proposed rates. The pack version, its public sources and the reference minimum wage are shown on the country card.
The client signs the rates¶
Payment is locked until the company signs the rates it is going to use.
- Click Review and sign.
- Check every rate, cap, progressive bracket and the income-tax table.
- Type the full name of the person signing, add an optional note and confirm the responsibility statement.
- The console stores the signature with the server-computed hash of the exact rows, the name, the user, the email, the role and the date. It also appears in the audit trail.
If any rate or table changes afterwards, the signature becomes stale and the console asks for a new one. The hash is calculated by the database (payroll_compliance_config_hash), never by the browser, so the signature covers exactly what payroll uses.
Payment gate
A run can be a draft or be submitted for approval without a signature, but it cannot be approved, moved to Processing/Completed or paid — and a payslip cannot be marked Paid — until the signature matches the current rates (PAYROLL_COMPLIANCE_NOT_SIGNED).
The compliance checklist¶
The checklist is computed from the workspace data, not hardcoded. It flags:
- the compliance country missing or unsupported;
- the pack not installed, or with no employee/employer rows;
- no income-tax table for the country;
- the income-tax table currency not matching the payroll currency;
- active employees from another country (with the Align action);
- holidays of the year not loaded;
- the rates not signed or the signature stale.
Errors block payment; warnings are recommendations. Fix them before running payroll.
Electronic filings¶
The same screen lists the periodic filings of the country: due dates, status, agency reference and acknowledgement. Costa Rica’s CCSS SICERE file is generated by the console (records 25, 35 and 15) and INS has an API connector. See Electronic filings for the step-by-step and the country-by-country channel.
Troubleshooting¶
| Symptom | Cause and fix |
|---|---|
PAYROLL_COMPLIANCE_COUNTRY_LOCKED | Employees, tax rows, income-tax tables or draft runs of the previous country remain. Align the employees and remove the previous configuration, then save the country again. |
PAYROLL_COMPLIANCE_NOT_SIGNED | The rates were never signed, or they changed after the signature. Open Review and sign and sign again. |
PAYROLL_COMPLIANCE_COUNTRY_FORBIDDEN | Only the owner and workspace admins can change the country. |
| The country card says “not configured” | The business country is empty or is not a LATAM country. Set it in Settings → Business. |
| Income tax is not withheld | No table for the country, the table currency does not match the payroll currency, or the salaries are below the first bracket. |
| “No employee/enployer contributions” | The pack is not installed or all rows were deleted. Install or restore the proposed pack. |
FAQ¶
Can I have employees in several countries in one workspace?
No. Payroll has one compliance country per workspace, like the single payroll currency. Employees of another country must be aligned (or moved to their own workspace) before paying.
Can I change the country later?
Yes, after the workspace has no employees, tax rows, income-tax tables or draft runs of the previous country. Past payslips keep their own snapshot; the change only affects what comes next.
Are the proposed rates official?
They are the general-regime proposal shipped with the console, with public sources. The company reviews and signs them; special regimes (SIMPLES, monotributo, domestic service, collective agreements) and statutory filings are out of scope.
Does 4Geeks file with the agency for me?
No. The console generates the official file and stores its evidence; the client uploads it and records the acknowledgement. The only direct API today is the Costa Rican INS, and the client always provides the certificate and authorization.
Why did my signature become stale?
Any change to a rate, a cap, a progressive bracket or the income-tax table changes the hash. That is deliberate: the signature covers the exact values payroll uses.
Related¶
Still have questions? Ask on Discord or explore the tutorials.