2027-01-01 Release Notes
Attendance > Shift
A shift — one worked-time interval for an employee (a clock-in and clock-out on a given day), the atomic record of tracked attendance. It carries the day it counts towards, its clock-in and clock-out, whether it is workable, and how it was clocked.
Request
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in. it must belong to the workplace sent in workplace_id
Request
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out. it must belong to the workplace of the open shift
Request
New Field clock_in_work_area_id has been added
Id of the work area where the employee clocked in. it must belong to the workplace sent in workplace_id
New Field clock_out_work_area_id has been added
Id of the work area where the employee clocked out. it must belong to the workplace sent in workplace_id
Request
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in. it must belong to the shift's workplace
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out. it must belong to the shift's workplace
All Responses
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Authentication > Email change
Change the email an employee uses to log in to Factorial. A change stays pending until the employee confirms the new email. It is applied straight away only when the new email belongs to a domain the company has verified and automatic confirmation is turned on in the security settings.
New Endpoint
New Endpoint
Compensations > Payroll run participant
Payroll run participant — an employee taking part in a regular payroll run, whose payroll results can be imported through compensations/payroll_results bulk_create
New Endpoint
CostCenters > Resource distribution
How the cost of a record, such as an expense or a purchase invoice, is split across cost centers: one row per cost center with its share. When an expense keeps its employee's default cost centers, the rows are the employee's split in force on the expense date; when it was charged to other cost centers, they are the ones set on the expense. For a financial document, such as a purchase invoice, the rows are the cost centers set on it. Records the caller cannot read through their own resource are left out. Resolve cost_center_id with the finance/cost_centers resource.
New Endpoint
Documents > Document
Documents
Request
New Field deleted_by_id has been added
Access identifier recorded as the one who moved the documents to the trash bin, refers to /employees/employees endpoint. required for api key requests; requests made on behalf of a user ignore it and record that user.
Employees > Employee
An employee of the company — their identity, organisational placement (manager, teams, location, legal entity) and lifecycle (active, terminating, terminated). The central record the rest of the HR data hangs off.
Request
New Field job_title has been added
Job title of the employee's first contract, at most 255 characters.
Request
New Field identifiers has been added
Return only the employees whose identity document (the identifier field: national id, nie, passport…) is one of these. dots, dashes, spaces, letter case and leading zeros are ignored, so 12.345.678-z and 0012345678z both find an employee stored as 12345678z. at most 100 values. combined with social_security_numbers, an employee has to match both. terminated employees you can see are matched too; add only_active to leave them out. only employees whose personal information you can read are matched.
New Field social_security_numbers has been added
Return only the employees whose social security number (the social_security_number field; in spain, the nuss or naf) is one of these. anything other than a digit is ignored, and so are leading zeros, so 08/08511662/35 finds an employee stored as 080851166235. at most 100 values. combined with identifiers, an employee has to match both. terminated employees you can see are matched too; add only_active to leave them out. only employees whose personal information you can read are matched.
All Responses
New Field birthplace_postal_code has been added
5-digit french postal code of the employee's birthplace. only set for employees in a french legal entity.
EmployeeUpdates > Contract change
Employee update in contract changes
All Responses
New Field type has been added
The kind of contract change. contract is an update to the contract conditions. contract_deactivation and contract_reactivation close and reopen an activity period of a fixed-discontinuous contract, and carry the conditions of the contract version in force on that date.
New Field activity_changed_on has been added
The date the activity period closed or reopened, for a contract_deactivation or contract_reactivation. null for a plain contract change, whose date is effective_on. the other dates on this payload belong to the contract version in force on this date, not to the activity change itself.
Expenses > Per diem
A per-diem allowance — the detail record behind an expensable of type "perdiem", covering a fixed daily allowance for the days of a business trip instead of itemised receipts.
All Responses
New Field category_id has been added
The id of the custom category of the per diem (a per diem subcategory, or the per diem category itself).
Finance > Financial document
Financial Document is a document that represents a financial transaction. Could be an invoice, a credit note or receipt.
All Responses
New Field approval_rejected_at has been added
When the current review round of the finance approval flow turned this purchase invoice down. a rejection is terminal for its own round -- the document stops being editable and deletable, and a correction goes through a credit note rather than a second review of the same round -- but it is not terminal for the document: a new round can open, for instance when the expense behind the invoice is restarted, and opening one clears this field. so it can go back to null. null also on a document that was approved, is still pending a decision, or never entered the flow.
New Field approval_approved_at has been added
When the current review round of the finance approval flow approved this purchase invoice. not the same question as validated_at: approving through the finance action seals both, but a document can be validated on its own through an update, and one that never entered the flow is neither. like its counterpart it reports the current round only, so opening a new one clears it and it can go back to null.
Finance > Financial document line item
A line of a purchase financial document (invoice or credit note). Lines are written through the financial document create and update endpoints; this resource only reads them.
New Endpoint
New Endpoint
Goals > Goal
Goal
New Endpoint
New Endpoint
Goals > Target period
Goal Target Periods
New Endpoint
New Endpoint
Integrations > Sync run output
Integrations SyncRunOutput represents the output file produced by a sync run (e.g. a CSV export). This endpoint is designed to be used by integrators building an integration between Factorial and an external system through the Factorial Integration Framework.
Request
New Field digests has been added
Optional json array with the digest of the record behind each syncable sync run in the file, as synced, used to detect later changes to it. only kept for integrations whose app computes the digest; each digest is at most 64 characters.
Integrations > Syncable state
The sync or export current state of a syncable object, along with validation messages and errors
Request
New Field sync_type has been added
The type of synchronization to filter by, in "namespace/resource" form. takes precedence over resource_syncable_type, which is ambiguous when several sync types share a resource (for example employees/employee).
Integrations > Syncable sync run
Integrations SyncableSyncRuns represents all the resources that are included in a sync or export, in other words, a SyncRun. This endpoint is designed to be used by integrators building an integration, in order to fetch all the data that needs to be synced or exported in a given run.
Request
New Field payload_digest has been added
Digest of the record as it was synced, used to detect later changes to it. only kept for integrations whose app computes the digest; at most 64 characters.
JobCatalog > Node attribute
JobCatalog Node Attributes
All Responses
New Field value_additional_compensation has been added
Additional-compensation payload with amount strategy, currency, recurrence and either a single amount or a min/max range (cents). the payroll concept is identified by the attribute's id (attribute_id), not the payload. internal only for now (not exposed in public rest responses).
ProjectManagement > Project
A project of the company — a named initiative (internal or for a client) that time and costs are tracked against. Expenses, time records and budgets can be charged to a project; billable projects recharge those costs to a client.
Request
New Field restrict_booking_by_phase has been added
When true, employees can only book time on the subprojects (phases) they are assigned to. leave it out to keep the current value.
All Responses
New Field restrict_booking_by_phase has been added
When true (and the phase assignment feature is enabled for the company), employees can only book time on the subprojects (phases) they are assigned to.
ProjectManagement > Subproject worker
Project Management Subproject Workers
New Endpoint
New Endpoint
New Endpoint
New Endpoint
New Endpoint
Timeoff > Allowance
An Allowance represents how a Time off counter accrues and deducts days.
All Responses
New Field limit_negative_counter_type has been added
How far the counter is allowed to go negative when negative_counter_type is negative_counter_enabled. "no_limit" allows any negative balance; "limit_negative_counter" only allows a negative the next cycle can cover. always set when negative counters are enabled; null when they are disabled.
Timeoff > Allowance incidence
Timeoff allowance incidence
New Endpoint
New Endpoint
New Endpoint
Timeoff > Leave
A time off leave — one employee's request to be absent for a date range (or part of a day) under a given leave type. Its approved status is tri-state — null while the request is pending, true once approved, false once rejected.
New Endpoint
New Endpoint
Timeoff > Leave change request
A request to change, or cancel, a time off leave that is already approved. It goes through the employee's approval flow and the leave keeps its approved values until the request is approved. status is pending, approved, rejected or withdrawn.
New Endpoint
New Endpoint
New Endpoint
New Endpoint
Webhooks
Payloads
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Payloads
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Payloads
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Payloads
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Payloads
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Payloads
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Payloads
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Payloads
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Payloads
New Field clock_in_work_area_id has been added
Identifier of the work area where the employee clocked in
New Field clock_out_work_area_id has been added
Identifier of the work area where the employee clocked out
Payloads
New Field birthplace_postal_code has been added
5-digit french postal code of the employee's birthplace. only set for employees in a french legal entity.
Payloads
New Field birthplace_postal_code has been added
5-digit french postal code of the employee's birthplace. only set for employees in a french legal entity.
Payloads
New Field birthplace_postal_code has been added
5-digit french postal code of the employee's birthplace. only set for employees in a french legal entity.
Payloads
New Field birthplace_postal_code has been added
5-digit french postal code of the employee's birthplace. only set for employees in a french legal entity.
Payloads
New Field birthplace_postal_code has been added
5-digit french postal code of the employee's birthplace. only set for employees in a french legal entity.
Payloads
New Field birthplace_postal_code has been added
5-digit french postal code of the employee's birthplace. only set for employees in a french legal entity.

