Skip to main content
If the Employee record is the person, the employment record is the job. Each employment record (the system calls it an employment contract) is one engagement between an employee and one of your businesses — it carries the employment type, the start and end dates, the position, department and manager, the work location, the statutory and bank details, the salary structure, and who approves the person’s leave. An employee can hold several of these over time (a fixed-term contract that ends and is renewed, a role that changes through a transfer or promotion) and can even hold more than one at once — for example the same person employed by two of your subsidiaries. This is the deep “contract” page. It explains where employment records live, what each one holds, how to add and edit one, how ending a contract works, and how all of that ties into transfers, promotions and separation. You’ll find this at: the Employment section of an employee’s profile/hr/employees/:idEmployment
📷 Screenshot: Employment History timeline with the current contract highlighted, and the Add Employment button — to be added.

Why contracts are per-business

A single Employee identity is shared across your whole organisation, but the contract is tied to one business (one legal entity). That’s deliberate: the things that vary by legal entity — the country the work is performed in, the country whose PAYE/social-security rules apply, the pay currency, the payroll calendar, the tax and social-security identifiers — all live on the contract, never on the person. So when the same individual works for two of your businesses, each engagement is its own contract with its own statutory and pay rules. When you create a contract through the web app, the business is taken from your active business switcher (or an explicit business on the request). Make sure the right business is selected first.

The Employment History timeline

The Employment section lists every employment record for the person, newest first, as a timeline. Each entry shows:
  • The position and department (with the title / position-type fallback).
  • The employment type badge — Full Time, Part Time, Contract or Intern.
  • A Current badge on the active contract, or Ended on a closed one.
  • The dates (start – end, or “Present”), the tenure, the work location and the manager.
A counter shows how many records exist. Click any entry to open its detail sheet.

What a contract holds

Opening a contract reveals the full detail, grouped into sections:

Contract

Role & placement (editable)

On an active contract this block has an Edit button — change the department, position, manager or work location in place and Save. (These are the only role fields editable directly here; a structured move with an effective date and reason is a Transfer.)

Statutory & compliance

These per-contract fields support multi-country payroll. They’re displayed read-only on the sheet (set when the contract is created via the API):

Bank details

Per-contract remittance details for paying salary — bank name, branch, branch code, account name, account number, SWIFT code. If none are recorded, the sheet says so.

Compensation

The active salary structure assignment for this contract — the basis for what the employee is paid. See Salary structures.

Leave approver

An optional designated leave approver for this contract. When set, only that person may approve this employee’s leave requests; clear it to fall back to “any authorised approver”. Editable on an active contract.

Adding an employment record

From the Employment section choose Add Employment. The modal asks for: The new record is created against your active business and starts in the Active state. (The web add modal covers the everyday fields; the statutory, currency and bank fields are set via the API when needed.)
Note the add-employee form already creates a first employment record, so you’ll usually only add another one for a renewal, a second concurrent engagement, or to re-place someone.

Editing a contract

  • Role & placement — edit department, position, manager and work location inline on an active contract’s detail sheet (described above).
  • Leave approver — set or clear the designated approver inline.
These inline edits are the supported in-app changes today. Larger structured changes are modelled as transfers and promotions, which capture an effective date, a reason and a before/after history.

Ending employment

On an active contract, the detail sheet has an End Employment action (under Actions). It asks for: Ending a contract marks it Ended and stamps the end date — the employee stays in the system, but that contract is no longer active and stops driving the org chart, leave approvals and so on. Ending a single contract is not the same as terminating the employee: it closes one engagement only.

How this ties into separation and termination

  • Terminating the employee (the Delete-adjacent Terminate action on the profile) sets the employee’s status to Terminated, records the termination date, and ends their active employment contract in one step.
  • The full offboarding workflow — clearance, exit interview, final settlement — runs through the dedicated Separation (offboarding) module, which is the right path for a managed leaver rather than just ending the contract record.

The e-signature envelope

Every employment contract has a Contract Envelope — the employment agreement itself, sent for e-signature. It shows as a chip on the contract’s detail sheet (and in the Employment History row) alongside Generate & Send, Resend, or Void & Reissue actions depending on its current status: Clicking the chip (whenever it has an envelope) opens the same document viewer the CRM Agreements module uses — the rendered contract, each recipient’s signing progress, and a full audit timeline (sent, delivered, reminded, signed, declined, voided). Resend and Void & Reissue are also available from that viewer.

Contracts are sent automatically

You almost never need to click Generate & Send yourself. Creating a new employment record — through Add Employment on this page, or through accepting a job offer in recruitment — automatically fires off the envelope, using the business’s configured template and employer-representative signatory. This never blocks or fails the hire: if nothing’s configured yet, the contract is simply created with the envelope showing “Not sent”, and someone can send it later — manually, or in bulk via the backfill action described below.
⚠️ A contract cannot be sent to sign itself — if the configured employer-representative signatory is the same person as the employee on the contract, sending is skipped (“Not sent”) rather than silently misfiring.

Setting it up

Before any of this can actually send, a business needs a template and a signatory configured once at HR settings → Employment Contracts. See Employment contract templates for building the document itself.
⚠️ If a contract arrives with no signature areas for either party, the template’s signature blocks are tagged with the wrong signer roles. They must be Employee and Employer_rep — see Signer roles are fixed.

Catching up on contracts that predate this

If you have employees hired before this feature (or before signing was configured for the business), use “Send contracts for signature” on the same HR settings card — it runs Generate & Send for every Active contract in the business that doesn’t already have a current envelope, and reports back how many were sent, already had one, or are still unconfigured.

Permissions


How contracts feed everything else

  • Org chart & My Team — only active contracts (workflowState = Active, employee not terminated) for the selected business build the reporting tree, via the manager on each contract.
  • Work history — a contract’s start produces a “Hired” event and its end a “Contract ended” event on the employee’s Work History timeline (draft/cancelled contracts don’t).
  • Payroll — the contract’s salary structure assignment, pay currency and statutory fields drive the employee’s pay and statutory deductions.

Permissions

All employment reads and writes are scoped by the contract’s own business against your active business context, so you can’t reach a contract that belongs to a business you’re not in.