Reference General Setup
Before configuring this integration, please complete the Simployer HRM Integration – General Setup Guide. This guide covers the initial steps for setting up integrations in Simployer and ensures that you have configured the necessary base settings for successful data sync.
Overview:
With this integration you will connect Simployer One to your Xledger account via API and can then do the following:
Scheduled or manual sync of employee data such as personal information, employment data, compensation data and more from Simployer One to Xledger
Sync time off data such as sickness, parental leave and vacations to Xledger for the period that you choose. You have full control over what absences are exported for what employees and for what period
Available in: Norway
Xledger requirements
You need to have access to the following valid credentials.
Access token: this can be found in here: https://xledger.net/f/api-tokens
Click on Generate new token
Provide a Token description, for example, "Simployer One" or "Simployer"
Select «Read» and «Write» for Accounts payable, Accounts receivable, Common and General Ledger and Human Resources
Click Generate token
Once the token has been generated, you can use it when setting up the Xledger integration in Simployer One
Employee data
Employee data is synchronized one-way from Simployer One to Xledger. On each sync, the integration compares the values in Simployer One against the existing values in Xledger. Edits made directly in Xledger to fields covered by the integration might be overwritten on the next sync, so corrections should be made in Simployer One.
Requirements and limitations
Required Fields:
- Employee Number - must be unique
- Hire Date
- Job Title - employees without a job title are skipped entirely
- At least one Employment with a Start Date.
Limitations:
Only active employees processed (earliest hired if multiple exist)
Only permanent employments (
permanent_employment) with 100% rate synced (part-time skipped with warning)Only NOK currency for payroll rates (other currencies skipped)
Historical data (positions/rates before current month/year) cannot be synced for existing employees due to locked accounting periods
Supported payout periods: HOURLY, MONTHLY, ANNUAL (other periods skipped)
"Failed: misconfigured employee" message in notification indicates the Xledger record itself is in an invalid state and needs to be cleaned up directly in Xledger before the sync can succeed.
Some fields are currently hardcoded or have a default value, see the table below for more information.
Simployer Field | XLedger Field | Notes |
|---|---|---|
Person.firstName | Contact.firstName | Required |
Person.lastName | Contact.lastName | Required |
Person.firstName + lastName | Contact.name | Concatenated |
| Contact.initials | First letter of first + last name |
Person.email | Contact.email | Required. If an employee with the same employee number already exists in Xledger but with a different email, the entire employee is skipped |
Person.phoneNumber | Contact.phone |
|
Person.address.streetAddress1 | Contact.streetAddress | Address changes sync to both Contact and Supplier |
Person.address.postalCode | Contact.zipCode |
|
Person.address.city | Contact.place |
|
Person.birthdate | Contact.birthday |
|
Person.nationalIdList\[0\].nationalId | Contact.socialSec | First national ID in list, or empty if none |
| Contact.countryId | Hard-coded: 5 (Norway) |
Supplier:
Simployer Field | XLedger Field | Notes |
|---|---|---|
Employee.employeeNumber | Supplier.code |
|
Person.firstName + lastName | Supplier.description | Concatenated |
Person.bankAccount.accountNumber | Supplier.bankAccount | Optional |
Person.address.streetAddress1 | Supplier.streetAddress | Synced from Contact |
Person.address.streetAddress2 | Supplier.streetAddress2 |
|
Person.address.postalCode | Supplier.zipCode |
|
Person.address.city | Supplier.place |
|
| Supplier.countryDbId | Hard-coded: 5 (Norway) |
Employee:
Simployer Field | XLedger Field | Notes |
|---|---|---|
Employee.employeeNumber | Employee.code | Required. Must be unique |
Person.firstName | Employee.firstName |
|
Person.lastName | Employee.lastName |
|
Person.firstName + lastName | Employee.description | Concatenated |
Employee.hireDate | Employee.dateFrom | Required |
Employee.hireDate | Employee.employmentFrom | Required |
Employee.jobTitle | Employee.positionValueDbId | References the Job Title |
Job Title:
Simployer Field | XLedger Field | Notes |
|---|---|---|
Employee.jobTitle | ObjectValue.description | Required. Created in Xledger if doesn't exist (definitionId: 713 - Position Value). Matching is case-insensitive. Employees without job title are skipped. This job title is automatically linked to Employee, Position, and Payroll Rate records. |
Position:
Simployer Field | XLedger Field | Notes |
|---|---|---|
Employment.startDate | EmployeePosition.dateFrom | Required. For existing employees: only positions starting within current year + last year are synced (older positions may be locked by accounting). All positions synced for new employees. |
Employment.endDate | EmployeePosition.dateTo | Optional |
Employment.rate | EmployeePosition.parttimePct | Must be 100 (only 100% FTE supported, part-time skipped with warning) |
Employment.employmentId | EmployeePosition.internalInfo | Used to match existing positions |
| EmployeePosition.mainPosition | Based on Employee.mainEmploymentId |
| EmployeePosition.employmentTypeDbId | Hard-coded: 28136 (only |
Employee.jobTitle | EmployeePosition.positionDbId | Job title reference. Preserved for historical positions (start date in past). |
Payroll Rates:
Simployer Field | XLedger Field | Notes |
|---|---|---|
Payroll.payrollEffectiveDate | PayrollRate.dateFrom | For existing employees, payroll rates with an effective date before the current month cannot be created or updated (the period is locked by accounting). For new employees being synced for the first time, all historical rates from Simployer are accepted with no age limit. Once the employee exists in Xledger, the current-month lock applies on subsequent syncs. |
Compensation.compensationAmount | PayrollRate.rate | Converted to annual amount: Hourly = as-is (hourly rate), Monthly = × 12 (annual equivalent), Annual = as-is (already annual). Recommended: Use annual payout period in Simployer to avoid conversion. |
Compensation.compensationCurrency |
| Must be NOK (other currencies skipped with message in notification. Rest of the employee's data may continues to sync.) |
Payroll.payrollAdditionalProperties.payoutPeriod | PayrollRate.rateElementDbId | 4319462 (hourly) or 4319459 (monthly/annual) - determines how rate is interpreted |
Employee.jobTitle | PayrollRate.positionDbId | Job title reference. Preserved for historical rates (effective date before current month). |
Absence data
Absences are synchronized one-way from Simployer One to Xledger as new records. The integration does not update or delete absences in Xledger after they have been created. Once an absence has been synced, subsequent edits or deletions in Simployer are not reflected in Xledger. Any corrections needed after the initial sync must be made directly in Xledger.
As of now, Only the 6 standard absence types from Simployer (sick_leave, self_certified, vacation, childcare, parental_leave, off_duty) are synced to Xledger.
Simployer field | Xledger field | Mapping conditions |
Grade Percentage | leavePercent |
|
Absence Start Date | timeFrom |
|
Absence End Date | timeTo |
|
Absence End Date | toDate |
|
Absence Start Date | fromDate |
|
| Comment | Defaulted to "" |
| Absence Type | Text | |
Codes |
|
|
childcare | “CS” |
|
vacation | “V” |
|
sick_leave | “SN” |
|
| self_certified_sick_leave | "SWN" | Self Certified Sick Leave |
| parental_leave | B20 | When coverage rate is 100% (or null) |
| parental_leave | B30 | When coverage rate is 80%–under 100% |
| off_duty | A61 |
Var artikeln till hjälp?
Toppen!
Tack för din feedback
Vi beklagar att det inte var till hjälp
Tack för din feedback
Feddback skickat
Vi uppskattar din feedback och uppdaterar artikeln vid behov