Skip to content
All guides

Employee Management · Updated November 9, 2026

Employee Profiles

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.

Each record can hold a Probation End Date and a Contract End Date. When you set one, HR and the manager get an alert before that date. See Alerts & Notifications.

Where profiles live

There are a few places you'll work with employee records:

ScreenWhat it's forWho sees it
Employees (or My Team without view_all_employees)The searchable, filterable list of everyone. Click a row to open a profile.Needs view_employees
Employee detailThe full profile, organized into tabs.Needs view_employees
Add / Edit EmployeeThe form for creating a new record or editing an existing one.Needs manage_employees
Import EmployeesBulk-create records from a CSV file (the Import button on the Employees page).Needs manage_employees and view_all_employees
Organization ChartA visual tree built from reporting relationships.Needs view_employees
People DirectoryA contact-card view of active staff, no sensitive fields.Any signed-in employee

Without view_all_employees the list is titled My Team. It shows everyone below you in the reporting chain, at any depth, plus the members of departments you head, and you can open only those profiles.

The detail page tabs

When you open a profile, the page title is the person's name, with their employee number under it. The header card shows their position, department and status. A side panel lists employee number, department, position, employment type, hire date, manager, team, email, phone and work location. Below the header card are tabs:

Information  |  Compensation*  |  History  |  Documents  |  Emergency Contacts  |  Direct Reports  |  Activity

* The Compensation tab appears with manage_payroll or view_all_payroll. Editing needs manage_payroll. 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:

GroupFields
NameFirst name, middle name, last name
ContactEmail, personal email, phone
PersonalDate of birth, gender, nationality, marital status
IdentityNational ID, tax ID (tax PIN), passport number
AddressAddress line 1, address line 2, city, state / province, country, postal code
WorkWork 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.

The NSSF number is not on this tab; it is on the edit form. Some fields are hidden unless you hold a specific permission, and you always see your own record. Identity fields (national ID, passport number, date of birth, disability exemption certificate number, and the address lines, city, state / province and postal code) need view_employee_identity. Bank account number, bank name, branch, routing code, the M-PESA phone, tax ID and NSSF number need view_employee_bank_details. Without the permission the field is hidden, and a note on the tab says some details are hidden. 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

The tab lists the employee's documents, flags ones with an expiry date in the past in red, and opens each file. With manage_documents you can also delete a document here. It shows only with view_documents or manage_documents. Uploading, verifying and the expiring view (documents due to expire within 30 days) are on Documents in the sidebar, where full document management needs the manage_documents permission. Employees can upload their own documents through self-service.

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. Changing reporting lines needs manage_org_structure.
  • 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. Your plan limits the number of employees: adding one over the limit is refused, and terminated employees do not count toward it. The form is grouped into cards:

Basic Information      →  number, name, email, phone, personal email
Personal Details       →  DOB, gender, nationality, IDs, marital status
Employment Information →  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 with manage_payroll or manage_compensation. Without either, Include in Payroll is read-only too.

The form also has Contracted Hours / Week (blank uses the company rule), Rest Day (blank uses the company default), Night Worker and Include in Payroll under Employment Information, and KRA Residential Status, KRA Employment Type and Disability Exemption Certificate under Personal Details. Pay frequency is monthly, bi-weekly, semi-monthly or weekly.

A few rules worth knowing:

  • Employee number must be unique within your company. Trying to reuse one is rejected, and Arche tells you the next free number. You can't change it after the record is created (the field is locked on edit). When your company has set up employee numbers (below), the form suggests the next one; keep it or type your own. Without that setup you type every number.
  • Employee numbers are set up once in Company settings: a prefix (for example EMP-), the least number of digits (4 gives EMP-0043), and the next number. Arche proposes a start from your current numbers. A longer number is never cut: EMP-10000 follows EMP-9999. Numbers someone typed by hand are skipped. Changing the setup needs the right to change org structure. The same sequence fills the number when you hire a candidate, and when the assistant adds an employee without one. Bulk import still needs a number on every row.
  • First name, last name, email, and hire date are required alongside employment type. M-PESA payment also requires its phone number.
  • Employment type is one of full-time, part-time, contractor, or intern, 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.
  • Without manage_org_structure, a new employee starts under you and must join your team: their manager must be you or someone below you, or their department one you head. On an existing profile the manager, department and team fields are locked.
  • What each permission lets you change: manager, department and team need manage_org_structure; base salary, payment method, pay frequency, currency and Include in Payroll need manage_payroll or manage_compensation; identity fields need view_employee_identity; bank, M-PESA, tax ID and NSSF fields need view_employee_bank_details. The server checks only the fields you changed. If any change is refused, nothing is saved.

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 (the Import button on the Employees page) takes a CSV file instead of the one-at-a-time form. Download the template for the exact column headers, or write your own. The file can be up to 10 MB; split very large files into batches of about 5,000 rows.

Required columns are employeeNumber, firstName, lastName, email, and hireDate. 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, and managerEmployeeNumber are 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.
  • salaryPaymentMethod is bank or mpesa; an mpesa row needs mpesaPhoneNumber.
  • A file holds at most 10,000 rows. The importer enforces the same field permissions as the form: a file with columns you may not set (pay, reporting line, identity or bank) is refused, and the message names the permission each needs. Your plan's employee limit applies too.

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:

StatusMeaning
activeCurrently employed
on-leaveTemporarily away
inactiveDeactivated (soft delete)
terminatedEmployment 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. On the termination date, the person's user account loses access to your company and every signed-in session ends. A future-dated termination takes effect on that date. If they also belong to another company on Arche, that membership stays, but they have to sign in again. Arche removes access once per termination. If the person is your company's last administrator, Arche keeps their access so someone can still manage users, and doesn't try again: give another user an administrator role, then unlink the person's account on their profile. You can't terminate someone who's already terminated. The web Terminate button ends employment today, with the reason "Terminated by administrator", and needs manage_employees plus view_all_employees. The web app cannot set a future termination date yet.

Deactivating (the standard delete) is a soft action: it flips status to inactive and keeps the record. The web app has no control for it yet.

Permanent deletion is a separate, guarded action needs manage_company and works 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.

Rehiring someone who left

A terminated profile stays terminated; there's no action to reinstate it. To bring the person back:

  1. Wait until their termination date has passed. Arche removes their access to your company on that day.
  2. On the old profile's Information tab, unlink their user account. A user account can be linked to only one employee profile in your company.
  3. Create a new profile for the new period of employment, with its own employee number and hire date.
  4. On the new profile, use Link Existing User and select the previously unlinked account. Linking restores access with the default Employee role. An administrator can then change the role on the Users page if needed. If the account was unlinked before Arche began retaining its company association, contact Arche to restore that assignment first.

Because Arche removes a leaver's access only once, access you give back after the termination date stays. If the person will sign in with a different email address, use Create Account on the new profile instead of linking the old account.

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 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 Existing User to the profile. The list includes available company members and accounts previously unlinked from your company. Accounts linked to another profile in your company are excluded. Relinking a previously unlinked account restores company access with the default Employee role.
  • Unlink an account, which also removes that user's access to the company.

Previously unlinked accounts are visible only to the company that recorded the link. Older accounts whose company association was already removed need an explicit company assignment before they can appear here.

The web app cannot create accounts for many employees at once yet; create each one from the employee's profile. It skips anyone who already has an account.

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. The directory shows up to 500 people; use search or the department filter to find others. Each card has quick email and call links.

FAQ

Why don't I see the Compensation tab? The tab requires manage_payroll or view_all_payroll. 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.