> ## Documentation Index
> Fetch the complete documentation index at: https://usepike.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Zenegy

> Sync Zenegy employees, departments and approved absence into Pike, and send hours, overtime and absence from closed pay periods to Zenegy payroll.

The Zenegy integration syncs employees, departments and approved absence from Zenegy into Pike [members](https://usepike.com/docs/members/overview.md) and [time off](https://usepike.com/docs/members/time-off.md), and sends the pay lines from each closed Pike [pay period](https://usepike.com/docs/members/payroll.md) to Zenegy as hour and absence registrations. Payroll uses the same approved timesheets you bill from, and nobody types hours into Zenegy by hand.

## At a glance

| | |
| - | - |
| **Direction** | Zenegy to Pike for employees, departments, salary mode, working hours and approved absence. Pike to Zenegy for pay lines, when **Send pay lines** is on |
| **Who sets it up** | Workspace admins, signing in to Zenegy with a Zenegy administrator user |
| **Plan** | All plans |
| **Sync** | Every 3 hours. On the Enterprise plan, changes sync in real time. |
| **Source of truth** | Zenegy for person fields, salary mode, working hours and absence registered in Zenegy. Pike for time, overtime, time off in lieu, capacity, allocations and pay lines |

## Before you start

You need:

* The workspace admin role in Pike.
* A Zenegy user with the administrator role in the company you want to connect. Hour registrations reach payroll only with the status **Approved**, and only administrators can approve registrations in Zenegy, so Pike connects with an administrator.
* The hour rates and absence types you use in Zenegy. Pike maps each pay line to one of them during setup. See [Pay codes](https://usepike.com/docs/members/payroll.md#pay-codes).
* Pike time off types for the Zenegy absence types you use. See [Time off](https://usepike.com/docs/members/time-off.md).

One Pike workspace connects to one Zenegy company.

## Connect Zenegy

**1. Open the integration**

Go to **Workspace settings → Integrations → Zenegy** and click **Add
integration**.

**2. Authorize Pike**

Sign in to Zenegy with an administrator user, choose the company to connect,
and approve the access Pike asks for. You return to Pike with the
integration connected.

**3. Map time off types**

Under **Time off types**, choose a Pike time off type for each Zenegy
absence type. Pike suggests a mapping from Zenegy's default absence types.

**4. Check pay codes**

Under **Pay codes**, check the Zenegy hour rate or absence type for each
Pike pay line. Pike fills in Zenegy's standard rates and default absence
types when you connect.

**5. Choose what syncs**

In the **What syncs with Zenegy** card, turn **Read** and **Send** on or off
for each entity, and choose whether to turn on **Invite new employees**.

**6. Import**

Click **Import data**. Departments import first, then employees, then
absence.

The integration page shows **Connected**, the Zenegy company name, **Last synced** and **Next sync**.

## What syncs

| Zenegy | Pike | Direction |
| - | - | - |
| Employees | Members | Zenegy to Pike |
| Departments | Teams | Zenegy to Pike |
| Salary mode and working hours | Employment type and capacity per week | Zenegy to Pike |
| Salary payout period | Member's pay period | Zenegy to Pike |
| Approved absence registrations | Time off | Zenegy to Pike |
| Salary data | Member cost profiles | Zenegy to Pike, when **Sync compensation to cost profiles** is on |
| Hour and absence registrations | Pay lines from a closed pay period | Pike to Zenegy, when **Send pay lines** is on |

### Employees

| Zenegy field | Pike field | Notes |
| - | - | - |
| Name | Member name | |
| Email | Member email | Also used to match existing members |
| Employee number | Payroll ID | Used on every registration Pike sends |
| Department | Team | A team is created when no Pike team has the same name |
| Title | Position | A position is created when no Pike position has the same name |
| Salary mode | Employment type | **Hourly** becomes hourly. **Fixed** and **Combined** become salaried |
| Working hours | Capacity per week | Spread evenly over Monday to Friday |
| Salary payout period | Pay period | Monthly or 14-day |
| Employment start and end date | Contract dates and member status | A member is deactivated from the end date. History is kept |

To give a part-time employee a different week, such as four days, set the [work schedule](https://usepike.com/docs/members/working-time.md#work-schedule) in Pike. Pike uses that schedule as long as the weekly total matches Zenegy.

### Time off

| Zenegy field | Pike field | Notes |
| - | - | - |
| Employee | Member | |
| Absence type | Time off type | Through your type mapping |
| Period, from and to | Dates | |
| Number of days or hours | Hours per day | A part-day absence removes only its hours from capacity |
| Status | Not stored | Only registrations with the status **Approved** import |

Default type mapping: vacation to Vacation, sick to Sick, child's sick day to Sick, maternity and paternity leave to Parental, time off in lieu to Time off in lieu, unpaid leave to Unpaid leave, and every other type to Vacation. Each type counts toward the member's [norm hours](https://usepike.com/docs/members/working-time.md#norm-hours) as set on the Pike type.

### Send pay lines

**Send pay lines** is off by default. When on, closing a pay period in Pike sends each member's [pay lines](https://usepike.com/docs/members/payroll.md#pay-lines) to Zenegy. Hour lines go as hour registrations with the mapped hour rate. Absence lines go as absence registrations with the mapped absence type. Pike sends them with the status **Approved**, so Zenegy includes them in the next payroll for the employee's payout period.

| Pike pay line | Sent to Zenegy as |
| - | - |
| Normal hours | Hour registration, normal hours, for hourly employees |
| Additional hours | Hour registration, additional hours |
| Overtime 1 | Hour registration, overtime with the first supplement |
| Overtime 2 | Hour registration, overtime with the second supplement |
| Time off in lieu earned | Hour registration, time off in lieu earned |
| Public holiday | Hour registration, public holiday hours, for hourly employees |
| Balance payout | Hour registration, payout of balance |
| Time off in lieu taken | Absence registration, time off in lieu |
| Vacation | Absence registration, vacation |
| Extra holidays | Absence registration, extra holidays |
| Sick | Absence registration, sick |
| Child sick day | Absence registration, child's sick day |
| Parental | Absence registration, parental leave |
| Unpaid leave | Absence registration, unpaid leave |

Absence lines carry only time off entered in Pike. Absence registered in Zenegy is already in Zenegy and is not sent back. Days go as the member's own days, so a part-time employee's half day reaches Zenegy as 0.5 days.

When Zenegy confirms the registrations, the Pike pay period shows **Sent to Zenegy** with the payroll it went to. If that payroll is already completed in Zenegy, the registrations go to the payroll after it.

### Compensation

**Sync compensation to cost profiles** is off by default. Only admins and finance users can turn it on.

| Zenegy field | Pike field | Notes |
| - | - | - |
| Monthly salary | Cost profile salary | For **Fixed** and **Combined** employees |
| Hourly rate | Cost profile salary, per hour | For **Hourly** employees |
| Effective date | Cost profile start date | Each salary change adds a new row |

See [Cost profile](https://usepike.com/docs/members/cost-profile.md).

### Public holidays

Connecting Zenegy assigns the Danish holiday calendar to every member who has no calendar yet. Members with a calendar keep theirs.

## Matching and duplicates

On the first import, Pike matches before it creates:

* An employee matches a Pike member with the same email. A match links the two, and Zenegy values replace the Pike values for the fields in the mapping.
* A department matches a Pike team with the same name. A title matches a Pike position with the same name.
* Absence always imports as new time off. Time off already entered in Pike for the same member and dates stays, and the Zenegy registration is listed in **Sync issues** as an overlap. Registrations Pike sent are linked to the Pike time off and do not import again.

An employee with no matching member appears under **Unmatched employees** on the integration page. Click **Invite** to send a Pike invite, or **Link to member** to link the employee to a member with a different email. With **Invite new employees** on, Pike sends the invite automatically with the default role the admin chose.

## Which system wins

| Entity | Zenegy owns | Pike owns |
| - | - | - |
| Members | Name, email, employee number, team, position, salary mode, working hours, payout period, employment dates | Role, rates, work schedule split by weekday, working time policy, project access, allocations |
| Time off | Absence registered in Zenegy | Time off requested in Pike |
| Pay lines | Salary, tax, ATP, pension and holiday pay calculated from them | Normal hours, additional hours, overtime, time off in lieu and absence sent |
| Cost profiles | Salary rows, when compensation sync is on | Cost profiles, when compensation sync is off |

Edit Zenegy-owned fields in Zenegy. Pike shows them as read-only with the Zenegy marker.

## Sync schedule

Pike syncs Zenegy every 3 hours. On the Enterprise plan, changes sync in real time. Closing a pay period sends its pay lines to Zenegy straight away on every plan. **Import data**, **Sync now** and **Refresh** on a member also run straight away. See [How sync works](https://usepike.com/docs/integrations/how-sync-works.md).

## Sync settings

While Zenegy is connected, the **What syncs with Zenegy** card is below the top button row on the integration page. Toggles save immediately.

| Entity | Read | Send |
| - | - | - |
| Employees | Yes | Not available |
| Time off | Yes | Not available |
| Compensation | Off by default, admins and finance users only | Not available |
| Pay lines | Not available | Yes, off by default |

New connections start with **Read** on for employees and time off, **Invite new employees** off, compensation off and **Send pay lines** off.

## How it works

```mermaid theme={"system"}
sequenceDiagram
  participant Team as Team in Pike
  participant HR as HR in Pike
  participant Pike
  participant Zenegy
  participant Payroll as Payroll admin in Zenegy
  Team->>Pike: Log and approve time for October
  HR->>Pike: Close the October pay period
  Pike->>Pike: Sort hours into normal hours, additional hours and overtime
  Pike->>Zenegy: Approved hour and absence registrations
  Zenegy-->>Pike: Registrations confirmed
  Pike-->>HR: Pay period shows Sent to Zenegy
  Payroll->>Zenegy: Run the October payroll
```

## Use it in Pike

### Pay overtime from the hours you bill

Approve time in [Time admin](https://usepike.com/docs/time/admin.md), then close the pay period under **Members → Payroll**. Overtime and part-time additional hours come from the same approved entries that go on invoices, so payroll and billing use one set of numbers.

### Plan around approved leave

Open **Members → Allocations** to see each person's capacity for the week. Approved Zenegy absence shows on the day with its type, and the hours are already removed from capacity, so an over-allocated day stands out before the work is due. See [Workspace capacity](https://usepike.com/docs/allocation/workspace-capacity.md).

### Onboard a new hire

When a new employee is created in Zenegy, they appear in Pike with their team, position, employment type and capacity on the next sync. Turn on **Invite new employees**, or click **Invite** under **Unmatched employees**, and the person can log time on their first day.

### Offboard a leaver

When an employment ends in Zenegy, the member is deactivated in Pike from the end date. Their logged time, allocations and history stay on every project, and their last pay period still closes and sends as usual.

## Deletes and removed records

An integration never deletes Pike data. An employee deleted in Zenegy is marked **Removed in Zenegy** on the member, stays in Pike with their history, and stops syncing. An absence registration deleted in Zenegy is removed from Pike capacity on the next sync, and the change appears in the member's time off history. Pay periods already sent keep their **Sent to Zenegy** status.

## Troubleshooting

| Symptom | Fix |
| - | - |
| An employee shows under **Unmatched employees** | The email in Zenegy differs from the member's email in Pike. Click **Link to member**, or correct the email in Zenegy. |
| Approved absence is missing | Check that **Read** is on for time off and that the registration is **Approved** in Zenegy. Then click **Refresh** on the member. |
| Time off shows the wrong type | The Zenegy absence type maps to a different Pike type. Change it under **Time off types**. Existing time off updates on the next sync. |
| **Sync issues** lists an overlap | Time off for the same dates already exists in Pike. Delete the Pike entry, then click **Retry**. |
| A pay line is held back on the payroll page | The pay line has no hour rate or absence type. Map it under **Pay codes**, then send the period again. |
| **Sync issues** lists a member with no employee number | The member is not linked to a Zenegy employee. Click **Link to member** under **Unmatched employees**, then click **Retry**. |
| **Sync issues** lists a permission error | The Zenegy user who connected is no longer an administrator. Reconnect with an administrator user. |

## Limits

* Pike does not calculate salary, tax, ATP, pension or holiday pay (feriepenge and ferietillæg). Zenegy does.
* Only closed pay periods are sent, and only approved time and time off count.
* Corrections to a period already sent go to the next period as adjustment lines.
* Vacation balances stay in Zenegy. Pike shows balances from its own [time off policies](https://usepike.com/docs/members/time-off.md#balances).
* Pending or rejected absence registrations do not sync.
* Contractors are not paid through Zenegy. Their hours stay in Pike or go to [Deel](https://usepike.com/docs/integrations/deel.md) or [Remote](https://usepike.com/docs/integrations/remote.md).

## Disconnect

Go to **Workspace settings → Integrations → Zenegy** and click **Disconnect**. Syncing stops and every member, team, position and time off entry stays in Pike with its history. Pay periods already sent keep their **Sent to Zenegy** status. Reconnecting the same Zenegy company relinks the members.

## Related

* [How sync works](https://usepike.com/docs/integrations/how-sync-works.md): The schedule, real-time sync and sync issues.
* [Pay periods and payroll](https://usepike.com/docs/members/payroll.md): Period close, pay lines and pay codes.
* [Working time and overtime](https://usepike.com/docs/members/working-time.md): Norm hours, part-time additional hours and overtime.
* [Danløn](https://usepike.com/docs/integrations/danlon.md): Hours, overtime and absence to payroll.
* [Planday](https://usepike.com/docs/integrations/planday.md): Employees, contracted hours and absence.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.