Employee Transfers
Permanently transfer an employee from one company to another within your group
An employee transfer permanently moves someone from one company in your group to another. Unlike an intercompany assignment, which is temporary and keeps the employee at their original employer, a transfer changes who the employee works for. A new employee record is created at the destination company, and the original record is terminated.
This guide covers how to initiate a transfer, what data carries over, how backdated transfers work, and how to reverse a transfer if it was a mistake.
When to Use a Transfer
Use a transfer when:
- An employee is permanently moving to a different company in the group
- The destination company will be responsible for their payroll going forward
- The employee's reporting line, department, or position may change as part of the move
- An organizational restructure requires employees to shift between legal entities
Do not use a transfer for temporary secondments, staff rotations, or situations where the employee will return to their original company. Use an intercompany assignment for those scenarios instead.
Mistakes are recoverable. A recent transfer can be undone with the Reverse Transfer action, as long as no finalized payroll run at the destination already includes the employee. See Reversing a Transfer below.
Prerequisites
Before initiating a transfer, make sure the following conditions are met:
| Requirement | Details |
|---|---|
| Employee is active | Only employees with Active status can be transferred. |
| No blocking payroll runs | The employee must not be included in a payroll run that is in Approved or Processing status. Finalize or revert the run first. |
| No active intercompany assignment | If the employee has an active intercompany assignment, end it before transferring. |
| Admin access | You must have admin access to both the source company and the destination company (or be a Group Admin). |
| Transfer date after last finalized payroll | The transfer date must be strictly after the source company's last Finalized payroll period that included this employee. Past dates are allowed up to that cutoff. |
How to Initiate a Transfer
Step 1: Open the employee profile
Navigate to Employees, find the employee, and open their profile page.
Step 2: Click Transfer
Click the Transfer button on the employee profile. This opens the transfer dialog.
Step 3: The 4-step transfer dialog
The dialog walks you through four steps.
Step 1 of 4: Destination
| Field | Description |
|---|---|
| Destination company | Select the company the employee is moving to. Only companies in the same group are shown. |
| Transfer date | The effective date of the transfer. The source record is terminated the day before; the new record is active on this date. Past dates are allowed up to the source's last finalized payroll period. |
| Reason | Optional free-text field for the reason behind the transfer. |
Step 2 of 4: Carry-over options
| Option | Default | Description |
|---|---|---|
| Carry leave balances | Yes | Remaining leave balances are copied to the new record. The source record's balances are zeroed out. A snapshot is stored so the carry-over can be reversed exactly if the transfer is later undone. |
| Carry seniority date | Yes | The original hire date is preserved at the new company. Turning this off reveals a New Hire Date field in Step 3; if you leave that blank, the transfer date is used. |
| Retain history | Yes | Keeps the employee's past records visible on the source company's side for audit. |
Step 3 of 4: New company details
Configure the employee's details at the destination company. Department and Position default to a name-match from the source - if the source had a "Front of House" department and the destination has one too, it's pre-selected.
| Field | Description |
|---|---|
| Employee ID | A new employee ID for the destination company. Leave blank to auto-generate. |
| New Hire Date | Shown only when "Carry seniority date" is off. Sets the hire date at the destination. |
| Department / Position / Manager | Defaults applied from source where names match; otherwise blank. |
| Pay type / Base salary / Hourly / Daily rates | Defaults to the current values. Change if the transfer includes a pay adjustment. All monetary fields are shown with a ฿ prefix. |
Step 4 of 4: Review
The review screen shows exactly what will happen when you confirm, including:
- What will happen: how many clock records, shifts, and time-off requests will move to the new company; how many draft payroll items will be deleted at source; how many leave allocations (and days) will be carried over; and the exact source termination date.
- Transfer summary: every Step 3 choice echoed back (Department, Position, Manager, Pay Type, Base Salary, Employee ID), so nothing is confirmed sight-unseen.
Review carefully and click Confirm Transfer to execute.
Backdated Transfers
Transfers can be backdated to any date after the source's last finalized payroll period that included this employee. When an admin notices weeks later that someone was effectively working at a different company, they can set a past transfer date and the system moves the right records with it:
- Clock-in records (
ClockRecord) whererecordTime >= transferDateare moved from source to destination. - Shifts dated on or after
transferDate(undated template shifts are left alone) are moved from source to destination. - Time-off requests with
startDate >= transferDateare moved from source to destination. - Draft / Review payroll items for the source employee are deleted so the next payroll run at source doesn't include them.
This keeps attendance totals and payroll calculations correct on both sides.
Known edge case: a time-off request that spans the transfer date (e.g., leave from Apr 15 to Apr 25, transfer on Apr 20) is moved whole based on its startDate. Splitting across companies is a future enhancement.
Cutoff rule: if the source's last finalized payroll period ends on 2026-03-31, the earliest legal transfer date is 2026-04-01. Attempting to transfer earlier returns a specific PAYROLL_FINALIZED error with the cutoff date, so the admin can see which date is allowed.
What Carries Over
When a transfer is executed, the following data is copied to the new employee record:
| Data | Notes |
|---|---|
| Personal information | Name, email, phone, date of birth, gender, nationality, emergency contacts |
| National ID / Tax ID / SSO number | All identity documents are preserved |
| Bank account details | Bank name and account number |
| Photo | Employee profile photo |
| Employment type | Full-time, Part-time, Contract, or Intern |
| Leave balances | If "Carry leave balances" is selected, remaining balances are transferred. The source record's available balance is set to zero. A snapshot is stored so the carry-over can be reversed exactly. |
| Seniority / Hire date | If "Carry seniority date" is selected, the original hire date is preserved |
| WHT year-to-date totals | Gross income, tax withheld, and SSO contributions paid in the current calendar year are recorded as "prior employer YTD" on the new record. This ensures the destination company calculates withholding tax correctly for the remainder of the year. |
What Moves vs. What Stays
Unlike older versions of this flow, operational records dated on or after the transfer date are moved to the destination (so they can't keep accruing at a company that no longer employs the person). The table below lists each record type.
| Data | Before transferDate | On/after transferDate |
|---|---|---|
| Clock-in records | Stays at source | Moves to destination |
| Shifts (dated) | Stays at source | Moves to destination |
| Time-off requests | Stays at source | Moves to destination |
| Draft / Review payroll items | - | Deleted at source |
| Finalized payroll items | Stays at source (immutable) | Transfer is blocked before this can happen |
| Performance reviews | Stays at source | Stays at source |
| Uploaded documents | Stays at source | Stays at source |
Impact on Payroll
Draft payroll runs
If the source company has a Draft or Review payroll run that includes the transferred employee, the employee's payroll items are automatically removed from that run during the transfer. This prevents the source company from accidentally paying someone who has already moved.
Finalized payroll runs
Payroll runs that are already Finalized are not affected. The employee's pay records in those runs are permanent and remain unchanged at the source company. They also act as the cutoff for backdating (see above).
Payroll at the destination
After the transfer, the employee will appear in the destination company's next payroll run. The system uses the "prior employer YTD" figures to calculate withholding tax correctly, so the employee is not over-taxed or under-taxed for the remainder of the calendar year.
The WHT year-to-date carry-over only applies within the same calendar year. If the transfer happens on 1 January, the prior employer YTD will be zero because a new tax year has started.
After the Transfer
Once the transfer is complete:
- The source company shows the employee as Terminated with a termination reason of "Transferred to [Company Name]". The termination date is set to the day before the transfer date.
- The destination company has a new Active employee record with a fresh clock code.
- The employee's user account (login) is moved to the new record automatically. The employee can log in as usual and will see the destination company as their current employer. If they didn't previously have a company membership at the destination, one is created.
TRANSFER_OUTandTRANSFER_INevents are written to both employee profiles for audit.
Finding transferred employees
To view the transfer history:
- On either employee's profile, open the Transfer History tab.
- The two records are linked internally via
transferredFromEmployeeId, so searching by name will show both.
Reversing a Transfer
If a transfer was made in error, you can undo it from the destination employee's Transfer History tab by clicking Reverse on the COMPLETED transfer row.
When a transfer can be reversed
The reverse action is only available when all of the following are true:
- The transfer is in COMPLETED status (not already cancelled, not a draft)
- No Finalized payroll run at the destination already includes the employee (if any do, the tax filings they produced would be invalidated by a reversal)
- No pending leave, overtime, or attendance-correction approvals on the destination employee
- No active intercompany assignment on the destination employee
- The source employee is still in exactly the state the original transfer left it (
TERMINATED, termination date matchingtransferDate - 1 day) - if someone edited it afterwards, a reversal would conflict - The destination employee has not been transferred further to a third company
- The original transfer captured a leave-carryover snapshot (transfers made before this feature existed can't be reversed cleanly)
If any guardrail fails, the Reverse dialog tells you exactly which one and how to resolve it.
What happens on reverse
When you confirm, the server atomically:
- Moves clock-in records, shifts, and time-off requests dated ≥
transferDateback from the destination to the source employee - Deletes any draft/review payroll items created at the destination for this employee
- Reverses the leave carry-over exactly, using the snapshot stored at transfer time
- Cleans up target-only collateral: location assignments, pay items, and employee events at the destination
- Restores the source employee (
ACTIVE, clears termination date and reason) - Moves the user account back to the source record; removes the company membership at the destination if it was auto-created by the transfer
- Hard-deletes the destination employee row
- Flips the transfer record to
CANCELLEDand recordscancelledByandcancelledAt - Writes a
TRANSFER_REVERSEDevent at the source
The page then redirects you to the restored source employee.
What is lost on reverse
Anything the destination created after the transfer that can't meaningfully exist at the source:
- Profile photos uploaded at the destination
- Pay items added at the destination
- Location assignments made at the destination
The Reverse dialog explicitly warns you about these before you confirm.
Transfers vs. Intercompany Assignments
| Transfer | Intercompany Assignment | |
|---|---|---|
| Nature | Permanent change of employer | Temporary or ongoing work arrangement |
| Employee records | Two records (old terminated, new active) | One record (stays at source company) |
| Payroll responsibility | Moves to the new company | Stays with the source company |
| Billing | No recharges needed; the new company handles everything | Host company is billed via intercompany recharges |
| Best for | Permanent relocations, restructuring | Secondments, rotations, shared staff |
For more detail on intercompany assignments, see Intercompany Assignments & Billing.
Frequently Asked Questions
Can I transfer an employee to a company outside the group?
No. Transfers are only supported between companies within the same group. For moves outside the group, terminate the employee at the current company and create a new employee record at the other organization.
What if the employee has pending leave requests?
Requests with a startDate on or after the transfer date move to the destination automatically. Earlier requests stay at source. A request that spans the transfer date is moved whole based on its start.
Can I backdate a transfer?
Yes - up to the source company's last finalized payroll period that included this employee. If payroll at source is finalized through 2026-03-31, you can set a transfer date of 2026-04-01 or later. Earlier dates return a PAYROLL_FINALIZED error with the exact cutoff.
What happens to the employee's login?
The employee's user account is automatically moved to the new employee record. They can log in with the same credentials and will see the destination company. If they didn't have a membership at the destination before, one is created; this is reversed cleanly on a reversal.
Can I transfer multiple employees at once?
Currently, transfers are done one employee at a time. For bulk restructuring, you will need to process each transfer individually.
Can I reverse a transfer after payroll has run at the destination?
No. Once a finalized payroll run at the destination includes the employee, the reversal is blocked - reversing would invalidate filed tax/SSO documents. The correct path in that case is a new transfer back to the source company.