An employee profile is the single record that holds everything Arche knows about a person: who they are, how they're employed, who they report to, their documents, and their emergency contacts.
Every employee in your company has one profile. It's the source of truth that the rest of the platform reads from. Payroll pulls salary and payment details from it, the org chart is built from its reporting relationships, and the People Directory shows a public-safe slice of it to colleagues. This guide walks through what each section holds, how to create and edit a profile, and how the org chart and directory are derived from the same data.
Where profiles live
There are a few places you'll work with employee records:
| Screen | What it's for | Who sees it |
|---|---|---|
| Employees (or My Team for department managers) | The searchable, filterable list of everyone. Click a row to open a profile. | Needs view_employees |
| Employee detail | The full profile, organized into tabs. | Needs view_employees |
| Add / Edit Employee | The form for creating a new record or editing an existing one. | Needs manage_employees |
| Import Employees | Bulk-create records from a CSV file. | Needs manage_employees |
| Organization Chart | A visual tree built from reporting relationships. | Needs view_employees |
| People Directory | A contact-card view of active staff, no sensitive fields. | Any signed-in employee |
Department managers see a scoped version: the list shows their direct reports, and they can only open or edit profiles of people who report to them.
The detail page tabs
When you open a profile, the header card shows a quick summary (status, department, position, hire date, employment type, manager, team, email, phone). Below that are tabs:
Information | Compensation* | History | Documents | Emergency Contacts | Direct Reports
* The Compensation tab appears with manage_payroll, or with view_payroll plus the company-wide HR-operator check. manage_payroll makes it editable. The tab visibility check itself does not test the module licence; payroll API access is separately licensed.
Information
Personal and contact details. Fields with no value are simply hidden, so the layout stays clean. The full set:
| Group | Fields |
|---|---|
| Name | First name, middle name, last name |
| Contact | Work email, personal email, phone |
| Personal | Date of birth, gender, nationality, marital status |
| Identity | National ID, tax ID (tax PIN), passport number, NSSF number |
| Address | Address line 1, address line 2, city, state / province, country, postal code |
| Work | Work location |
If you also have payroll access, the Information tab adds a financial block: base salary (shown in KES), pay frequency, salary payment method, and the bank or M-PESA details. Account numbers and the M-PESA phone are masked to the last four digits here.
Identity fields like national ID, tax ID, NSSF number, passport number, and bank account number are sensitive and restricted to users who have permission to view this employee. These fields use an AES-256-GCM column transformer when written by the application.
Compensation
Detailed pay setup beyond the single base-salary figure. This tab uses payroll services, so using it also depends on payroll being licensed for your company.
History
A running log of employment changes. Some entries are created automatically: a hire record is written when the employee is first added, and Arche records a change whenever you edit the department, position, manager, or salary. You can also add records by hand from this tab. Change types are:
hire · promotion · transfer · demotion · title-change · salary-change · department-change · manager-change · status-change
Each record carries an effective date and an optional reason and notes. Salary changes also store the previous and new amounts.
Documents
Files attached to the employee: contracts, ID copies, certifications, and so on. Each document has a title, a type, an optional description, and an optional expiry date. Document types:
contract · id-copy · tax-form · certification · medical · performance · disciplinary · other
Documents can be verified by HR, and ones with an expiry date in the past are flagged in red on the list. There's a separate "expiring" view that surfaces documents due to expire within a set window (30 days by default). Employees can upload their own documents through self-service; full document management needs the manage_documents permission.
Emergency Contacts
People to reach in an emergency. Each contact has a name, relationship, phone (required), optional alternative phone, email, and address, plus a flag for the primary contact. Relationship options:
spouse · parent · sibling · child · friend · other
Employees can manage their own emergency contacts from self-service without needing access to anyone else's profile.
Direct Reports
Two things live here:
- Reporting lines, meaning who this person reports to. A profile can have more than one line, with one marked primary. Lines carry an effective date, and you can end a line (keeping it as history) or delete it outright. Past lines show in a dimmed "Past Reporting Lines" section.
- Direct reports, meaning who reports to this person. This is computed from the manager set on each profile. Click any report to jump to their profile.
Creating and editing a profile
Use Add Employee from the Employees page. The form is grouped into cards:
Basic Information → number, name, email, phone, personal email
Personal Details → DOB, gender, nationality, IDs, marital status
Employment Info → hire date, employment type, department, position, manager, team
Compensation* → base salary, pay frequency
Payment Details* → bank or M-PESA details
Address → street, city, province, country, postal code
* Compensation and Payment Details only show for HR admins, not department managers.
A few rules worth knowing:
- Employee number is required and must be unique within your company. Trying to reuse one is rejected. You can't change it after the record is created (the field is locked on edit).
- First name, last name, email, and hire date are required alongside employee number and employment type. M-PESA payment also requires its phone number.
- Employment type is one of
full-time,part-time,contractor, orintern, and defaults to full-time. - Salary payment method is either bank transfer or M-PESA. If you pick M-PESA, the M-PESA phone number becomes required.
- Currency defaults to KES and pay frequency defaults to monthly.
- When a department manager creates an employee, that manager is assigned automatically and the manager field is locked.
Saving a brand-new employee writes the initial hire history record and publishes an internal event so other modules can react.
Bulk import
For onboarding many employees at once, Import Employees takes a CSV file instead of the one-at-a-time form. Download the template for the exact column headers, or write your own: employeeNumber, firstName, lastName, email, and hireDate are required, everything else (personal details, address, employment info, and payroll/disbursement fields) is optional.
The flow is upload, then Validate & Preview, which parses the file and shows the first few rows without writing anything, then Import. A few things the importer does for you:
departmentCode,positionCode, andmanagerEmployeeNumberare looked up against your existing departments, positions, and employees. If a code doesn't match, that row still imports, just without the department, position, or manager set, and the result lists it as a warning.- In Create new only mode, a row whose employee number already exists is skipped. Create and update existing mode updates matching employees using the supplied fields; review the mode and preview before importing.
salaryPaymentMethodisbankormpesa; anmpesarow needsmpesaPhoneNumber.
The results screen shows total rows, how many were created, updated, or skipped, and a row-by-row list of warnings and errors. The importer only accepts .csv files; there's no Excel/XLSX upload path for employee records.
What employees can edit themselves
Through self-service, an employee can update a safe subset of their own profile: phone, personal email, date of birth, gender, marital status, nationality, and the address fields. They cannot change salary, department, position, manager, status, or employee number. Those stay with HR.
Statuses and lifecycle
An employee's status is one of:
| Status | Meaning |
|---|---|
active | Currently employed |
on-leave | Temporarily away |
inactive | Deactivated (soft delete) |
terminated | Employment ended |
The list page shows counts for each status at the top, and the filter lets you narrow by status or employment type.
Terminating an employee sets the status to terminated, records the termination date and reason, writes a status-change history entry, and emits a termination event. You can't terminate someone who's already terminated. Only full HR admins see the Terminate action.
Deactivating (the standard delete) is a soft action: it flips status to inactive and keeps the record.
Permanent deletion is a separate, guarded action available only to company admins, and only for employees who are already terminated. Before it runs, any linked user account must be unlinked, and you have to type the employee number to confirm. If the employee still has records in other modules (payroll runs, leave, expenses, and so on), the database blocks the deletion to protect referential integrity, and Arche tells you to keep the record as terminated instead.
User accounts vs employee profiles
A profile and a login account are two different things. An employee record can exist with no one able to log in as that person, which is common when you're setting up data ahead of time. From the Information tab, an admin can:
- Create an account for the employee. Leave the email blank to use their work email, optionally set a temporary password (one is generated if you don't), and optionally assign a role. The employee gets a password-setup link to choose their own password.
- Link an existing user already in your company to the profile.
- Unlink an account, which also removes that user's access to the company.
There's also a batch option to create accounts for many employees at once, which skips anyone who already has one.
The organization chart
The Organization Chart is built from the manager set on each active profile. People with no manager (or whose manager isn't an active employee) become the top of the tree; everyone else nests under their manager. You can search the tree, expand or collapse all branches, and click any card to open that person's profile. Department managers see the chart rooted at themselves.
The backend caches the chart for two minutes and invalidates that cache when employee changes affect it. Refresh the page if an open view has not picked up an update.
The People Directory
The People Directory is the company-wide contact list, open to every signed-in employee. It only includes active employees and only shows public-safe fields: name, work email, phone, work location, department, position, team, and photo. No salary, bank details, national ID, or other sensitive data appears here. Cards are grouped alphabetically by last name, and you can search by name or email and filter by department. Each card has quick email and call links.
FAQ
Why don't I see the Compensation tab?
The tab requires manage_payroll, or view_payroll plus the company-wide HR-operator check. Editing requires manage_payroll; payroll API access also depends on the module licence.
Can I change an employee number after creating the record? No. It's set at creation, must be unique in your company, and is locked on the edit form.
A salary change didn't appear in History. Why? History records salary, department, position, and manager changes when they actually change. If you saved the same value, no entry is written. Other field edits (like address or phone) aren't tracked in History.
Why can't I permanently delete a terminated employee? Permanent deletion is blocked when the person still has records in other modules, such as payroll or leave. That's intentional, to keep historical data intact. Unlink any user account first, and if related records exist, keep the employee as terminated rather than deleting.
Why is someone missing from the org chart or directory? Both only include active employees. The directory excludes anyone who's inactive, on-leave, or terminated. The org chart also needs a manager relationship to place someone under another person; without one, they appear at the top level.
What's the difference between a manager and a reporting line? The manager field on the profile drives the org chart and the Direct Reports list, and it's what the platform treats as the primary reporting relationship. Reporting lines on the Direct Reports tab let you record additional or dotted-line relationships over time, each with its own effective and end dates.