Perfex People documentation

Perfex People adds HR to Perfex CRM: employee records, leave, attendance, payroll, recruitment, onboarding and offboarding and reports, with read-only importers to switch from another HR module. Every Perfex staff member can have an employee profile; People keeps it in its own table next to Perfex staff.

Salary, bank and identity details are encrypted at rest and protected by their own permissions. They never load with a page: allowed people open them with Reveal, and every view and export is recorded. You choose the working rules; People does not provide the legal, tax or employment rules of any country.

Installation

Requirements

Install

  1. Back up the CRM database, the uploads folder and the modules folder.
  2. Extract the download perfex-people-1.1.1.zip on your computer. Inside are the installable perfex_people-1.1.1.zip, this documentation, the changelog and the licences.
  3. In Perfex, open Setup › Modules, upload the inner perfex_people-1.1.1.zip, then activate Perfex People.
  4. Enter your purchase code on the License page (see Licence activation).
  5. Give HR and payroll staff their rights (see Permissions), then open Perfex People in the sidebar.
What activation does: creates People's own tables, settings and staff permissions. It does not modify Perfex core files and adds no columns to Perfex's staff table. A profile is not a second login: Perfex's own sign-in and staff accounts stay in charge.

Licence activation

Your sellmycode.net purchase code switches the module on for one domain. After activation, open Perfex People › License, enter the purchase code and click Activate. The page shows the domain, the licence type, the activations used, how long updates are included and when the licence was last checked (every 6 hours; the module keeps working while the licence server is briefly unreachable).

Upgrades

Upload the new module zip in Setup › Modules and click Upgrade Database if Perfex shows it. Upgrades work whether People is active or not; deactivation keeps your data. Never use uninstall as an upgrade or troubleshooting step. After an upgrade, check the version, open your own profile, leave balances and approval queues, one sample payslip and the integration status.

Background work

Keep Perfex's cron job running. Work is done in small batches: accrual and payroll calculation handle up to 25 employees per run, so a large team may need a few cron runs. Wait until a pay run says it is ready before you review it. Look at worker states and errors after changing settings.

Permissions

Rights are set in Setup › Staff › Roles (or per staff member), feature Perfex People. Use the smallest set each person needs: viewing employees does not include salary, bank, recruitment or payroll.

WhoRights
Every employeeNo right needed: their own profile, leave, attendance and locked payslips. They can reveal their own protected fields (audited).
Direct managerTheir direct reports for leave and attendance decisions. Being a manager does not open protected fields or the whole company.
HR recordsView All Employees, Create, Edit; Documents for private files; Identity and Emergency Details where needed.
Leave and attendanceManage Leave Types and Holidays; Approve Leave as HR; Manage Attendance Rules, Shifts and Rosters; Approve Attendance as HR. HR approval always comes after the manager and by a different person.
Payroll operatorView + Salary + Manage Payroll.
Payroll approverView + Salary + Approve and Lock Payroll. Nobody can approve a run they created.
PaymentsSalary + Bank Details and a payroll right. A bank file never marks payments as made.
RecruitmentManage Recruitment (Salary as well for offer texts). Interviewers get Assigned Interviews and see only their own scheduled interviews.
ChecklistsManage Onboarding and Offboarding for templates; Assigned People Checklists for the people doing the tasks.
ReportsView + Company People reports; money reports also need Salary and a payroll right; the hiring funnel needs a recruitment right.
PrivacyEmployee Privacy Operations for exports; Delete as well for erasure. Privacy never overrides the field rights.

Review rights when someone leaves, changes manager or has their account deactivated. Background workers check the rights of the person who started the work; they never borrow an administrator's session.

First steps

  1. Check your departments in Perfex (Setup › Support › Departments); People uses them.
  2. Open People › Directory and add a profile for each existing staff account: job title, department, manager, location, employment type, time zone, contract start and probation. Check the account before saving; do not match people by name alone.
  3. Set up leave types and public holidays (see Leave).
  4. Set attendance rules and shifts, or use TeamPulse 1.2.1 or later once that update is out (see Attendance).
  5. If you used another HR module before, run the importer first (see Switching).
  6. Set up pay components, a pay group and the employees' pay values before your first run (see Payroll).
  7. Set the recruitment consent text, retention period and CV storage limit before you publish a job.
People overview with headcount, people on leave today, pending approvals, late arrivals and the week
Overview: headcount, who is out, what needs your attention.

Employee records

A profile holds job title, department, direct manager, location, employment type, contract dates, probation, custom fields, emergency contacts and documents. The profile tabs are Details, Protected, Private Documents and Privacy; each shows only what your rights allow.

The employee directory with department, manager and location
People › Directory.

Protected fields

Salary, bank details, identity details and emergency contacts are protected. Their values are encrypted in the database and are not part of the page when it loads. A person with the right permission clicks View Protected Fields (Reveal); People loads the values once and records who saw what and when. People without the permission see that the field exists, not its value. An encrypted value cannot be copied to another employee or field to read it.

The Protected tab of a profile with salary, bank, identity and emergency details masked
Protected fields stay masked until an audited Reveal.

Documents

Drop files on the drop zone of the Private Documents tab, or click it to browse. Files are stored encrypted in private storage and downloaded through People with a permission check, never by a public link. Keep the private folder in your backups together with the database.

Set the private folder in People's settings. Prefer a writable path outside the web server's document root. If you keep the default folder inside Perfex, People ships deny rules for Apache and IIS; on Nginx, add a deny rule for uploads/ppl_private yourself.

Self-service

Every staff member gets My Profile: their own details, leave balances and requests, attendance, locked payslips and documents. They can reveal their own protected fields; nobody else's.

Leave

Leave types

Leave › Leave Types. For each type set:

Decide which types are unpaid before you use them in a pay group. Accrual runs through cron and never grants the same amount twice. Balances show what is left, what pending requests reserve and what was taken. Renaming a type keeps its history; deactivating it stops new use without erasing anything.

Requests and approvals

  1. The employee clicks Request Leave, picks a type and the dates (full days, half day or hours) in their time zone. People counts the working time, skips public holidays and warns when others in the team are out. Overlaps, a too-small balance and dates outside the contract are refused.
  2. The manager approves or rejects first, then HR. One person cannot approve both steps, and nobody approves their own request.
  3. Approved leave shows on the Team Leave Calendar and is taken from the balance. To change approved leave, use cancel or shorten; the balance is refunded.

The reason is optional and private: only the employee, their manager and HR can open it. HR can also record past leave through the audited HR entry.

The team leave calendar with approved and pending leave per person
Leave › Team Leave Calendar.
The Request Leave form with leave type, dates, time zone and a private reason
Leave › My Leave › Request Leave.

Public holidays

Leave › Public Holidays. Holidays are kept per location; a global holiday applies to everyone, a location holiday only to that location. Import them from a reviewed CSV file or an iCal calendar, or add them by hand.

Attendance

Rules and rosters

Attendance › Attendance Setup. Choose the allowed office IP addresses or location (geofence) before you switch on web clocking. Create shifts with start, end, an optional break, a grace period and the overtime threshold, and assign them as dated rosters in the employee's time zone. Overnight shifts and daylight saving changes are handled.

Clock and approve

Attendance today with the clock card and who is in, late, on leave and not in
Attendance › Today.
Attendance approvals: entries with clock times and worked time awaiting HR
Attendance › Approvals.
The monthly attendance grid of one employee with worked time and overtime per day
Attendance › Monthly, with overtime per day.

With Perfex TeamPulse

With TeamPulse 1.2.1 or later: approved hours and overtime feed payroll. Without it, People uses its own clock, rosters and overtime rules.

With TeamPulse 1.2.1 or later active, People reads approved time from TeamPulse through its public API and does not offer a second timer. TeamPulse supplies the first and last activity of each day, the approved work time and the overtime, classified against the dated People roster; People adds its rosters, breaks and approved leave. TeamPulse's own view and approval rights apply on top of People's.

Payroll

No compliance claim. The payroll engine is country-neutral. People does not contain the tax or social security rules of any country and makes no claim of legal or tax compliance. Pay components and tax tables are data that you enter and check, with your accountant where needed. People calculates pay and creates bank files; it does not send money or file anything with authorities.

Pay components

Payroll › Setup › Pay Components. A component has a code (lowercase letters, digits and _), a name, a kind — earning, deduction or employer contribution — and a method:

Net pay is earnings minus deductions. Employer contributions are shown on the payslip and in the totals but are not deducted from pay. Every component is rounded to the currency's decimals. A component that comes out negative, or a net pay below zero, stops the run with a message instead of paying it.

Pay components: base salary formula, overtime, allowance, pension, income tax table, health plan and employer contributions, with the three neutral examples above
Payroll › Setup › Pay Components.

Formulas and variables

Formulas are plain arithmetic: numbers, names, + - * / and brackets. They are evaluated with exact decimals by a safe evaluator — never as PHP or any other code. Division by zero, an unknown name or a loop between components stops the run. A formula can use:

NameValue
paid_daysCalendar days of the period the person was employed (from the contract dates).
period_daysCalendar days of the pay period.
planned_minutesWorking minutes planned in the period (rosters, or the group's day length on working days).
unpaid_minutesApproved leave of the group's unpaid leave types in the period, in minutes.
worked_hoursApproved work time in the period, in hours (from People attendance or TeamPulse).
overtime_hoursApproved overtime in the period, in hours (included in worked_hours).
settlement_earning, settlement_deductionAn approved final settlement from offboarding that falls in this run.
Employee valuesYour own names per employee, such as base, hourly_rate, overtime_rate or reviewed commission_sales. Stored encrypted.
Component codesThe rounded result of another component, for example base_salary + overtime_pay.

Examples: base * paid_days / period_days (monthly pay with joiner proration), base * unpaid_minutes / planned_minutes (an unpaid-leave deduction), overtime_hours * overtime_rate. The engine's own variables cannot be entered as employee values.

Tax tables

Payroll › Setup › Tax Tables. A tax table is a list of marginal bands for a year that you enter: each band has an upper limit and a rate, and the last band has no limit. The bands are stored encrypted. Use the table in a component with the method Tax table.

Pay groups and members

A pay group has a currency and its decimals, a frequency (monthly, semi-monthly or weekly), a day length, its unpaid leave types and its components. The same currency cannot use two different decimal settings. Add each employee to a group with their values (Employee Pay); the contract start must be set. Pay Periods are created per group and must match its frequency.

Pay runs

  1. New Run for a period queues the run. Sending the same command twice returns the same run.
  2. The run is calculated in the background. A failed or unfinished calculation cannot be reviewed; the run shows the error and can be retried after you fix the cause.
  3. Review: check totals, each person and the differences against the previous period — joiners, leavers, unpaid leave, overtime and unusual components.
  4. A different person with the approve right approves the run, then locks it.
  5. A locked run never changes. Each run keeps a snapshot of the employees' values, components, currency, departments and project allocation, so later edits do not rewrite past payslips.
A locked pay run with gross pay, deductions, employer contributions, net pay and totals per component
Payroll › Pay Run.

Adjustment runs

To correct a locked run, start a new run for its period and choose it under Locked Regular Run to Adjust. The adjustment run holds only the differences (deltas) against the original, not a second full payment. It goes through the same review, approval and lock. A correction can reduce pay: the reduction is kept as a negative difference.

Payslips and e-mail

A payslip with earnings, deductions, employer contributions and net pay
A payslip with earnings, deductions and employer contributions.

Bank files

  1. Enter the employees' bank accounts (Payroll › Bank Files › Employee Accounts) and the paying company account per pay group (Company Accounts). Both are encrypted.
  2. Pick a locked run and a format — Generic CSV or SEPA pain.001 — and click Queue Bank File. The payment data is frozen and the file is built in the background.
  3. Download the file and approve it in your bank as usual.
Bank Files: queue a file from a locked run and the list of ready files
Payroll › Bank Files.

Posting to Perfex Books

With Perfex Books active, locked runs can post to the Books ledger. On Payroll › Pay Runs, under Books Posting, click Choose Accounts and map the five account roles — Gross Pay Expense, Employer Contribution Expense, Deductions Payable, Net Pay Payable and Employer Contributions Payable — to Books accounts in the run's currency. From then on, each locked run posts one balanced journal through Books' public posting API, on an open posting date:

Runs locked before you enabled posting need an explicit backfill. Without an active Books, the state stays unavailable; nothing is posted or faked.

Example templates

Under Start From an Example, People shows three neutral examples. They make no legal or tax compliance claim and install nothing on their own: you review them, create the components you want and add employee values.

Recruitment

  1. Setup: set the consent text and its version, the retention period and the CV storage limit; rename or reorder the stages.
  2. Openings: save a job privately, review its description, location and closing date, then publish it.
  3. Pipeline: candidates move across stages on a kanban board; drag a card or use Move Candidate. Changes made by two people at once are caught.
  4. Interviews are scheduled in the intended time zone with a named interviewer, who fills in a scorecard. Interviewers see only their own interviews and never the offer salary.
  5. Offers: someone with the Salary right writes the offer, marks it sent and records the answer.
  6. Hire: after an accepted offer, link the candidate to the existing Perfex staff account. People does not create logins. Set the contract start before payroll.
The recruitment pipeline with candidates per stage
Recruitment › Pipeline.
A candidate with a scheduled interview, offer letters, pipeline stage and privacy details
A candidate: interviews, offers, stage and retention date.

Careers page

Published openings appear on your public careers page at /perfex_people/careers on your CRM address, each with an apply form: name, e-mail, optional phone and note, an optional PDF CV and the consent checkbox. The form has CSRF protection, a short-lived one-time token, a quick-submit and honeypot check and a limit per visitor; only PDF files within the size and storage limits are accepted. Submitting the same application twice creates one candidate. Applications are stored encrypted.

The public careers page for an opening with the apply form and the recruitment privacy notice
The careers page and apply form.

Retention

Each candidate shows the date their data is kept until. After that date, cron deletes the candidate — CV, interviews, scorecards, offers and search data — in batches; a content-free audit entry records it. An authorised person can export or erase a candidate at any time.

On- and offboarding

An onboarding checklist with HR, IT and manager items, due dates and Perfex tasks
People › Onboarding.

Reports

Reports shows headcount, joiners, leavers and turnover, headcount by department, absence and overtime, payroll cost, leave liability and the recruitment funnel for the dates you choose.

People reports with headcount, turnover, absence and overtime, payroll cost, leave liability and the recruitment funnel
People › Reports.

Switching from another HR module

The settings menu (gear icon) has Import Employees, Import Leave and Import Attendance. They read the data of another HR, payroll, timesheet or recruitment module on the same Perfex installation. The importer is read-only: it never changes or deletes the other module's tables, and the other module does not need to be active.

  1. Back up and rehearse on a copy of your installation first.
  2. Find. People looks for the other module's tables and shows what it found with counts. Choose a source and a batch.
  3. Dry run. A report with counts, fields that have no place in People, conflicts and missing profiles. Resolve status and type mappings, day length, time unit (hours or minutes), time zone and currency. Nothing is written yet, and no salary or bank value is shown.
  4. Import the batch. Protected values are encrypted on the way in; existing People records are not overwritten. Imported job openings stay private, and for candidates you confirm the retention basis.
  5. Run it again to check: it must not create duplicates.
  6. Undo a batch from the batch history if needed. Undo is refused once imported records were changed, approved or used in People afterwards.

Employees and contracts, emergency contacts, leave types, balances and requests, holidays, attendance and shift history, past payslips, openings, candidates and stages can be brought over, as far as the other module has them. Past payslips come in as read-only history: they never create a pay run or a Books posting. Raw device clock events and unclear identities are kept as history for review, never turned into approved paid time.

Integrations

Each integration appears only while the other module is active; People works fully without them. A missing integration shows as unavailable — People never reads another module's tables directly or guesses a result.

ModuleAdds
Perfex TeamPulseTeamPulse 1.2.1 or later: approved hours, first and last activity and overtime for attendance, reports and payroll (see With TeamPulse). Without it, People uses its own clock, rosters and overtime rules.
Perfex BooksLocked pay runs posted to the ledger (see Posting to Books).
Perfex Brain ProHR widgets for dashboards.
Perfex AI StaffRead tools for AI Staff agents that respect the field rights of the person asking.
Perfex Flow StudioTriggers and actions for HR events in workflows (publishing is off until you switch it on).
Perfex ConnectWork-profile resources in the REST API, without salary, bank or private fields.
Perfex Document StudioDocument types for offer letters and payslips.

Privacy and GDPR

Export

Employees can export their own People data. To export someone else's data you need access to that person and the privacy right; the salary, bank, document, recruitment and payroll rights still apply. The JSON export covers the profile and document list, leave, attendance, pay assignment and payslips, settlements, payslip deliveries, checklists, linked recruitment data and audit entries. Transfer it securely and delete temporary copies.

Erasure

Check the person and get your organisation's approval first; erasure needs the privacy and delete rights. It removes the People profile, private files, leave, attendance, rosters, import links, linked candidate data, checklist links and settlement values, clears individual pay inputs and results, payment details and queued payslip e-mails, and invalidates ready bank files that contained the person. Anonymous locked accounting totals and content-free audit entries stay. Erasure does not delete the Perfex staff login, Perfex tasks, the other module's tables, files already downloaded, e-mails already accepted by a mail server or your backups. Files are deleted in the background through cron, with retries until they are gone.

Deactivate and uninstall

Deactivate in Setup › Modules: People's menu, careers page and background work stop; your data stays. Activating again continues where it stopped.

Do not uninstall to upgrade or to fix a problem. Before an uninstall, make a full database and files backup.

FAQ

Does the payroll comply with my country's tax rules?

People makes no compliance claim for any country. Tax tables and pay components are your data; People ships neutral examples only.

Does People pay my employees?

No. It calculates pay and creates a bank file. You approve the payment in your bank.

Does it change Perfex core files?

No. People uses module hooks and its own tables, and adds nothing to Perfex's staff table.

Which languages are included?

English, Dutch, French, German, Italian, Brazilian Portuguese, Russian, Spanish and Turkish. Light and dark, and phone layouts.

Can I move from my current HR module?

Yes, with the read-only importers: dry run first, then batches you can undo. See Switching.

Do I need Perfex Books or Perfex TeamPulse?

No. They connect when they are active: Books receives locked pay runs; with TeamPulse 1.2.1 or later, approved hours and overtime feed payroll. Without it, People uses its own clock, rosters and overtime rules.

Can customers see anything?

No. People is for staff. The only public part is the careers page with your published openings.

Changelog

Current version 1.1.1 (29 Oct 2026). Release notes of every version, newest first: perfexcrm.app/people/changelog/.

1.1.1 — First release (Perfex People 1.0)

Employee records with encrypted protected fields and documents; leave with accrual, approvals and holidays; attendance with clock in and out, rosters, approvals and TeamPulse time (TeamPulse 1.2.1 or later); country-neutral payroll with formulas, locked runs, adjustment runs, payslips, bank files and Books posting; recruitment with a careers page; onboarding and offboarding; reports; read-only importers; GDPR export and erasure. The full list is in changelog.txt in the download.