Employees and contractors¶
The Employees tab is your workforce directory. Every person you pay — salaried employee, hourly worker or contractor — is a single record here.
Contractors are employees with a contract type
There is no separate contractor module. A contractor is simply a record with Contract Type = Contractor. Contractors flow through the same timesheets, payroll runs, payslips, bonuses, deductions and termination flow as everyone else.
The directory¶
The directory lists your people with search and filters.
Search matches name, email, role, department and branch.
Filters (the badge shows how many are active):
| Filter | Options |
|---|---|
| Status | Active, On Leave, Terminated (defaults to Active) |
| Salary Type | Fixed Salary, Hourly Rate |
| Contract Type | Indefinite Term, Fixed-term, Seasonal, Project/Service, Contractor, Internship |
| Branch | Values present in your data |
| Country | Values present in your data |
| Department | Values present in your data |
| Job Category | Values present in your data |
| Sex | Male, Female |
| Vacation Days Left | Minimum / maximum range |
Use the Show terminated toggle to include former employees, and Clear All to reset.
Columns¶
The table shows Employee (avatar, name, email), Role / Dept, Branch, Compensation (with a Fixed/Hourly badge), Status, Contact, Sex, National ID, Start Date, Aguinaldo (accrued amount) and Vacation (available days). Click any row to open the employee profile.
Actions¶
- Export CSV — downloads the full roster with 31 columns, including vacation and aguinaldo accruals, active deductions, bonuses and approved leaves.
- Import CSV — bulk onboarding (requires a payment method).
- Add Employee — opens the employee form (requires a payment method).
Add or edit an employee¶
The form fields are:
| Field | Notes |
|---|---|
| First Name / Last Name | Required |
| Required and unique per workspace | |
| Role | Defaults to Employee |
| Department | Pick an existing department or create a new one |
| Branch | Free text (for example “Main Office”) |
| Country | Select from the supported countries |
| Job Category | Country-aware list; defaults to General Services |
| Phone, Birth Date, National ID, Sex, Address | Personal details |
| Contract Type | Indefinite Term, Fixed-term, Seasonal, Project/Service, Contractor, Internship |
| Payment Modality | Monthly, Biweekly, Weekly |
| Salary Type | Fixed Salary or Hourly Rate |
| Monthly Salary / Hourly Rate | Required, up to 99,999,999 |
| Currency | One of the 12 supported currencies |
| Status | Active, On Leave, Terminated |
| Start Date | Required |
| Contract End Date | Only shown for Fixed-term, Seasonal and Project/Service |
| Assign Shift | Optional; shown when active shifts exist |
When you save a new employee, 4Geeks Payroll sends a magic-link invitation to their email so they can access the employee app.
Bulk import (CSV)¶
Click Import CSV to onboard many people at once.
- Click Download Template to get
employee-import-template.csv. - Fill in the file (max 5 MB,
.csv). - Drag and drop it, or browse for it.
- Review the preview: valid rows are shown in green, invalid rows are highlighted with their error.
- Click Import {n} Employee(s).
Columns¶
first_name, last_name, email, role, department, country, job_category,
contract_type, contract_end_date, salary_type, fixed_salary, hourly_rate,
currency, status, start_date, phone, birth_date, national_id, sex, address
branch and payment_modality are also read if present in the header row.
Validation rules¶
- First and last name are required.
- Email must be a valid address and must not already exist.
salary_typemust befixedorhourly, and the matching amount must be greater than 0.currencymust be one of the 12 supported currencies.contract_typemust be one of the six types.- Dates use
YYYY-MM-DD. - Duplicate emails (in the file or already in the system) are skipped and reported.
Each imported person is invited automatically. The result screen lists imported, skipped, errors and any invite failures.
The employee profile¶
Clicking a person opens their profile, with these tabs:
Overview¶
All record fields plus two accrual cards:
- Aguinaldo — click to open the aguinaldo calculator.
- Vacation days left — available balance from accrual minus days taken.
The Edit button lets you change any field inline.
Deductions¶
Deductions are amounts recovered from an employee over one or more pay periods (uniforms, meals, equipment, loans, and so on).
| Field | Notes |
|---|---|
| Name | For example “Safety shoes” |
| Category | Uniform, Food, Transportation, Equipment, Housing, Health, Other |
| Total Amount | Must be greater than 0 |
| Number of Pay Periods | Integer ≥ 1; the installment per period is previewed live |
| Start Period | First period the deduction applies |
| Notes | Optional |
Each deduction shows its progress (completed / total periods), remaining balance and date range. Active deductions can be edited or cancelled; Completed and Cancelled are read-only. In payroll, the amount applied each period is min(installment, remaining).
Bonuses¶
Bonuses are one-off additions paid within a period.
| Field | Notes |
|---|---|
| Name | Required |
| Category | Bonus, Commission, Referral, Attendance, Holiday, Other |
| Amount | Greater than 0 |
| Pay Period Start / End | Defaults to the current month; end must be ≥ start |
| Notes | Optional |
Only Pending bonuses are paid in a run (they then become Applied); Cancelled bonuses are never paid.
Photos¶
FaceID enrollment for the kiosk. Upload up to 10 frontal photos (PNG/JPEG/WebP, max 5 MB each). The app checks quality (one face, close enough, well lit, straight) before accepting each photo. You need at least 3 usable photos to enroll; one must be marked Primary. A Ready for FaceID badge confirms enrollment.
History¶
Three sections: Attendance (clock in/out grouped by day with station and timezone, and “Missing clock-out” flags), Timesheets (period, hours, overtime, status) and Payslips.
Leave Requests¶
Leave recorded for this employee, with type, dates, remuneration percentage, certificate and status. See Leaves.
Workshift¶
Assign, change or unassign a work shift. Assignments are validated against the country’s labor rules before they are saved.
Travel Expenses¶
Manual per-diem entries for this employee (category, amount, dates, tax treatment, status). See Travel expenses.
Invitations and app access¶
Each employee can be invited to the employee app. The profile header shows their access state:
- Linked — the employee has signed in and is connected.
- Invited — an invitation was sent (with the date).
- Not Invited — no invitation yet.
Use Invite to App / Resend Invite to (re)send the magic link.
Vacation balance¶
Vacation accrues by complete months worked, based on the employee’s country:
| Country | Annual days |
|---|---|
| Costa Rica | 15 |
| Mexico | 12 → 32 (increases with years of service) |
| Panama | 30 |
| Colombia | 15 |
| Ecuador | 15 |
| Honduras | 10 |
| El Salvador | 15 |
| Guatemala | 15 |
| Uruguay | 20 |
| Paraguay | 30 |
| Chile | 15 |
| Peru | 30 |
Available days = accrued − taken. Approving a vacation leave decreases the balance; rejecting or deleting it restores it. Countries without a rule accrue 0 days.
Terminations and severance¶
Open an employee and click Terminate to start the termination flow.
- Choose the termination date and type:
- Layoff / dismissal without cause
- Termination with just cause
- Voluntary resignation
- Mutual agreement
- End of fixed-term contract
- Add an optional reason.
- Review the severance preview: base salary, years of service, line items and a proportional aguinaldo line.
- Confirm.
On confirmation, the employee’s status becomes Terminated, a finalized termination record is stored, and a severance PDF can be downloaded.
Severance rules vary by country
The severance engine supports the 12 preset countries. Terminations with just cause and voluntary resignations do not generate statutory severance. See Country reference for the formulas.
Delete an employee¶
Delete Employee permanently removes the record and cascades to their timesheets, payslips, deductions, bonuses, photos and terminations. Use Terminate instead if you want to keep history.
Related¶
Still have questions? Ask on Discord or explore the tutorials.