---
title: "Create a GP (Global Payroll) employee"
method: POST
path: "/v1/employees/gp-employments"
tags: ["Global Payroll Employee"]
---

# Create a GP (Global Payroll) employee

`POST /v1/employees/gp-employments`

## Request

- Base URL: `https://api.usemultiplier.com`
- URL: `https://api.usemultiplier.com/v1/employees/gp-employments`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/usemultiplier/apis/multiplier-public-rest-api/docs/v1/employees/gp-employments/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates, onboards a Global Payroll employee in a single call.

Handles the full onboarding flow including personal details, contact information,
employment terms, compensation, and compliance setup.

## Request body

- V1GpEmploymentsPostRequest
  - `personal` V1GpEmploymentsPersonalInput, required
    - `firstName` string, required: Employee's first name
    - `middleName` string, nullable: Employee's middle name (optional)
    - `lastName` string, required: Employee's last name
    - `fullLegalName` string, required: Employee's full legal name
    - `nameInNativeLanguage` string: Employee's name in native language
    - `dateOfBirth` string, date, required: Employee's date of birth (YYYY-MM-DD)
    - `gender` 'FEMALE' | 'MALE' | 'UNSPECIFIED', required: Employee's gender
    - `maritalStatus` 'DIVORCED' | 'MARRIED' | 'SINGLE' | 'UNSPECIFIED': Employee's marital status
    - `religion` string, nullable: Employee's religion (optional)
    - `nationality` string: Employee's nationality. ISO 3166-1 alpha-3 country code
  - `contact` V1GpEmploymentsContactInput, required
    - `personalEmail` string, email, required: Employee's personal email address
    - `personalPhoneNumber` string: Employee's personal phone number
    - `emergencyContact` object, nullable: Emergency contact information
      - `name` string, required: Name of the emergency contact person
      - `phoneNumber` string, required: Phone number of the emergency contact
      - `relationship` 'SPOUSE' | 'DAUGHTER' | 'SON' | 'FATHER' | 'MOTHER', required: Relationship to the employee
  - `employment` V1GpEmploymentsEmploymentInput, required
    - `employeeCode` string, required: Human-readable employee code
    - `entity` string, required: Legal entity name for the employee's employment
    - `workEmail` string, email: Employee's work email address
    - `startDate` string, date, required: Date when employee joined the company (YYYY-MM-DD)
    - `term` 'FIXED' | 'PERMANENT', required: Employment term (fixed-term or permanent)
    - `endDate` string, date, nullable: Date when employee left or will leave the company (optional)
    - `designation` string, required: Job title or position
    - `department` string, required: Department name
    - `reportsTo` string, email: Work email of the manager/supervisor
  - `compensation` V1GpEmploymentsCompensationInput, required
    - `baseSalary` V2CompensationComponent, required
      - `name` string, required: Name of the compensation component
      - `billingRate` number, required: Amount/rate of the compensation component
      - `billingRateType` 'VALUE' | 'PERC_BASE_PAY' | 'BASE_PAY_DAYS' | 'CTC_DAYS' | 'CTC_PERCENTAGE' | 'EARNINGS_PERCENTAGE' | 'BASIC_SALARY_PERCENTAGE' | 'QUALIFYING_EARNINGS_PERCENTAGE', required: Rate type of the compensation component.
      - `currency` string, required: ISO 4217 currency code
      - `frequency` 'WEEKLY' | 'SEMIMONTHLY' | 'BIWEEKLY' | 'MONTHLY' | 'ANNUALLY' | 'SEMIANNUALLY' | 'QUARTERLY' | 'DAILY' | 'ONETIME' | 'HOURLY', required: Payment frequency
      - `payScheduleName` string, required: Pay schedule name of the compensation component
      - `startDate` string, date, required: Start date of the compensation component. YYYY-MM-DD
      - `endDate` string, date, nullable: End date of the compensation component. YYYY-MM-DD
      - `isInstallment` boolean, nullable: Whether the compensation component is an installment. Defaults to false.
      - `numberOfInstallments` integer, nullable: Number of installments.
      - `notes` string, nullable: Notes for the compensation component
    - `additionalPays` V2CompensationComponent[]
      - `name` string, required: Name of the compensation component
      - `billingRate` number, required: Amount/rate of the compensation component
      - `billingRateType` 'VALUE' | 'PERC_BASE_PAY' | 'BASE_PAY_DAYS' | 'CTC_DAYS' | 'CTC_PERCENTAGE' | 'EARNINGS_PERCENTAGE' | 'BASIC_SALARY_PERCENTAGE' | 'QUALIFYING_EARNINGS_PERCENTAGE', required: Rate type of the compensation component.
      - `currency` string, required: ISO 4217 currency code
      - `frequency` 'WEEKLY' | 'SEMIMONTHLY' | 'BIWEEKLY' | 'MONTHLY' | 'ANNUALLY' | 'SEMIANNUALLY' | 'QUARTERLY' | 'DAILY' | 'ONETIME' | 'HOURLY', required: Payment frequency
      - `payScheduleName` string, required: Pay schedule name of the compensation component
      - `startDate` string, date, required: Start date of the compensation component. YYYY-MM-DD
      - `endDate` string, date, nullable: End date of the compensation component. YYYY-MM-DD
      - `isInstallment` boolean, nullable: Whether the compensation component is an installment. Defaults to false.
      - `numberOfInstallments` integer, nullable: Number of installments.
      - `notes` string, nullable: Notes for the compensation component
  - `address` V1GpEmploymentsAddressInput
    - `addressLine1` string: Address line 1 (street address)
    - `addressLine2` string, nullable: Address line 2 (apartment, suite, etc.) - optional
    - `streetName` string, nullable: Street name (optional)
    - `city` string: City name
    - `subdivision` string, nullable: State, province, or canton (optional)
    - `country` string: Country (ISO 3166-1 alpha-3 code)
    - `postalCode` string: Postal or ZIP code

## Response `201`

GP employee created successfully

- V1GpEmploymentsPostResponse
  - `id` string, uuid, required: Unique identifier for the employee

## Other responses

- `400`: Invalid request parameters
- `401`: Authentication required
- `403`: Forbidden - insufficient permissions
- `404`: Resource not found
- `409`: Conflict - resource already exists or state conflict
- `422`: Unprocessable entity - validation error
- `500`: Internal server error

## Changes

- **2026-10-07** `1b78ff9be1d1`: 2 info
  - api tag `Global Payroll Employee` added
  - api tag `Create GP Employment` removed

[Operation history](https://skmtc.dev/usemultiplier/apis/multiplier-public-rest-api/changes/v1/employees/gp-employments/post.md)

---

[API](https://skmtc.dev/usemultiplier/apis/multiplier-public-rest-api.md) - [All operations](https://skmtc.dev/usemultiplier/apis/multiplier-public-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usemultiplier/apis/multiplier-public-rest-api/revisions/da31bb6ec00d?raw)
