March 2026
Fields and features being removed after May 15, 2026
🚧 Breaking Change Several fields and features will be removed after May 15, 2026. Most of these are older, legacy fields and features that were repaced with newer ones in 2025, but without a formal deprecation notice. Most partners will already be using the newer fields and features and will not need to make changes as a result. However, it’s important to review each change to be sure.
Removing employer_ei_multiplier from business entity resources
We’re removing the employer_ei_multiplier read-only field from business entity resources (/business_entities, /business_entities/:id, and business_entity fields expanded in other resources).We now support having multiple CRA RP account numbers within a single business entity. As part of that feature, we now support managing a reduced EI rate through tax properties on the relevant CRA remittance account. For more information, see the EI Rate Reduction documentation.Removing tax_jurisdiction from work assignment resources
We’re removing the tax_jurisdiction field from work assignment resources (/work_assignments, /work_assignments/:id, and work_assignment fields expanded in other resources).A work assignment may work in different tax jurisdictions in different pay periods. Having a single tax_jurisdiction value prevented tracking the tax jurisdiction over time or scheduling changes to it.Instead of setting tax_jurisdiction, manage a work assignment’s Province of Employment (POE) through its ca::province_of_employment tax properties.ℹ️ We are not removing the read-only current_tax_jurisdiction field as part of these changes. This field returns the value of the work assignment’s current ca::province_of_employment tax property for convenience.Removing is_cpp_exempt and is_ei_exempt from work assignment resources
We’re removing the is_cpp_exemptand is_ei_exempt fields from work assignment resources (/work_assignments, /work_assignments/:id, and work_assignment fields expanded in other resources).A work assignment may be CPP-exempt or EI-exempt in some pay periods but not others. Having single is_cpp_exempt and is_ei_exempt values prevented tracking or scheduling changes to CPP-exempt and EI-exempt status over time.Instead of setting is_cpp_exempt or is_ei_exempt, manage a work assignment’s CPP-exempt and EI-exempt statuses through its ca::cpp_exempt and ca::ei_exempt tax properties.ℹ️ QPP- and QPIP-exempt status is already managed through tax properties.Removing employee_summary.deductions and employee_summary.deductions_ytd from pay stub resources
We’re removing the employee_summary.deductions and employee_summary.deductions_ytd fields from pay stub resources (/pay_stubs, /pay_stubs/:id, and pay_stub fields expanded in other resources).These fields are poorly-named. Their names suggest they’re the sum of deduction line items on the pay stub (or pay stubs year-to-date), but they’re actually the sum of any line item subtracted from the employee’s pay, i.e. deduction, employee benefit, and employee statutory withholding line items.You can get the same information from the employee_summary.subtractions and employee_summary.subtractions_ytd fields respectively.Removing support for creating forms identifying owner with work_assignment_id
We’re removing support for creating a form (POST /forms) using a work_assignment_id field to identify the owner of the form.When we first added support for forms, we only supported work assignment-level forms (e.g. TD1 and TP-1015.3-V), and so only ever needed work_asignment_id. Now that we support employee-level forms (e.g. T4 and ROE), we need different identifiers for different forms.Instead of sending a work_assignment_id on the requestowner_id:Removing work_assignment from form resources
We’re removing the work_assignment field from form resources (/forms, /forms/:id, and form fields expanded in other resources).Use the owner field to determine the owner of the form.Removing support for expanding all line items on a pay stub with ?expand=line_items
We’re removing support for expanding all line items on a pay stub in a single line_items field using /pay_stubs?expand=line_items or /pay_stub/:id?expand=line_items.Each type of line item has a unique shape, and adding new types of line items could break consumers who aren’t expecting their shapes. Additionally, some use cases only require certain types of line items, and returning all line items is unnecessarily expensive. Instead of using expand=line_items to expand the line items, use expand=<type>_line_items,<type>_line_items,... for each type of line item you want returned.Removing t4_code from allowance type resources
We’re removing the t4_code field from allowance type resources (/allowance_types, /allowance_types/:id, and allowance_type fields expanded in other resources).Where an allowance is reported on a T4 isn’t a simple 1:1 mapping. This field was always previously returned with the value null. The form_mappings field contains more nuanced information about how types map to forms.Removing is_taxable, is_insurable, and is_pensionable from allowance type resources
We’re removing the is_taxable, is_insurable, and is_pensionable fields from allowance type resources (/allowance_types, /allowance_types/:id, and allowance_type fields expanded in other resources).Whether or not an allowance type is taxable, insurable, or pensionable isn’t a simple boolean value; it varies by jurisdiction. We’ve replaced these fields with a new Line Item Type Features system that will return more nuanced information about line item types in each jurisdiction we support.Removing t4_code from deduction type resources
We’re removing the t4_code field from deduction type resources (/deduction_types, /deduction_types/:id, and deduction_type fields expanded in other resources).Where a deduction is reported on a T4 isn’t a simple 1:1 mapping. This field was always previously returned with the value null. The form_mappings field contains more nuanced information about how types map to forms.Removing t4_code from reimbursement type resources
We’re removing the t4_code field from reimbursement type resources (/reimbursement_types, /reimbursement_types/:id, and reimbursement_type fields expanded in other resources).Where a reimbursement is reported on a T4 isn’t a simple 1:1 mapping. This field was always previously returned with the value null. The form_mappings field contains more nuanced information about how types map to forms.Removing the is_taxable, is_insurable, and is_pensionable from reimbursement type resources
We’re removing the is_taxable, is_insurable, and is_pensionable fields from reimbursement type resources (/reimbursement_types, /reimbursement_types/:id, and reimbursement_type fields expanded in other resources).Whether or not a reimbursement type is taxable, insurable, or pensionable isn’t a simple boolean value; it varies by jurisdiction. We’ve replaced these fields with a new Line Item Type Features system that will return more nuanced information about line item types in each jurisdiction we support.Removing journal entry line item report
We’re removing the journal entry line item report (POST /reports/journal-entry-line-item).It has been replaced by the Journal Entry Report.Removing amount_override from line item resources
We’re removing theamount_override field from all line item resources:/allowance_line_items/:id/deduction_line_items/:id/earning_line_items/:id/employer_statutory_withholding_line_items/:id/reimbursement_line_items/:id/statutory_withholding_line_items/:id
amount and amount_override to managed_amount, custom_amount, and amount in early 2025.Use the custom_amount field instead.January 2026
name Read-Only amount and hours Properties on Line Items
🚧 Breaking Change Theamountandhoursproperties on Line Items will be read-only as of March 1, 2026.
Read-Only amount and hours Properties on Line items
Introduction
In Nmbr, each type of line item has 3 “amount” properties:-
managed_amount: The managed amount for the line item. The value is either calculated by the system (e.g. statutory holiday pay or vacation pay payout) or configured on the line item’s recurrence (e.g. a recurring allowance’samount). This property is read-only. -
custom_amount: The custom amount for the line item. -
amount: The final amount for the line item. This is the amount that will be paid, deducted, withheld, etc. The value will becustom_amount, if set, andmanaged_amountotherwise.
-
managed_hours: The managed hours for the line item. This amount is the default number of hours on the line item’s Pay Rate. This property is read-only. -
custom_hours: The custom hours for the line item.custom_hourscan be used to prorate the dollaramounton salary line items with a Pay Rate. -
hours: The final hours for the line item. The value will becustom_hours, if set, andmanaged_hoursotherwise.
amount and hours properties are read/write. If you create or update a line item with an amount or hours value, the line item’s custom_amount or custom_hours values will be set.What’s Changing
On March 1, 2026 we will be changing theamount and hours properties to be read-only. If you create or update a line item with amount or hours values, these values will be ignored.If your application sends amount or hours properties in requests to create or update line items, you will need to rename amount to custom_amount and hours to custom_hours in requests.For example, if you make the following request to create an earning line itemPOST /earning_line_itemsPOST /earning_line_itemsWhat’s Not Changing
We will continue sending the computedamount and hours values in responses. Your application can continue to rely on these values.GET /earning_line_items/ernli_01KBG99GP45784S1PVZTAGFE6XSeptember 2025
name Property Required on Business Presets
🚧 Breaking Change
The name property on Business Presets will be required as of November 15th, 2025.
name Property Required on Business Presets
Business Presets currently require a value for either the title property or the name property.-
titleis copied to recurrences (pay rates, allowances, employee and employer benefits, deductions, and reimbursements) and line items, and used as theirtitle. -
nameis used to identify the preset in the component or portal, or when grouping line items by preset on pay stubs or reports. If a Business Preset doesn’t have aname, we currently fall back ontitle.
name property required as of November 15th, 2025 and removing the logic that currently falls back to title. In order to create new Business Presets, you will need to supply a value for name.The title property will continue to be optional.Business Entity-level templates deprecated
🚧 Breaking Change Business Entity-level templates for Allowances, Benefits, Deductions, and Reimbursements have been deprecated and will be removed on November 15, 2025. Please migrate to the new Business Presets feature. Legacy endpoints will continue to function until this date but will not receive updates or bug fixes.
Deprecation of Business Entity-Level Templates for Allowances, Benefits, Deductions, and Reimbursements
Nmbr previously supported defining templates for Allowances, Benefits, Deductions, and Reimbursements at the Business Entity level. As part of improving our API and providing a more consistent experience, we are replacing this feature with the new Business Presets feature, which supports a larger set of use cases with fewer endpoints.Deprecated Endpoints
The following endpoints are now deprecated and have been replaced by the new Business Presets endpoints:/business_entity_allowances/business_entity_benefits/business_entity_deductions/business_entity_reimbursements
Migration
Data
You do NOT need to perform a data migration from legacy templates to Business Presets.When Business Presets were released, legacy templates were migrated to Business Presets of the appropriatetype. For example, every legacy template for Allowances was migrated to a Business Preset of type allowance.To maintain backward compatibility, the APIs for these features were changed to manage Business Presets of the appropriate type. For example, creating/updating/deleting a Business Preset of type allowance will appear to create/update/delete a legacy template for Allowances, and vice versa. However, behind the scenes there is actually only one record in the Nmbr system: the Business Preset.During this migration, the ULIDs for legacy templates were retained as the ULID for the corresponding Business Preset, so partners will not need to store two ULID values (legacy template ULID and Business Preset ULID) or map between them.API
You DO need to perform a code migration to change any code that is currently calling the legacy template APIs to instead call the Business Presets APIs.Allowances
Change any code calling the/business_entity_allowances endpoints with the property "allowance_type": "T" to instead call the corresponding /business_presets endpoints with the properties "type": "allowance" and "subtype": "T".For example, if you’re working with taxable meals allowances, "allowance_type": "meals_taxable" will become "type": "allowance" and "subtype": "meals_taxable".As mentioned in the data section above, you can continue to use the ULIDs for legacy templates.| Action | Old Endpoint | New Endpoint |
||||
| | name | New required property. All Business Presets must have a name. The name is used when listing Business Presets and when grouping line items by Business Preset. |
| | type | New required property. For allowances, the type is always allowance. |
| allowance_type | subtype | Renamed. |
| business_entity_id | business_entity_id | Unchanged. |
| title | title | Unchanged. |Benefits
Since Business Presets were released, Benefits were split into separate Employer Benefits and Employee Benefits.For Employer Benefits, change any code calling the/business_entity_benefits endpoints with the property "benefit_type": "T" to instead call the corresponding /business_presets endpoints with the properties "type": "employer_benefit" and "subtype": "T".| Action | Old Endpoint | New Endpoint |
||||
| Create | POST /business_entity_benefits with body { "benefit_type": "T", ... } | POST /business_presets with body { "type": "employee_benefit", "subtype": "T", ... } |
| List | GET /business_entity_benefits | GET /business_presets?type=employee_benefit |
| Retrieve | GET /business_entity_benefits/:ulid | GET /business_presets/:ulid |
| Update | PUT /business_entity_benefits/:ulid | PUT /business_presets/:ulid |
| Delete | DELETE /business_entity_benefits/:ulid | DELETE /business_presets/:ulid |The legacy benefit template properties map to the Business Presets properties as follows:| Old Property | New Property | Notes |
||||
| Create | POST /business_entity_deductions with body { "deduction_type": "T", ... } | POST /business_presets with body { "type": "deduction", "subtype": "T", ... } |
| List | GET /business_entity_deductions | GET /business_presets?type=deduction |
| Retrieve | GET /business_entity_deductions/:ulid | GET /business_presets/:ulid |
| Update | PUT /business_entity_deductions/:ulid | PUT /business_presets/:ulid |
| Delete | DELETE /business_entity_deductions/:ulid | DELETE /business_presets/:ulid |The legacy deduction template properties map to the Business Presets properties as follows:| Old Property | New Property | Notes |
||||
| Create | POST /business_entity_reimbursements with body { "reimbursement_type": "T", ... } | POST /business_presets with body { "type": "reimbursement", "subtype": "T", ... } |
| List | GET /business_entity_reimbursements | GET /business_presets?type=reimbursement |
| Retrieve | GET /business_entity_reimbursements/:ulid | GET /business_presets/:ulid |
| Update | PUT /business_entity_reimbursements/:ulid | PUT /business_presets/:ulid |
| Delete | DELETE /business_entity_reimbursements/:ulid | DELETE /business_presets/:ulid |The legacy reimbursement template properties map to the Business Presets properties as follows:| Old Property | New Property | Notes |
||---|
| | name | New required property. All Business Presets must have a name. The name is used when listing Business Presets and when grouping line items by Business Preset. |
| | type | New required property. For reimbursements, the type is always reimbursement. |
| deduction_type | subtype | Renamed. |
| business_entity_id | business_entity_id | Unchanged. |
| title | title | Unchanged. |Deprecation of Legacy Benefits API
🚧 Breaking Change
The legacy Benefits API has been deprecated and will be removed on August 31, 2025.
Please use the new Benefits API endpoints for all benefit-related operations. Legacy endpoints will continue to function until this date but will not receive updates or bug fixes.
Deprecation of Legacy Benefits API
As part of improving our API and providing a more consistent experience, we are deprecating the legacy Benefits endpoints. We have split the functionality into two distinct sets of API endpoints: one for employers and one for employees. This allows us to better align the Benefits functionality with our existing API structure.All existing data has been migrated to the new endpoints, and you can continue to access your employee and employer benefits data without interruption. All existing Benefit and Benefit Line Item ULIDs have been preserved on the corresponding Employee Benefit and Employee Benefit Line Item records.More information can be found in the Configuring Benefits documentation.As well as providing a more consistent API experience, these changes are required to offer improved functionality for reporting and GL code mapping.Legacy Benefits API Deprecation
The following endpoints are now deprecated and have been replaced by the new Employee and Employer Benefits API endpoints:-
/benefits→ replaced by:/employee_benefits/employer_benefits
-
/benefit_line_items→ replaced by:/employee_benefit_line_items/employer_benefit_line_items
-
/benefit_types→ replaced by:/employee_benefit_types/employer_benefit_types
Benefit Types
Previously, a singlebenefit_type was used to categorize benefits. This did not correctly represent benefits as they are used in the real world. Some benefits are contributed to by both the employer and employee, while others are only contributed to by one party. This ambiguity made accurate reporting and accounting more difficult.To address this, we have introduced two new benefit types: employee_benefit_type and employer_benefit_type. The two benefit types now contain different values, reflecting the distinct contributions made by employees and employers. For example, pension_rrsp may appear in both employee_benefit_type and employer_benefit_type, whereas gift_near_cash will only appear in employer_benefit_type.These changes not only provide a more consistent API experience but also enable improved reporting and GL code mapping.May 2025
Updates to Line Item Type Filters
🚧 Breaking Change
Type filters in Line Item listing endpoints have been replaced with include_types.
The deprecated filters listed below will be removed on June 30, 2025.
Renamed Type Filters for Line Item Listings
The following query parameters have been renamed toinclude_types for consistency across line item listing endpoints:allowance_type→include_types(Allowances)benefit_type→include_types(Benefits)deduction_type→include_types(Deductions)earning_type→include_types(Earnings)employer_statutory_withholding_type→include_types(Employer Statutory Withholdings)reimbursement_type→include_types(Reimbursements)statutory_withholding_type→include_types(Statutory Withholdings)
New Filtering Options
All line item listing endpoints now support both:-
include_types: Return only items matching one or more specified types. Example: Retrieve onlywageandovertimeearnings. -
exclude_types: Exclude items of one or more specified types from the results. Example: Omitunion_duesfrom deduction results.
These changes promote consistency and improve filtering flexibility across the API.
April 2025
Additional Validation on Date Fields
🚧 Breaking Change Additional validation will be performed on date fields as of May 1st, 2025.
Additional Validation on Date Fields
Our API accepts and returns date-related fields following the ISO 8601 standard:datefields are formattedYYYY-MM-DDwithout a time component (e.g.2023-01-01)date-timefields are formattedYYYY-MM-DDThh:mm:ss.sssZ(e.g.2023-01-01T06:30:00.000000Z)
date fields, and are accepting the date-time format or other formats.We will be introducing validation on these fields beginning May 1, 2025, and accepting only the date format after that.The following key fields have been identified as changing:-
When creating or updating employees, the
date_of_birthfield must be formattedYYYY-MM-DD. -
When creating or updating allowances, benefits, deductions, reimbursements, or pay rates, the
effective_fromandeffective_tofields must be formattedYYYY-MM-DD. -
When creating or updating pay schedules, the
anchor_pay_dateandanchor_end_of_pay_periodfields must be formattedYYYY-MM-DD. -
When terminating work assignments, the
effective_datefield must be formattedYYYY-MM-DD. -
When filtering reports by pay date, the
pay_date_fromandpay_date_tofields must be formattedYYYY-MM-DD.
date in our documentation. Please ensure that date fields are properly formatted.amount Required on Reimbursements
🚧 Breaking Change
amount field required on reimbursements as of May 30th, 2025.
amount Required on Reimbursements
When creating reimbursements, the amount field is not currently a required field.We will be making the amount field a required field beginning May 30, 2025, and requiring a value for the field after that.Please ensure the amount field is supplied when creating reimbursements.March 2025
Deprecating Vacation Pay on Pay Rates
🚧 Deprecation Notice Vacation Pay on Pay Rates is being deprecated and will be removed on May 15th, 2025.
Deprecating Vacation Pay on Pay Rates
As part of improvements to functionality for Vacation Pay, we have deprecated the Vacation Pay attributes on the Pay Rate entity.vacation_pay_percentage- this attribute is deprecated and has been removed.vacation_pay_method- this attribute is deprecated and has been removed.
Migrating to Vacation Pay Settings
To manage the vacation pay percentage and payout methods for a Work Assignment, you can use thevacation_pay_settings endpoint. This entity will allow you to set the percentage, the effective dates, and method of vacation pay for a specific Work Assignment.All eligible earning line items will have vacation pay calculated based on the active Vacation Pay Setting and the Province of Employment for the Work Assignment.To read more, please see the Vacation Pay Guide.July 2024
May 2024
Updates to Future PayStub Line Items
Enhanced Line Item Generation: We’ve refined the generation process for recurring line items on future Pay Stubs. Now, line items for recurring Earnings, Benefits, Reimbursements, Allowances, and Deductions will automatically populate once the preceding payroll changes status to paid. This ensures that your upcoming Pay Stubs reflect the most current and accurate information.Changes to Validation on Pay Rates
Requiredexpected_hours_per_week Field: To improve the accuracy of Statutory Withholdings for off-cycle Payrolls, the expected_hours_per_week field is now mandatory when creating a new Pay Rate. This update helps minimizing discrepancies and potential errors in payroll processing.
