openapi: 3.0.3
info:
title: Pinwheel Accounts Income and Employment API
description: Pinwheel is the API for direct deposit switching, bill switching, and income & employment verification.
version: v2025-07-08
contact:
name: Support
email: support@getpinwheel.com
url: https://getpinwheel.com
servers:
- url: https://api.getpinwheel.com/v1
description: production
- url: https://sandbox.getpinwheel.com/v1
description: sandbox
- url: https://development.getpinwheel.com/v1
description: development
security:
- apiSecret: []
tags:
- name: Income and Employment
paths:
/accounts/{account_id}/employment:
get:
tags:
- Income and Employment
summary: Get Employment
description: Get the current employment information of the account owner.
operationId: get_employment_v1_accounts__account_id__employment_get
parameters:
- description: UUID of the payroll account.
required: true
schema:
type: string
format: uuid
description: UUID of the payroll account.
name: account_id
in: path
- name: Pinwheel-Version
in: header
required: true
description: Version identifier specifying how the Pinwheel API should behave. See the Change Management page for more information.
schema:
enum:
- '2025-07-08'
- '2023-11-22'
- '2023-07-18'
- '2023-04-18'
- '2022-09-09'
- '2022-06-22'
- '2022-03-02'
default: '2025-07-08'
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/EmploymentObjResponse'
meta:
$ref: '#/components/schemas/RefreshableMeta'
type: object
required:
- data
- meta
x-tags:
- Schemas
examples:
example:
value:
data:
id: 9d3309c3-b1d5-47dd-a175-20acf291f419
account_id: eb240ec6-a227-47ca-b7c7-fbbdfe7170a0
created_at: '2021-01-06T15:59:13.530178+00:00'
updated_at: '2021-01-12T00:00:00.000000+00:00'
status: employed
start_date: '2020-06-01'
termination_date: null
employer_name: Acme Corporation
employer_address:
raw: 1234 Main St, Suite 3, Washington, DC, 20036, USA
line1: 1234 Main St
line2: Suite 3
city: Washington
state: DC
postal_code: '20036'
country: US
employer_phone_number:
value: '+14155552671'
type: mobile
title: Engineer
/accounts/{account_id}/identity:
get:
tags:
- Income and Employment
summary: Get Identity
description: Get the current identity information of the account owner.
operationId: get_identity_v1_accounts__account_id__identity_get
parameters:
- description: UUID of the payroll account.
required: true
schema:
type: string
format: uuid
description: UUID of the payroll account.
name: account_id
in: path
- name: Pinwheel-Version
in: header
required: true
description: Version identifier specifying how the Pinwheel API should behave. See the Change Management page for more information.
schema:
enum:
- '2025-07-08'
- '2023-11-22'
- '2023-07-18'
- '2023-04-18'
- '2022-09-09'
- '2022-06-22'
- '2022-03-02'
default: '2025-07-08'
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/IdentityObjResponse'
meta:
$ref: '#/components/schemas/RefreshableMeta'
type: object
required:
- data
- meta
x-tags:
- Schemas
examples:
example:
value:
data:
id: ffec8d06-5d03-42b9-9f75-6c66cb6efed5
account_id: eb240ec6-a227-47ca-b7c7-fbbdfe7170a0
created_at: '2021-01-06T15:59:13.530178+00:00'
updated_at: '2021-01-12T00:00:00.000000+00:00'
full_name: Alicia Green
date_of_birth: '1987-02-01'
last_four_ssn: 0090
emails:
- alicia.green@email.com
address:
raw: 1234 Home Road, Washington, DC, 20017, USA
line1: 1234 Home Road
line2: null
city: Washington
state: DC
postal_code: '20017'
country: US
phone_numbers:
- value: '+14155552671'
type: mobile
- value: '+14155551234'
type: home
/accounts/{account_id}/income:
get:
tags:
- Income and Employment
summary: Get Income
description: Get the current income information of the account owner.
operationId: get_income_v1_accounts__account_id__income_get
parameters:
- description: UUID of the payroll account.
required: true
schema:
type: string
format: uuid
description: UUID of the payroll account.
name: account_id
in: path
- name: Pinwheel-Version
in: header
required: true
description: Version identifier specifying how the Pinwheel API should behave. See the Change Management page for more information.
schema:
enum:
- '2025-07-08'
- '2023-11-22'
- '2023-07-18'
- '2023-04-18'
- '2022-09-09'
- '2022-06-22'
- '2022-03-02'
default: '2025-07-08'
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/IncomeObjResponse'
meta:
$ref: '#/components/schemas/RefreshableMeta'
type: object
required:
- data
- meta
x-tags:
- Schemas
examples:
example:
value:
data:
id: 6309e185-9c87-4384-aaae-767c7875775e
account_id: eb240ec6-a227-47ca-b7c7-fbbdfe7170a0
created_at: '2021-01-06T15:59:13.530178+00:00'
updated_at: '2021-01-12T00:00:00.000000+00:00'
compensation_amount: 400000
compensation_unit: monthly
currency: USD
pay_frequency: monthly
/accounts/{account_id}/paystubs:
get:
tags:
- Income and Employment
summary: List Paystubs
description: The paystubs endpoint allows you to query for payouts to an end user. Each paystub contains broken out and aggregated earnings information, as well as relevant dates. Paystubs are returned in reverse chronological order by `pay_date`. This is a paginated endpoint; see how Pinwheel implements pagination here.
operationId: list_paystubs_v1_accounts__account_id__paystubs_get
parameters:
- description: UUID of the payroll account.
required: true
schema:
type: string
format: uuid
description: UUID of the payroll account.
name: account_id
in: path
- description: Filter for paystubs with pay dates after this date.
required: false
schema:
type: string
format: date
description: Filter for paystubs with pay dates after this date.
name: from_pay_date
in: query
- description: Filter for paystubs with pay dates before this date.
required: false
schema:
type: string
format: date
description: Filter for paystubs with pay dates before this date.
name: to_pay_date
in: query
- description: Cursor for the page you want to retrieve.
required: false
schema:
type: string
description: Cursor for the page you want to retrieve.
name: cursor
in: query
- description: The maximum number of results to return.
required: false
schema:
type: integer
maximum: 100.0
minimum: 1.0
description: The maximum number of results to return.
name: limit
in: query
- name: Pinwheel-Version
in: header
required: true
description: Version identifier specifying how the Pinwheel API should behave. See the Change Management page for more information.
schema:
enum:
- '2025-07-08'
- '2023-11-22'
- '2023-07-18'
- '2023-04-18'
- '2022-09-09'
- '2022-06-22'
- '2022-03-02'
default: '2025-07-08'
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
meta:
$ref: '#/components/schemas/RefreshablePaginationListMeta'
data:
items:
$ref: '#/components/schemas/PaystubObjResponse_v2022_03_02'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 5c1952df-3a84-4f28-8318-58291452061f
pay_date: '2020-12-31'
pay_period_start: '2020-12-10'
pay_period_end: '2020-12-24'
currency: USD
gross_pay_amount: 480720
net_pay_amount: 321609
check_amount: 328609
gross_pay_ytd: 6971151
net_pay_ytd: 4357992
total_taxes: 94407
total_deductions: 64704
total_reimbursements: 7000
employer_name: Acme Corporation
external_paystub_id: 821b7d1b-c115-470c-9411-be132f51c19d
taxes:
- name: Federal Income
category: federal_income
amount: 65158
- name: State Income
category: state_income
amount: 29249
deductions:
- name: 401k
category: retirement
amount: 7012
type: pre_tax
- name: MTA
category: commuter
amount: 57692
type: post_tax
earnings:
- name: Regular
category: salary
amount: 380720
rate: 4759
hours: 80.0
- name: Bonus
category: bonus
amount: 100000
rate: null
hours: null
time_off:
- name: Vacation
category: pto
available_hours: 41.5
earned_hours: 0.0
used_hours: 38.5
- name: Sick Leave
category: sick
available_hours: 41.5
earned_hours: 0.0
used_hours: 38.5
created_at: '2021-01-10T19:54:45.745660+00:00'
document:
id: aea8cc55-93fa-452d-8eac-b83c80b19a41
download_url: https://s3.us-east-1.amazonaws.com/paystub_document
download_url_expiration: '2022-04-04T18:13:55.123450+00:00'
meta:
count: 1
next_cursor: eyJlbXBsb3llciI6ICJVbml0ZWQgUGFyY2VsIFNlcnZpY2UifQ==
refreshed_at: '2021-01-10T19:54:45.745660+00:00'
/accounts/{account_id}/paystubs/{paystub_id}:
get:
tags:
- Income and Employment
summary: Get Paystub
description: Get a single paystub.
operationId: get_paystub_v1_accounts__account_id__paystubs__paystub_id__get
parameters:
- description: The id of the paystub.
required: true
schema:
type: string
format: uuid
description: The id of the paystub.
name: paystub_id
in: path
- description: UUID of the payroll account.
required: true
schema:
type: string
format: uuid
description: UUID of the payroll account.
name: account_id
in: path
- name: Pinwheel-Version
in: header
required: true
description: Version identifier specifying how the Pinwheel API should behave. See the Change Management page for more information.
schema:
enum:
- '2025-07-08'
- '2023-11-22'
- '2023-07-18'
- '2023-04-18'
- '2022-09-09'
- '2022-06-22'
- '2022-03-02'
default: '2025-07-08'
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/PaystubObjResponse_v2022_03_02'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 5c1952df-3a84-4f28-8318-58291452061f
pay_date: '2020-12-31'
pay_period_start: '2020-12-10'
pay_period_end: '2020-12-24'
currency: USD
gross_pay_amount: 480720
net_pay_amount: 321609
check_amount: 328609
gross_pay_ytd: 6971151
net_pay_ytd: 4357992
total_taxes: 94407
total_deductions: 64704
total_reimbursements: 7000
employer_name: Acme Corporation
external_paystub_id: 821b7d1b-c115-470c-9411-be132f51c19d
taxes:
- name: Federal Income
category: federal_income
amount: 65158
- name: State Income
category: state_income
amount: 29249
deductions:
- name: 401k
category: retirement
amount: 7012
type: pre_tax
- name: MTA
category: commuter
amount: 57692
type: post_tax
earnings:
- name: Regular
category: salary
amount: 380720
rate: 4759
hours: 80.0
- name: Bonus
category: bonus
amount: 100000
rate: null
hours: null
time_off:
- name: Vacation
category: pto
available_hours: 41.5
earned_hours: 0.0
used_hours: 38.5
- name: Sick Leave
category: sick
available_hours: 41.5
earned_hours: 0.0
used_hours: 38.5
created_at: '2021-01-10T19:54:45.745660+00:00'
document:
id: aea8cc55-93fa-452d-8eac-b83c80b19a41
download_url: https://s3.us-east-1.amazonaws.com/paystub_document
download_url_expiration: '2022-04-04T18:13:55.123450+00:00'
/accounts/{account_id}/shifts:
get:
tags:
- Income and Employment
summary: List Shifts
description: The shifts endpoint allows you to query for ongoing and completed work performed by an end user. It includes details about shift dates, timestamps, the type of work, and associated earnings. Shifts are returned in reverse chronological order by `end_date`. This is a paginated endpoint; see how Pinwheel implements pagination here.
operationId: list_shifts_v1_accounts__account_id__shifts_get
parameters:
- description: UUID of the payroll account.
required: true
schema:
type: string
format: uuid
description: UUID of the payroll account.
name: account_id
in: path
- description: Return shifts where the `start_date` field is on or after this date. ISO 8601 format.
required: false
schema:
type: string
format: date
description: Return shifts where the `start_date` field is on or after this date. ISO 8601 format.
name: from_start_date
in: query
- description: Return shifts where the `start_date` field is on or before this date. ISO 8601 format.
required: false
schema:
type: string
format: date
description: Return shifts where the `start_date` field is on or before this date. ISO 8601 format.
name: to_start_date
in: query
- description: Return shifts where the `end_date` field is on or after this date. ISO 8601 format.
required: false
schema:
type: string
format: date
description: Return shifts where the `end_date` field is on or after this date. ISO 8601 format.
name: from_end_date
in: query
- description: Return shifts where the `end_date` field is on or before this date. ISO 8601 format.
required: false
schema:
type: string
format: date
description: Return shifts where the `end_date` field is on or before this date. ISO 8601 format.
name: to_end_date
in: query
- description: The maximum number of results to return.
required: false
schema:
type: integer
maximum: 100.0
minimum: 1.0
description: The maximum number of results to return.
name: limit
in: query
- description: Cursor for the page you want to retrieve.
required: false
schema:
type: string
description: Cursor for the page you want to retrieve.
name: cursor
in: query
- name: Pinwheel-Version
in: header
required: true
description: Version identifier specifying how the Pinwheel API should behave. See the Change Management page for more information.
schema:
enum:
- '2025-07-08'
- '2023-11-22'
- '2023-07-18'
- '2023-04-18'
- '2022-09-09'
- '2022-06-22'
- '2022-03-02'
default: '2025-07-08'
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
meta:
$ref: '#/components/schemas/RefreshablePaginationListMeta'
data:
items:
$ref: '#/components/schemas/ShiftObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- id: c134b9bd-29f8-452b-bfaa-0dbcc6f6f026
account_id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
created_at: '2021-01-29 22:06:06.920124+00:00'
start_date: '2021-01-26'
end_date: '2021-01-26'
type: shift
timezone: America/New_York
timestamps:
- from: '2021-01-26T12:00:00.745660+00:00'
to: '2021-01-26T20:21:00.745660+00:00'
earnings:
- name: Regular Hours
category: hourly
hours: 8.0
rate: 2875
amount: 23000
- name: Overtime
category: overtime
hours: 0.35
rate: 4311
amount: 1509
currency: USD
meta:
count: 1
refreshed_at: '2021-01-12T00:00:00.000000+00:00'
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
components:
schemas:
TimeOffObjPublicResponseItem:
properties:
name:
type: string
title: name
description: The name of the time off.
category:
allOf:
- type: string
enum:
- pto
- sick
- other
description: The category of the time off.
available_hours:
type: number
title: available_hours
description: The total hours of time off available, as of the pay period end date. In the event available_hours is not on the paystub, this value reflects the current available_hours at the time the paystub was retrieved.
earned_hours:
type: number
title: earned_hours
description: The hours of time off earned during the pay period.
used_hours:
type: number
title: used_hours
description: The hours of time off used during the pay period.
type: object
required:
- name
- category
title: TimeOff
x-tags:
- Schemas
RefreshableMeta:
properties:
refreshed_at:
type: string
format: date-time
title: refreshed_at
description: ISO 8601 timestamp of the most recent refresh of this data.
type: object
title: RefreshableMeta
x-tags:
- Schemas
DeductionObjPublicResponseItem:
properties:
name:
type: string
title: name
description: The name of the deduction.
category:
allOf:
- type: string
enum:
- retirement
- medical_insurance
- hsa
- fsa
- dental
- vision
- life_insurance
- disability
- child_support
- commuter
- union_dues
- stock
- charity
- savings
- tips
- wage_garnishment
- lending
- company_perk
- tax
- loan
- job_expense
- other
- fees
- reallocation
- retro_pay
description: The category of deduction.
amount:
type: integer
title: amount
description: The amount of deduction, in cents.
type:
allOf:
- type: string
enum:
- pre_tax
- post_tax
- unknown
description: The type of deduction.
type: object
required:
- name
- category
- amount
- type
title: Deduction
x-tags:
- Schemas
AddressGetResponseItem:
properties:
raw:
type: string
title: raw
description: The raw address.
line1:
type: string
title: line1
description: The first line of the address.
line2:
type: string
title: line2
description: The second line of the address.
city:
type: string
title: city
description: The city of the address.
state:
type: string
title: state
description: The state of the address.
postal_code:
type: string
title: postal_code
description: The postal code of the address.
country:
allOf:
- type: string
enum:
- US
description: The country of the address.
type: object
required:
- raw
title: Address
x-tags:
- Schemas
EmploymentObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
updated_at:
type: string
format: date-time
title: updated_at
description: ISO 8601 timestamp of the last update to this object.
account_id:
type: string
format: uuid
title: account_id
description: Unique identifier for the object.
status:
allOf:
- type: string
enum:
- employed
- terminated
- furloughed
description: The employment status of the employee.
start_date:
type: string
format: date
title: start_date
description: The date the employee began their job.
termination_date:
type: string
format: date
title: termination_date
description: The date the employee was terminated.
employer_name:
type: string
title: employer_name
description: Name of employer, e.g., Apple, Disney, Walmart.
employer_address:
allOf:
- $ref: '#/components/schemas/AddressGetResponseItem'
title: employer_address
description: The address of the employer.
employer_phone_number:
allOf:
- $ref: '#/components/schemas/PhoneNumberGetResponseItem'
title: employer_phone_number
description: The phone number of the employer.
title:
type: string
title: title
description: The job title of the employee.
type: object
required:
- id
- created_at
- updated_at
- account_id
- employer_name
title: Employment
x-tags:
- Schemas
ShiftTimestamp:
properties:
from:
type: string
format: date-time
title: from
description: Datetime the work began. ISO 8601 format.
to:
type: string
format: date-time
title: to
description: Datetime the work ended. ISO 8601 format.
type: object
required:
- from
- to
title: ShiftTimestamp
x-tags:
- Schemas
IdentityObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
updated_at:
type: string
format: date-time
title: updated_at
description: ISO 8601 timestamp of the last update to this object.
account_id:
type: string
format: uuid
title: account_id
description: Unique identifier for the object.
full_name:
type: string
title: full_name
description: The full name of the employee.
emails:
items:
type: string
type: array
title: emails
description: The emails associated with the employee.
date_of_birth:
type: string
format: date
title: date_of_birth
description: The date the employee was born.
last_four_ssn:
type: string
title: last_four_ssn
description: The last four digits of the employee's social security number (SSN).
address:
allOf:
- $ref: '#/components/schemas/AddressGetResponseItem'
title: address
description: The address of the employee.
phone_numbers:
items:
$ref: '#/components/schemas/PhoneNumberGetResponseItem'
type: array
title: phone_numbers
description: The phone numbers of the employee.
type: object
required:
- id
- created_at
- updated_at
- account_id
- full_name
title: Identity
x-tags:
- Schemas
PhoneNumberGetResponseItem:
properties:
value:
type: string
title: value
description: The E.164 formatted phone number.
type:
allOf:
- type: string
enum:
- home
- work
- mobile
description: home, mobile, work, etc.
type: object
required:
- value
title: Phone
x-tags:
- Schemas
RefreshablePaginationListMeta:
properties:
refreshed_at:
type: string
format: date-time
title: refreshed_at
description: ISO 8601 timestamp of the most recent refresh of this data.
count:
type: integer
title: count
description: Number of objects returned.
next_cursor:
type: string
title: next_cursor
description: Pointer to the next page of results.
type: object
title: RefreshablePaginationListMeta
x-tags:
- Schemas
DocumentObjPublicResponseItem:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier of the document object.
download_url:
type: string
title: download_url
description: URL from which the document may be downloaded.
download_url_expiration:
type: string
format: date-time
title: download_url_expiration
description: ISO 8601 timestamp of when the download URL will no longer be valid.
type: object
required:
- id
title: Document
x-tags:
- Schemas
ShiftEarningObjPublicResponseItem:
properties:
name:
type: string
title: name
description: The name of the earning.
category:
allOf:
- type: string
enum:
- salary
- hourly
- overtime
- double_overtime
- premium
- bonus
- commission
- tips
- vacation
- holiday
- pto
- sick
- employer_contribution
- other
- fare
- unpaid
- parental
- shift_differential
- bereavement
- life_insurance
- stock
- retirement
- medical
- meal_comp
- disability
- retro_pay
description: The category of earning.
amount:
type: integer
title: amount
description: The amount of earning, in cents.
rate:
type: integer
title: rate
description: The amount earned per hour, in cents.
hours:
type: number
title: hours
description: The hours worked.
type: object
required:
- name
- category
title: Earning
x-tags:
- Schemas
ShiftObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier of the Shift object.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
account_id:
type: string
format: uuid
title: account_id
description: UUID of the payroll account.
start_date:
type: string
format: date
title: start_date
description: The date the Shift started. ISO 8601 format.
end_date:
type: string
format: date
title: end_date
description: The date the Shift ended. ISO 8601 format.
type:
allOf:
- type: string
enum:
- shift
- rideshare
- delivery
- other
description: The type of the work performed.
timezone:
type: string
title: timezone
description: The timezone where the work was completed. Valid names are in the IANA Timezone Database.
timestamps:
items:
$ref: '#/components/schemas/ShiftTimestamp'
type: array
title: timestamps
description: An array of objects that tracks clock in and out times over a shift.
currency:
allOf:
- type: string
enum:
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYR
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LTL
- LVL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRO
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SSP
- STD
- SYP
- SZL
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USN
- USS
- UYI
- UYU
- UZS
- VEF
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XTS
- XXX
- YER
- ZAR
- ZMW
description: Three-letter ISO 4217 currency code, uppercase. For example, the code for US dollars is USD.
earnings:
items:
$ref: '#/components/schemas/ShiftEarningObjPublicResponseItem'
type: array
title: earnings
description: An array of objects that represent a specific earning.
type: object
required:
- id
- created_at
- account_id
- start_date
- end_date
- type
- timestamps
- currency
- earnings
title: Shift
x-tags:
- Schemas
EarningObjPublicResponseItem:
properties:
name:
type: string
title: name
description: The name of the earning.
category:
allOf:
- type: string
enum:
- salary
- hourly
- overtime
- double_overtime
- premium
- bonus
- commission
- tips
- vacation
- holiday
- pto
- sick
- employer_contribution
- other
- fare
- unpaid
- parental
- shift_differential
- bereavement
- life_insurance
- stock
- retirement
- medical
- meal_comp
- disability
- retro_pay
description: The category of earning.
amount:
type: integer
title: amount
description: The amount of earning, in cents.
rate:
type: integer
title: rate
description: The amount earned per hour, in cents.
hours:
type: number
title: hours
description: The hours worked.
type: object
required:
- name
- category
- amount
title: Earning
x-tags:
- Schemas
PaystubObjResponse_v2022_03_02:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
account_id:
type: string
format: uuid
title: account_id
description: UUID of the payroll account.
pay_date:
type: string
format: date
title: pay_date
description: The date when the check amount is paid to the employee.
pay_period_start:
type: string
format: date
title: pay_period_start
description: The date when the pay period begins. Some platforms, like unemployment portals, do not have fixed pay periods.
pay_period_end:
type: string
format: date
title: pay_period_end
description: The date when the pay period ends. Some platforms, like unemployment portals, do not have fixed pay periods.
currency:
allOf:
- type: string
enum:
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYR
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LTL
- LVL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRO
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SSP
- STD
- SYP
- SZL
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USN
- USS
- UYI
- UYU
- UZS
- VEF
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XTS
- XXX
- YER
- ZAR
- ZMW
description: Three-letter ISO 4217 currency code, uppercase. For example, the code for US dollars is USD.
gross_pay_amount:
type: integer
title: gross_pay_amount
description: The total earnings before any deductions are made, in cents.
net_pay_amount:
type: integer
title: net_pay_amount
description: The total earnings after all taxes and deductions are removed, in cents.
check_amount:
type: integer
title: check_amount
description: The amount paid to the employee in this payout, in cents.
gross_pay_ytd:
type: integer
title: gross_pay_ytd
description: The cumulative year to date total earnings before any taxes or deductions are removed, in cents.
net_pay_ytd:
type: integer
title: net_pay_ytd
description: The cumulative year to date total earnings after all taxes and deductions are removed, in cents.
total_taxes:
type: integer
title: total_taxes
description: The total taxes for this pay period, in cents.
total_deductions:
type: integer
title: total_deductions
description: The total deductions for this pay period, in cents.
total_reimbursements:
type: integer
title: total_reimbursements
description: The total reimbursements for this pay period, in cents.
external_paystub_id:
type: string
title: external_paystub_id
description: The external id of a single paystub from the payroll provider.
employer_name:
type: string
title: employer_name
description: The name of the employer that issued the paystub.
taxes:
items:
$ref: '#/components/schemas/TaxObjPublicResponseItem'
type: array
title: taxes
description: The taxes for this pay period, in cents.
deductions:
items:
$ref: '#/components/schemas/DeductionObjPublicResponseItem'
type: array
title: deductions
description: The deductions for this pay period, in cents.
earnings:
items:
$ref: '#/components/schemas/EarningObjPublicResponseItem'
type: array
title: earnings
description: The earnings for this pay period, in cents.
time_off:
items:
$ref: '#/components/schemas/TimeOffObjPublicResponseItem'
type: array
title: time_off
description: The user's time off balances for this pay period. To enable time off balances, please contact Pinwheel support.
document:
allOf:
- $ref: '#/components/schemas/DocumentObjPublicResponseItem'
title: document
description: The document for this paystub.
type: object
required:
- id
- created_at
- account_id
- pay_date
- currency
- gross_pay_amount
- net_pay_amount
- check_amount
- total_taxes
- total_deductions
- total_reimbursements
- taxes
- deductions
- earnings
- time_off
title: Paystub
x-tags:
- Schemas
TaxObjPublicResponseItem:
properties:
name:
type: string
title: name
description: The name of the tax.
category:
allOf:
- type: string
enum:
- federal_income
- social_security
- medicare
- state_income
- local_income
- other
description: The category of tax.
amount:
type: integer
title: amount
description: The amount of tax, in cents.
type: object
required:
- name
- category
- amount
title: Tax
x-tags:
- Schemas
IncomeObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
updated_at:
type: string
format: date-time
title: updated_at
description: ISO 8601 timestamp of the last update to this object.
account_id:
type: string
format: uuid
title: account_id
description: Unique identifier for the object.
compensation_amount:
type: integer
title: compensation_amount
description: The amount per compensation unit, in cents.
compensation_unit:
allOf:
- type: string
enum:
- hourly
- daily
- weekly
- bi-weekly
- semi-weekly
- monthly
- semi-monthly
- annually
- variable
- per_mile
description: The compensation time frame.
currency:
allOf:
- type: string
enum:
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYR
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LTL
- LVL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRO
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SSP
- STD
- SYP
- SZL
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USN
- USS
- UYI
- UYU
- UZS
- VEF
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XTS
- XXX
- YER
- ZAR
- ZMW
description: Three-letter ISO 4217 currency code, uppercase. For example, the code for US dollars is USD.
pay_frequency:
allOf:
- type: string
enum:
- daily
- weekly
- bi-weekly
- monthly
- semi-monthly
- variable
description: Describes how often the employee is paid.
type: object
required:
- id
- created_at
- updated_at
- account_id
- compensation_amount
- compensation_unit
- currency
title: Income
x-tags:
- Schemas
securitySchemes:
apiSecret:
type: apiKey
in: header
name: X-API-SECRET
description: API Secret
bearerAuth:
description: Bearer token
type: http
scheme: bearer