---
title: "Create employment for existing employee"
method: POST
path: "/v2/providers/employers/employees/{employeeId}/employments"
tags: ["Create employment"]
---

# Create employment for existing employee

`POST /v2/providers/employers/employees/{employeeId}/employments`

## Request

- Base URL: `https://api.loket.nl`
- URL: `https://api.loket.nl/v2/providers/employers/employees/{employeeId}/employments`
- Auth: none required

__Activity name :__ <a href="https://developer.loket.nl/Activities/PostEmploymentByEmployeeId" target="_blank">PostEmploymentByEmployeeId</a><br><br>Create an additional employment for an already existing employee.<br><br>Please note that the creation of an Employment is not RESTful by design.<br><br>In Loket, when a new Employee is created it will have to be created including its underlying Employment and its accessory resources. This specific endpoint is relevant in the following scenario: there is already an Employee with at least one Employment, and one wishes to create an additional Employment for that currently existing Employee. When successfully calling this endpoint, an Employment with its accessory resources will be created.<br><br>__Metadata :__ <br>* Possible options (metadata) for generic fields of the type \metadata\" can be acquired (GET) by adding `/metadata` to the URL.<br>* Possible options dependent on a specific payrollAdministration can be acquired by adding `/metadata/payrolladministration/{payrollAdministrationId}` to the url.<br>* Possible options for payGrade can be acquired by adding `metadata/payrolladministration/{payrollAdministrationId}/payscale/{payScaleKey}` to the url.<br><br>A `payGrade` has time based values dictating the wage for a given period. These values can be acquired by performing another metadata request by adding `/metadata/payrolladministration/{payrollAdministrationId}/payscale/{payScaleKey}/paygrade/{payGradeKey}` to the url. This endpoint has the optional parameter \"date\" that may be used to specifying a measure date.<br><br>__Defaults :__ Default values for a new object can be acquired by adding `/defaults` to the URL. <br><br>        <br>Default values that are dependent on the selected payroll administration can be acquired by adding `../v2/providers/employers/employees/employments/defaults/payrolladministration/{payrollAdministrationId}` to the URL.<br><br>__NonPayrollAdministrations__ For nonPayrollAdministrations the equivalent metaData-endpoints are also available as described above.  Also, a defaults endpoint is available for the nonPayrollAdministration.  Please note that this requires `../nonpayrolladministrations/{nonPayrollAdministrationId}` in the path.<br>"

## Path parameters

- `employeeId` string, uuid, required

## Headers

- `Authorization` string, required
- `Accept` string, required

## Request body

- CreateEmploymentObject: The aggregated employment templates
  - `employeeData` Employee2
    - `iban` string, nullable: International Bank Account Number. Only IBAN without spaces are accepted.
  - `employmentData` Employment2
    - `startDate` string, date: The date on which this employment starts.
    - `historicalStartDate` string, date, nullable: The historical date on which the employee was first employed. This field is used when an employee has multiple employments in time. In most cases this field should be used as the date on which the employee started working for the company.
    - `payrollAdministration` object, nullable: An administration used for payrolling. This field can not have a value at the same time as `nonPayrollAdministration` `payrollAdministration` is a metadata field within the employer context. Possible values can be managed by the user.
      - `id` string, uuid: The unique identifier of an object (GUID/UUID)
      - `name` string: Name of the payroll administration
      - `clientNumber` integer: The client number is a unique number for administrations that are used for payrolling. This field has no value if the administration is not used for payrolling.
      - `description` string: Description of the administration
    - `nonPayrollAdministration` object, nullable: An administration that can not be used for payrolling. This field can not have a value at the same time as `payrollAdministration` `nonPayrollAdministration` is a metadata field within the employer context. Possible values can be managed by the user.
      - `id` string, uuid: The unique identifier of an object (GUID/UUID)
      - `name` string, nullable: Name of the administration
      - `description` string: Description of the administration
    - `commissionUntilDate` string, date, nullable: The date on which the employment will end.
    - `incomeRelationshipNumber` integer: The income relationship number that is required in the tax return. Together with the citizen service number (burgerservicenummer, BSN) and wage tax number, the income relationship number uniquely identifies an employment.
    - `employeeProfileId` object, nullable: References to an employeeprofile that is specified in the payroll administration level `employeeProfileId` is a metadata field within the payroll administration context. Possible values can be managed by the user.
      - `key` integer
      - `value` string
    - `employmentDurationType` object: A selection of pre defined durations for the employment.
      - `key` integer
      - `value` string
    - `startDateContractOfIndefiniteDuration` string, date, nullable: When did the value of `employmentDurationType` change for definite to indefinite. This value should be te same as the `startDate` if the contract was indefinite from the start.
    - `employmentContractType` object: The type of employment applicable for the employment.
      - `key` integer
      - `value` string
    - `typeOfEmployee` object: A selection of pre defined employee-types for the employment.
      - `key` integer
      - `value` string
    - `cancellationPeriodEmployee` integer, nullable: The notice period an employee is required to give the employer when resigning. The unit of time that applies to this field is described in the noticePeriodTimeUnit property.
    - `cancellationPeriodEmployer` integer, nullable: The notice period an employer is required to give the employee when terminating the contract. The unit of time that applies to this field is described in the noticePeriodTimeUnit property.
    - `cancellationPeriodTimeUnit` object, nullable: The unit of time used for the noticePeriodeEmployee and noticePeriodEmployer properties.
      - `key` integer
      - `value` string
    - `cancellationNoticeDate` string, date, nullable: The date on which the notice was given by either the employee or the employer.
    - `startCancellationNoticePeriod` string, date, nullable: The date on which the term of notice period starts. If the agrement states that a notice periode always starts on the first day of the month and the notice was given on the 15th the start notice periode will be the first day of the next month.
    - `isDirectorAndMajorShareholder` boolean, nullable: Indicates whether the employment can be classiefied as a director and major shareholder (Dutch --> directeur-grootaandeelhouder or DGA). This field can be `null` in cases where it is unknown whether the employment can be classified as a director and major shareholder.
    - `isOnCallEmployment` boolean: Indicates whether the employment is an on-call employment.
    - `hasOnCallAppearanceObligation` boolean, nullable: In the case of an on-call employment this field indicates whether the employment has an appearance obligation. This field can be `null` in cases where it is unknown whether the employment has an appearance obligation.
    - `vacationCoupons` object, nullable: Indication for vacation coupons (vakantiebonnen). This is only applies to a limited set of CLA`s.
      - `key` integer
      - `value` string
    - `specialIncomeRatio` object, nullable: Indicates the special income ratio
      - `key` integer
      - `value` string
    - `isAnonymousEmployee` boolean: Indicates whether employee is anonymous
    - `isPreviousOwner` boolean, nullable: Indicates whether the employment can be classified as a previous owner. This field can be `null` in cases where it is unknown whether the employment can be classified as a director and major shareholder.
    - `isFamilyOfOwner` boolean, nullable: Indicates whether the employment can be classified as a previous owner. This field can be `null` in cases where it is unknown whether the employment can be classified as a director and major shareholder.
    - `isGemoedsbezwaardNationalInsurance` boolean: Gemoedsbezwaard Volksverzekering
    - `isGemoedsbezwaardEmployeeInsurance` boolean, nullable: Gemoedsbezwaard Werknemerverzekering
    - `namePayslip` string, nullable: Name that is visible on payslips for the employment
    - `calculateWorkingHours` boolean, nullable: Automatically calculate working hours for the employment if the option automatically calculate hours is selected for a given period.
    - `essMutationSet` object, nullable: References to a specified set of payrollcomponents that are to accessible via ESS for employee mutations `essMutationSet` is a metadata field within the werkgever/provider context. Possible values can be managed by the user.
      - `key` integer
      - `value` string
    - `exemptionInsuranceObligation` object: Indicates whether an exemption applies for the insurance obligation. If NULL than there is no exemption, thus insurance obligation applies in that case (verzekingsplicht)
      - `key` integer
      - `value` string
    - `firstDayNotification` boolean, nullable: Indicates whether first-day notification (EersteDagsMelding) is applicable for the employment
    - `sendMdvNotification` boolean, nullable: Indicate if a Mdv (melding dienstverband) should be send.
    - `periodPayGradeAdjustment` integer, nullable: The values is used for two processes. First off, a message can be configured to notify the user(s) of a upcoming wage raise/negotiation based on the value of this field. Second, the value, in combination with `signalSalaryScaleAdjustment`, is used to signal a wage raises based on the `payScale` and ‘payGrade’.
    - `signalPayGradeAdjustment` boolean: Indicates whether signaling regarding salary scale adjustments are enabled for the employment
    - `typeOfParticipation` object, nullable: The type of participation (aard van deelnemerschap) is only applicable in case the person related to this employment is eligible for pension
      - `key` integer
      - `value` string
    - `valueOfParticipation` object, nullable: The value of participation (waarde van deelnemerschap) is only applicable in case the person related to this employment is eligible for pension
      - `key` integer
      - `value` string
    - `professionCode` integer, nullable: A code field for a profession.
    - `deviatingCLATaxReturn` integer, nullable: CLA (CAO) code in case of a deviating CLA for tax returns .
    - `participation55plusRegulationUWV` boolean: Indicates whether the 55 plus regulation (55 plus regeling) is applicable for the employment
    - `emailLeaveRequest` string, nullable: Recipient e-mail adress for notification in case of leave requests.
    - `writtenEmploymentContract` boolean: Dit the employment and employer make a written contract?
  - `workingHoursData` WorkingHours2
    - `shift` object: The shift determines the full-time hours and bonus percentage. `shift` is a metadata field within the payroll administration context. Possible values can be managed by the user.
      - `shiftNumber` integer: The number for the shift.
      - `fullTimeHoursPerWeek` number: The full time hours for an employment that is linked to this shift.
      - `bonusPercentage` number: The bonus percentage used in wage calculations for the hours made in this shift.
    - `deviatingHoursPerWeek` number, double, nullable: Fulltime hours are normally based as defined by the shift, this optional field is used to register a deviating value. The value can be less or more then the fulltime hours a week.
    - `deviatingSvDaysPerPeriod` number, nullable: Sv (social insurance) days are normally calculated by hours per shift, this optional field is used to register a deviating value.
    - `averageParttimeFactor` number, double, nullable: This field is used to register the deviating value of the parttimefactor. The parttimefactor is normally calculated by workinghours dividing by shifthours multplied by 100
    - `regularWorkPattern` boolean: When the employee works the same amount of hours per day every week, then the workpattern is regular.
    - `flexibleHoursContract` object, nullable: The field indicates the type of flexible contract. If not applicable, please set to NULL.
      - `key` integer
      - `value` string
    - `contractCode` object, nullable: This field is specialy made for convenience stores. The field is the type of contract. `contractCode` is a metadata field within the employer context. Possible values can be managed by the user.
      - `key` string, uuid: The unique identifier of an object (GUID/UUID)
      - `code` integer
      - `description` string
    - `calculateUsingWorkPattern` object: Indications in this objects determine whether specific values should be calculated based on the bi-weekly workPattern (specified in the `workPattern` object).
      - `leaveHours` boolean: Indicates whether then leave balances (verlof) are to be calculated based on the workpattern.
      - `hoursBrokenPeriod` boolean: Indicates whether the hours for the payrolling should be calculated based on the workpattern in broken periods. These are periods of in or out of service.
      - `hoursPeriod` boolean: Indicates whether the hours for the payrolling should be calculated based on the workpattern for regular periods.
      - `daysDailyRate` boolean: Indicates whether the number of days of dailyrate should be calculated based on the workpattern. The number of days are normally calculated by the working hours.
      - `deviatingDaysAndHours` boolean: Indication whether the deviating hours per week and deviating SV-days per period are to be automatically calculated based on the workpattern. Please note (!) that any values in the deviatingHoursPerWeek and deviatingSvDaysPerPeriod fields (of this workingHours record) will be overwritten based on this calculation if true (and endDate=NULL)!
    - `workPattern` object, nullable: The applicable work pattern for a period of 2 weeks can be stored in this object. Each field contains the number of work hours for that day in the 2-week period. <br /> Please note that the workPattern should be left NULL if no data is present (as opposed to filling all fields with 0) <br /> Each field represent the number of hours the employee normally works on that day.
      - `oddWeeks` object
        - `monday` number, double
        - `tuesday` number, double
        - `wednesday` number, double
        - `thursday` number, double
        - `friday` number, double
        - `saturday` number, double
        - `sunday` number, double
      - `evenWeeks` object
        - `monday` number, double
        - `tuesday` number, double
        - `wednesday` number, double
        - `thursday` number, double
        - `friday` number, double
        - `saturday` number, double
        - `sunday` number, double
  - `wageData` Wage3
    - `grossWage` number, double, nullable: The gross wage for the employee
    - `grossWageType` object, nullable: Indicates whether the `grossWage` is an hourly wage or a periodic wage. Periodic can represent a week, four weeks or a month. Which period is active for the employment can be found in wagePeriodType.
      - `key` integer
      - `value` string
    - `netWage` number, double, nullable: Net wage for the employment
    - `netWageType` object, nullable: Indicates whether the net wage is an hourly wage or a periodic wage. Periodic can represent a week, four weeks or a month. Which period is active for the employment can be found in the payroll administration resource.
      - `key` integer
      - `value` string
    - `payScale` object, nullable: A pay scale (also known as a salary structure) is a system that determines how much an employee is to be paid as a wage or salary, based on one or more factors such as the employee"s level, rank or status within the employer"s organization, the length of time that the employee has been employed, and the difficulty of the specific work performed. After selecting a pay scale a pay grade needs to be selected to determine the actual wage. Only works with `grossWage`. The value of `grossWage` will be updated server side after the submit. `payScale` is a metadata field within the payroll administration/payScale context. Possible values can be managed by the user.
      - `key` integer
      - `value` string
    - `payGrade` object, nullable: The pay grade indicates on what level (cel) of the paygrade the employment is. The level is multi dimensional where the description indicates both the level and for example the number of years of service within the given level. `payGrade` is a metadata field within the payroll administration/payScale context. Possible values can be managed by the user.
      - `key` integer
      - `value` string
    - `applyPayGrade` boolean, nullable: Apply pay grade indicates that after submitting the record the server will replace the value of `grossWage` with the value represented by the selected `payGrade`. A pay grade contains time based values, the value that is active on the `start date` of the record will be selected.
  - `organizationalEntityData` OrganizationalEntity3
    - `function` object: The function of the employment. `function` is a metadata field within the employer context. Possible values can be managed by the user.
      - `key` string, uuid: The unique identifier of an object (GUID/UUID)
      - `description` string
      - `group` string
    - `deviatingFunctionGroup` string, nullable: The deviating functiongroup description of the employment.
    - `deviatingFunctionDescription` string, nullable: The deviating function description of the employment. This description deviates from the value of the `function` field.
    - `standardFunction` object, nullable: The standard (cao)function of the employment. `standardFunction` is a metadata field within the payroll administration context. Possible values can be managed by the user.
      - `key` integer
      - `value` string
      - `code` string, nullable
      - `category` integer, nullable
    - `department` object: The department of the employment. `department` is a metadata field within the employer context. Possible values can be managed by the user.
      - `key` string, uuid
      - `code` integer
      - `description` string
    - `distributionUnit` object: Distribution unit, used in several reports and the "basic wage journal" functionality. Commonly used as a cost center. `distributionUnit` is a metadata field within the employer context. Possible values can be managed by the user.
      - `key` string, uuid
      - `code` integer
      - `description` string
    - `placeOfEmployment` string, nullable: The place of employment (standplaats) for the employment.
    - `internalTelephoneExtensionNumber` string, nullable: The phone extention number for the employment.
  - `socialSecurityData` SocialSecurity3
    - `isInsuredForSicknessBenefitsAct` boolean: Will contributions for the Sickness Benefits Act (ZW) be payed for this employment
    - `isInsuredForUnemploymentInsuranceAct` boolean: Will contributions for the Unemployment Insurance Act (WW) be payed for this employment
    - `isInsuredForOccupationalDisabilityInsuranceAct` boolean: Will contributions for the Occupational Disability Insurance Act (WAO) be payed for this employment
    - `healthCareInsuranceActType` object: Indicates what type of Health Care Insurance Act (Zvw) is applicable for this employment
      - `key` integer
      - `value` string
  - `fiscalData` Fiscal3
    - `annualSalary` number, double: The fiscal annual salary
    - `deviatingPayrollTaxTableColour` object: Indicates if there is a deviating payroll tax table is applicable (green vs white table)
      - `key` integer
      - `value` string
    - `applyDayTables` boolean, nullable: Indicates whether the value of the day table is used for the calculation of payroll tax
    - `deviatingPayrollTaxPercentage` number, double, nullable: Indicates a deviating payroll tax percentage is to be applied
    - `applyDeviatingPayrollTaxPercentageOn` object: Indicates on what type of payroll calculation the deviating payroll tax percentage is applicable
      - `key` integer
      - `value` string
    - `applyPayrollTaxDeduction` boolean: Indicates whether payroll tax deduction is appliclable (loonheffingskorting)
    - `applyStudentDeduction` boolean, nullable: Apply the "Scholierenregeling"
    - `deviatingCalculationRulePayrollTax` object: Indicates if, while calculating payroll taxes and social security contributions, certain deviations are applicable. NL; Herleidingsregel
      - `key` integer
      - `value` string
    - `residentOf` object: Related to the fiscal country of residence of the employee. This might affect the calculation of any applicable loonheffingskortingen.
      - `key` integer
      - `value` string: Description of the type of document
  - `otherPayrollVariablesData` OtherPayrollVariables3
    - `deviatingPremiumGroup` object, nullable: Indicates what deviating premie sector fonds should apply for the employment. Do not specify if there is no deviation from the premium group for the payroll administration the employment is linked to.
      - `key` integer
      - `value` string

## Response `201`

OK

- object: a warning indacateds that the given payload is valide, however take notice of the warning this might ifluence behavour.
  - `totalSize` integer: Total number of records, taking into account the given filter.
  - `pageSize` integer: Number of records in the response
  - `totalPages` integer: Number of pages available
  - `currentPage` integer: Current page returned in the response
  - `version` Version
    - `obsoleteDate` string, date, nullable: The date (can be null) on which the `resourceVersion` is no longer supported/available
    - `resourceVersion` string, date: The resource version of the object in the response
  - `messages` object[]
    - `type` string: Indication of the type of message. See [the general documentation for more information](./#section/Response/Messages)
    - `description` string: Describes the message
    - `id` string, uuid, nullable: In some cases when the message may relate to a specific entity, or specific group of entities, this field provides the identifier of that entity
    - `code` integer: Identifying code for the message
    - `properties` string[]: An array that can contain additional information
  - `id` string, uuid: The unique identifier of an object (GUID/UUID)

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `500`: Internal Server Error

---

[API](https://skmtc.dev/loket/apis/loket-api.md) - [All operations](https://skmtc.dev/loket/apis/loket-api/llms.txt) - [OpenAPI document](https://skmtc.dev/loket/apis/loket-api/revisions/32170564148f?raw)
