openapi: 3.1.0 info: title: Endpoints subpackage_payroll API version: 1.0.0 servers: - url: https://api.letsdeel.com/rest/v2 - url: https://api-staging.letsdeel.com/rest/v2 tags: - name: subpackage_payroll paths: /benefits/legal-entities/{id}/pay-stub: get: operationId: get-pay-stub-from-employees-from-organization-integrated-with-external-benefits-vendor-v-2026-01-01 summary: Get pay stub from employees from organization integrated with external benefits vendor description: "Returns pay stub records for employees within a legal entity integrated with an external benefits vendor, with support for filtering by payroll date range, status, and offset-based pagination.\n **Token scopes**: `organizations:read`" tags: - subpackage_payroll parameters: - name: id in: path description: Id from the legal entity to fetch data required: true schema: type: string - name: payroll_start_date in: query description: Payroll start date required: false schema: type: string - name: payroll_end_date in: query description: Payroll end date required: false schema: type: string - name: status in: query description: Payroll status required: false schema: type: string - name: items_per_page in: query description: Items per page required: false schema: type: integer default: 100 - name: offset in: query description: Items to be skipped when searching required: false schema: type: integer default: 0 - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Successful operation. content: application/json: schema: $ref: '#/components/schemas/Payroll_getPayStubFromEmployeesFromOrganizationIntegratedWithExternalBenefitsVendor-v2026-01-01_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /benefits/legal-entities/{id}/year-to-date-pay: get: operationId: get-year-to-date-pay summary: Get year to date payment for benefits 401k. description: "Get year to date from employees from organization integrated with external benefits vendor\n **Token scopes**: `organizations:read`" tags: - subpackage_payroll parameters: - name: id in: path description: Id from the legal entity to fetch data required: true schema: type: string - name: date_start in: query description: Start date to fetch aggregated pay data required: true schema: type: string - name: date_end in: query description: End date to fetch aggregated pay data required: true schema: type: string - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Successful operation. content: application/json: schema: $ref: '#/components/schemas/Payroll_getYearToDatePay_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' components: schemas: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsContributionsItems: type: object properties: name: type: string description: Name of the contribution. type: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsContributionsItemsType' description: Type of the contribution. amount: type: number format: double description: Amount contributed. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsContributionsItems BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsPaymentStatus: type: string enum: - OPEN - LOCKED - CLOSED description: Current status of the payroll payment. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsPaymentStatus ? BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsEmployerContributionsItemsType : type: string enum: - Match Rate - Non Elective description: Type of the employer contribution. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsEmployerContributionsItemsType BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsEmployerContributionsItems: type: object properties: name: type: string description: Name of the employer contribution. type: $ref: '#/components/schemas/BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsEmployerContributionsItemsType' description: Type of the employer contribution. amount: type: number format: double description: Amount of the employer contribution. title: BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsEmployerContributionsItems BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaPage: type: object properties: offset: type: integer description: Items to be skipped when searching total_rows: type: integer description: Total number of rows items_per_page: type: integer description: Items per page title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaPage BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsEmployerContributionsItemsType: type: string enum: - match_rate - non_elective description: Type of the employer contribution. title: BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsEmployerContributionsItemsType Payroll_getYearToDatePay_Response_200: type: object properties: end_date: type: string format: date description: The end date of the pay period. employees: type: array items: $ref: '#/components/schemas/BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItems' start_date: type: string format: date description: The start date of the pay period. title: Payroll_getYearToDatePay_Response_200 BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsSource: type: string enum: - HISTORICAL - NEW description: Source of the payroll data. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsSource BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsContributionsItems: type: object properties: name: type: string description: Name of the contribution. type: $ref: '#/components/schemas/BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsContributionsItemsType' description: Type of the contribution. amount: type: number format: double description: Amount of the contribution. title: BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsContributionsItems BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsEmployerContributionsItems: type: object properties: name: type: string description: Name of the employer contribution. type: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsEmployerContributionsItemsType' description: Type of the employer contribution. amount: type: number format: double description: Amount of the employer contribution. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsEmployerContributionsItems BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItems: type: object properties: source: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsSource' description: Source of the payroll data. employees: type: array items: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItems' description: List of employees included in the payroll. payroll_id: type: string description: Unique identifier for the payroll. payment_date: type: string description: Date when the payment is made. payment_type: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsPaymentType' description: Type of payroll payment. payment_status: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsPaymentStatus' description: Current status of the payroll payment. payroll_end_date: type: string description: End date of the payroll period. payroll_schedule: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsPayrollSchedule' description: Frequency of the payroll schedule. payroll_start_date: type: string description: Start date of the payroll period. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItems ApiError: type: object properties: message: type: string description: A description of the returned error path: type: string description: The JSON path where input validation failed title: ApiError Payroll_getPayStubFromEmployeesFromOrganizationIntegratedWithExternalBenefitsVendor-v2026-01-01_Response_200: type: object properties: data: type: array items: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItems' page: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaPage' title: Payroll_getPayStubFromEmployeesFromOrganizationIntegratedWithExternalBenefitsVendor-v2026-01-01_Response_200 BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsContributionsItemsType: type: string enum: - roth - trad - loan description: Type of the contribution. title: BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsContributionsItemsType BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsPayrollSchedule: type: string enum: - BIMONTHLY - MONTHLY - BIWEEKLY - WEEKLY description: Frequency of the payroll schedule. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsPayrollSchedule ApiErrorContainer: type: object properties: request: $ref: '#/components/schemas/ApiErrorRequest' errors: type: array items: $ref: '#/components/schemas/ApiError' title: ApiErrorContainer BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsContributionsItemsType: type: string enum: - Roth - Trad description: Type of the contribution. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsContributionsItemsType BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItems: type: object properties: gross_pay: type: number format: double description: Total pay before deductions. contract_id: type: string description: Identifier for the employee's contract. employee_id: type: string format: uuid description: Unique identifier for the employee. hours_worked: type: number format: double description: Total hours worked in the pay period. contributions: type: array items: $ref: '#/components/schemas/BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsContributionsItems' employer_contributions: type: array items: $ref: '#/components/schemas/BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItemsEmployerContributionsItems' title: BenefitsLegalEntitiesIdYearToDatePayGetResponsesContentApplicationJsonSchemaEmployeesItems BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItems: type: object properties: gross_pay: type: number format: double description: Total gross pay for the employee for this payroll period. contract_id: type: string description: Identifier for the employee contract. employee_id: type: string description: Unique identifier for the employee. hours_worked: type: number format: double description: Total hours worked by the employee in this payroll period. contributions: type: array items: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsContributionsItems' description: List of contributions made by the employee. employer_contributions: type: array items: $ref: '#/components/schemas/BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItemsEmployerContributionsItems' description: List of contributions made by the employer. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsEmployeesItems BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsPaymentType: type: string enum: - RECONCILIATION - PARALLEL - HISTORICAL - OFFCYCLE - REGULAR description: Type of payroll payment. title: BenefitsLegalEntitiesIdPayStubGetResponsesContentApplicationJsonSchemaDataItemsPaymentType ApiErrorRequest: type: object properties: method: type: string description: The HTTP method of the failed request url: type: string description: The relative URL of the failed request status: type: number format: double description: The status code of the response api_req_id: type: string description: The request ID of the failed request docs: type: string description: A link to the official documentation for the requested endpoint resource source: type: string description: The source handler which produced the returned error code: type: number format: double description: The code of the source handler which produced the returned error title: ApiErrorRequest securitySchemes: deelToken: type: http scheme: bearer description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" oauth2: type: http scheme: bearer description: Standard OAuth2 security scheme based on https://swagger.io/docs/specification/authentication/