openapi: 3.0.3
info:
title: Pinwheel
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
paths:
/link_tokens:
post:
tags:
- Link Tokens
summary: Create Link Token
description: Create a token used to launch a Link modal.
operationId: post_v1_link_tokens_post
parameters:
- 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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LinkTokenCreate_v2025_07_08'
examples:
example:
value:
org_name: Fintech.io
solution: Deposit Switch
features:
- direct_deposit_switch
end_user_id: my_user_12345
allocation:
type: amount
value: 123.45
targets:
- name: My Checking Account
type: checking
account_number: '5675249802'
routing_number: '193487629'
- name: My Savings Account
type: savings
account_number: '6675249802'
routing_number: '193487629'
employer_id: e3c3ec9e-eea5-42fc-b533-de3cea9c352f
end_user:
platform_matching:
social_security_number: '123456789'
first_name: Alicia
last_name: Green
mobile_phone_number: '1234567890'
home_address_zip_code: '12345'
date_of_birth: '2023-11-22'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/LinkTokenObjResponse_v2021_07_28'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: bd2c09e7-1303-46d5-87c0-0ffa572d7ae4
token: eyJhbGciOiJIUz....pZ-qZZPO-mA06Dzu-nfUdurwaTUA
expires: '2021-01-09T02:52:26+00:00'
mode: production
/jobs:
get:
tags:
- Jobs
summary: List Completed Jobs
description: List all completed jobs which were initiated by Link (i.e., excluding
refresh jobs for monitoring). This is a paginated endpoint; see how Pinwheel
implements pagination here.
operationId: get_jobs_v1_jobs_get
parameters:
- description: UUID of the link token triggering the job.
required: false
schema:
type: string
format: uuid
description: UUID of the link token triggering the job.
name: link_token_id
in: query
- description: UUID of the payroll account.
required: false
schema:
type: string
format: uuid
description: UUID of the payroll account.
name: account_id
in: query
- description: List of job types. May be expanded to include new enum values
(see our Change Management policy).
required: false
schema:
items:
type: string
enum:
- direct_deposit_allocations
- bill_cancellation
- direct_deposit_switch
- paycheck_viewer
- paystubs
- bill_switch
- identity
- direct_deposit_payment
- income
- employment
- tax_forms
- shifts
type: array
description: List of job types. May be expanded to include new enum values
(see our Change Management policy).
name: job_types
in: query
- description: The outcome of the job.
required: false
schema:
allOf:
- type: string
enum:
- success
- pending
- error
description: The outcome of the job.
name: outcome
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.
default: 25
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
- description: Return results after this ISO 8601 timestamp.
required: false
schema:
type: string
format: date-time
description: Return results after this ISO 8601 timestamp.
name: from_timestamp
in: query
- description: Return results to this ISO 8601 timestamp.
required: false
schema:
type: string
format: date-time
description: Return results to this ISO 8601 timestamp.
name: to_timestamp
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/JobObjResponse_v2023_11_22'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 449e7a5c-69d3-4b8a-aaaf-5c9b713ebc65
platform_id: fce3eee0-285b-496f-9b36-30e976194736
platform_name: ADP
link_token_id: 4787acbc-11cf-4db3-998c-5ea7c4feebcd
name: direct_deposit_switch
timestamp: '2021-01-12T02:36:01.287148+00:00'
outcome: success
params:
action: partial_switch
allocation:
type: amount
value: 50
target:
account_name: My Checking Account
account_type: checking
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/employers:
get:
tags:
- Employers and Platforms
summary: List Employers
description: List all employers supported by Link. This is a paginated endpoint;
see how Pinwheel implements pagination here.
operationId: get_v1_employers_get
parameters:
- 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.
default: 25
name: limit
in: query
- description: Filter for results updated more recently than `last_updated`.
ISO 8601 timestamp.
required: false
schema:
type: string
format: date-time
description: Filter for results updated more recently than `last_updated`.
ISO 8601 timestamp.
name: last_updated
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/EmployerObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- id: 13a9ee8c-815d-451b-b2d0-496731ec29d3
name: Acme Corporation
last_updated: '2020-11-06T15:59:13.530178+00:00'
logo_url: https://cdn.getpinwheel.com/acme.svg
supported_jobs:
- direct_deposit_switch
fractional_amount_supported: false
amount_supported: true
min_amount: 1.0
max_amount: 9999.0
percentage_supported: true
min_percentage: 1
max_percentage: 99
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/employers/lookup:
get:
tags:
- Employers and Platforms
summary: Look up Employer
description: Look up an employer by criteria such as EIN. Returns the full employer
object.
operationId: get_employers_lookup_v1_employers_lookup_get
parameters:
- description: Employer Identification Number (exactly 9 digits).
required: false
schema:
type: string
description: Employer Identification Number (exactly 9 digits).
name: ein
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:
data:
$ref: '#/components/schemas/EmployerObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: 13a9ee8c-815d-451b-b2d0-496731ec29d3
name: Acme Corporation
last_updated: '2020-11-06T15:59:13.530178+00:00'
logo_url: https://cdn.getpinwheel.com/acme.svg
supported_jobs:
- direct_deposit_switch
fractional_amount_supported: false
amount_supported: true
min_amount: 1.0
max_amount: 9999.0
percentage_supported: true
min_percentage: 1
max_percentage: 99
/employers/{employer_id}:
get:
tags:
- Employers and Platforms
summary: Get Employer
description: Get an Employer given the employer ID.
operationId: get_employer_v1_employers__employer_id__get
parameters:
- description: UUID of the employer.
required: true
schema:
type: string
format: uuid
description: UUID of the employer.
name: employer_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/EmployerObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: 13a9ee8c-815d-451b-b2d0-496731ec29d3
name: Acme Corporation
last_updated: '2020-11-06T15:59:13.530178+00:00'
logo_url: https://cdn.getpinwheel.com/acme.svg
supported_jobs:
- direct_deposit_switch
fractional_amount_supported: false
amount_supported: true
min_amount: 1.0
max_amount: 9999.0
percentage_supported: true
min_percentage: 1
max_percentage: 99
/webhooks:
get:
tags:
- Webhooks
summary: List Webhooks
description: List all webhooks. This is a paginated endpoint; see how Pinwheel
implements pagination here.
operationId: get_v1_webhooks_get
parameters:
- 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.
default: 25
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/WebhookObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- url: https://example.com/webhook_endpoint
id: ae0047bf-cd48-4f41-9fa2-2e578ca82969
created_at: '2020-11-06T15:59:13.530178+00:00'
last_updated: '2020-11-06T16:00:00.530178+00:00'
enabled_events:
- income.added
- employment.added
status: active
version: '2023-04-18'
meta:
count: 1
next_cursor: eyJpZCI6ICIwMzIwYzczYS02NWYyLTRkMDktOTMxNC1jZTAyMzFiZjYwZDYifQ==
post:
tags:
- Webhooks
summary: Create Webhook
description: Create a webhook to use for callbacks from Pinwheel jobs.
operationId: post_v1_webhooks_post
parameters:
- 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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookCreate_v2023_04_18'
examples:
example:
value:
url: https://example.com/webhook_endpoint
enabled_events:
- income.added
- employment.added
status: active
version: '2023-04-18'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/WebhookObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
url: https://example.com/webhook_endpoint
id: ae0047bf-cd48-4f41-9fa2-2e578ca82969
created_at: '2020-11-06T15:59:13.530178+00:00'
last_updated: '2020-11-06T16:00:00.530178+00:00'
enabled_events:
- income.added
- employment.added
status: active
version: '2023-04-18'
/webhooks/{webhook_id}:
get:
tags:
- Webhooks
summary: Get Webhook
description: Get webhook by id.
operationId: get_webhook_by_id_v1_webhooks__webhook_id__get
parameters:
- description: UUID of the webhook.
required: true
schema:
type: string
format: uuid
description: UUID of the webhook.
name: webhook_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/WebhookObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
url: https://example.com/webhook_endpoint
id: ae0047bf-cd48-4f41-9fa2-2e578ca82969
created_at: '2020-11-06T15:59:13.530178+00:00'
last_updated: '2020-11-06T16:00:00.530178+00:00'
enabled_events:
- income.added
- employment.added
status: active
version: '2023-04-18'
put:
tags:
- Webhooks
summary: Update Webhook
description: Update webhook.
operationId: put_v1_webhooks__webhook_id__put
parameters:
- description: UUID of the webhook.
required: true
schema:
type: string
format: uuid
description: UUID of the webhook.
name: webhook_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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookUpdate'
examples:
example:
value:
url: https://example.com/new_webhook_endpoint
enabled_events:
- income.added
- employment.added
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/WebhookObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
url: https://example.com/webhook_endpoint
id: ae0047bf-cd48-4f41-9fa2-2e578ca82969
created_at: '2020-11-06T15:59:13.530178+00:00'
last_updated: '2020-11-06T16:00:00.530178+00:00'
enabled_events:
- income.added
- employment.added
status: active
version: '2023-04-18'
delete:
tags:
- Webhooks
summary: Delete Webhook
description: Delete a webhook.
operationId: delete_v1_webhooks__webhook_id__delete
parameters:
- description: UUID of the webhook.
required: true
schema:
type: string
format: uuid
description: UUID of the webhook.
name: webhook_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: {}
examples:
example:
value: {}
/platforms/{platform_id}:
get:
tags:
- Employers and Platforms
summary: Get Platform
description: Get a payroll platform supported by Link.
operationId: get_platform_v1_platforms__platform_id__get
parameters:
- description: UUID of the platform.
required: true
schema:
type: string
format: uuid
description: UUID of the platform.
name: platform_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/PlatformObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: fce3eee0-285b-496f-9b36-30e976194736
name: Acme Payroll
type: payroll
last_updated: '2020-11-06T15:59:13.530178+00:00'
logo_url: https://cdn.getpinwheel.com/acme.svg
supported_jobs:
- direct_deposit_switch
amount_supported: true
fractional_amount_supported: false
min_amount: 1.0
max_amount: 9999.0
percentage_supported: true
min_percentage: 1
max_percentage: 99
merchant_category: video_streaming
/platforms:
get:
tags:
- Employers and Platforms
summary: List Platforms
description: List all payroll platforms supported by Link. This is a paginated
endpoint; see how Pinwheel implements pagination here.
operationId: list_platforms_v1_platforms_get
parameters:
- description: ESP (employer-specific platform) is a term that is used to describe
an Employer that uses a unique, dedicated payroll portal to serve their
employees. Eg. - Walmart employees will authenticate via a Walmart payroll
portal, whereas employees at Hilton will authenticate via ADP. ESPs can
be thought of as both employers and platforms, so you can use this flag
to include ESPs in the set of supported payroll platforms if desired.
required: false
schema:
type: boolean
description: ESP (employer-specific platform) is a term that is used to
describe an Employer that uses a unique, dedicated payroll portal to serve
their employees. Eg. - Walmart employees will authenticate via a Walmart
payroll portal, whereas employees at Hilton will authenticate via ADP.
ESPs can be thought of as both employers and platforms, so you can use
this flag to include ESPs in the set of supported payroll platforms if
desired.
default: false
name: include_esps
in: query
- description: The type of the platform. `payroll` platforms are used for direct-deposit
switching and for Verify use cases. `time_and_attendance` platforms contain
data around shifts and hours. `tax` platforms are used for tax solutions.
`merchant` type platforms are used for bill switching and cancellation.
required: false
schema:
allOf:
- type: string
enum:
- payroll
- time_and_attendance
- tax
- merchant
description: The type of the platform. `payroll` platforms are used for
direct-deposit switching and for Verify use cases. `time_and_attendance`
platforms contain data around shifts and hours. `tax` platforms are used
for tax solutions. `merchant` type platforms are used for bill switching
and cancellation.
name: type
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.
default: 25
name: limit
in: query
- description: Filter for results updated more recently than `last_updated`.
ISO 8601 timestamp.
required: false
schema:
type: string
format: date-time
description: Filter for results updated more recently than `last_updated`.
ISO 8601 timestamp.
name: last_updated
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/PlatformObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- id: fce3eee0-285b-496f-9b36-30e976194736
name: Acme Payroll
type: payroll
last_updated: '2020-11-06T15:59:13.530178+00:00'
logo_url: https://cdn.getpinwheel.com/acme.svg
supported_jobs:
- direct_deposit_switch
amount_supported: true
fractional_amount_supported: false
min_amount: 1.0
max_amount: 9999.0
percentage_supported: true
min_percentage: 1
max_percentage: 99
merchant_category: video_streaming
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/search:
get:
tags:
- Employers and Platforms
summary: Search Employers and Platforms
description: Search all employers and platforms supported by Link.
operationId: get_v1_search_get
parameters:
- description: Search query on the employer/platform name.
required: true
schema:
type: string
minLength: 1
description: Search query on the employer/platform name.
name: q
in: query
- description: Filter on supported jobs. Multiple keys are allowed. May be expanded
to include new enum values (see our Change Management policy).
required: false
schema:
items:
type: string
enum:
- direct_deposit_allocations
- bill_cancellation
- direct_deposit_switch
- paycheck_viewer
- paystubs
- bill_switch
- identity
- direct_deposit_payment
- income
- employment
- tax_forms
- shifts
type: array
description: Filter on supported jobs. Multiple keys are allowed. May be
expanded to include new enum values (see our Change Management policy).
example:
- direct_deposit_switch
name: supported_jobs
in: query
- description: Filter on response type. Multiple keys are allowed. May be expanded
to include new enum values (see our Change Management policy).
required: false
schema:
items:
type: string
enum:
- employer
- platform
type: array
description: Filter on response type. Multiple keys are allowed. May be
expanded to include new enum values (see our Change Management policy).
example:
- platform
name: response_types
in: query
- description: Filter on amount_supported. If true, results that support setting
a specific dollar amount for direct deposit switches will be returned. If
false, results that support setting a specific dollar amount for direct
deposit switches will be excluded.
required: false
schema:
type: boolean
description: Filter on amount_supported. If true, results that support setting
a specific dollar amount for direct deposit switches will be returned.
If false, results that support setting a specific dollar amount for direct
deposit switches will be excluded.
name: amount_supported
in: query
- description: The type of the platform. `payroll` platforms are used for direct-deposit
switching and for Verify use cases. `time_and_attendance` platforms contain
data around shifts and hours. `tax` platforms are used for tax solutions.
`merchant` type platforms are used for bill switching and cancellation.
required: false
schema:
allOf:
- type: string
enum:
- payroll
- time_and_attendance
- tax
- merchant
description: The type of the platform. `payroll` platforms are used for
direct-deposit switching and for Verify use cases. `time_and_attendance`
platforms contain data around shifts and hours. `tax` platforms are used
for tax solutions. `merchant` type platforms are used for bill switching
and cancellation.
name: platform_type
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.
default: 25
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/ListMeta'
data:
items:
$ref: '#/components/schemas/SearchResultObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- id: fce3eee0-285b-496f-9b36-30e976194736
name: Acme Payroll
platform_type: payroll
last_updated: '2020-11-06T15:59:13.530178+00:00'
logo_url: https://cdn.getpinwheel.com/acme.svg
supported_jobs:
- direct_deposit_switch
fractional_amount_supported: false
amount_supported: true
min_amount: 1.0
max_amount: 9999.0
response_type: platform
percentage_supported: true
min_percentage: 1
max_percentage: 99
- id: 13a9ee8c-815d-451b-b2d0-496731ec29d3
name: Acme Corporation
last_updated: '2020-11-06T15:59:13.530178+00:00'
logo_url: https://cdn.getpinwheel.com/acme.svg
supported_jobs:
- direct_deposit_switch
fractional_amount_supported: false
amount_supported: true
min_amount: 1.0
max_amount: 9999.0
response_type: employer
percentage_supported: false
min_percentage: 1
max_percentage: 99
meta:
count: 2
/end_users/{end_user_id}/accounts:
get:
tags:
- End Users
summary: Get all end user accounts
description: Get all payroll accounts associated with your end user ID. This
is a paginated endpoint; see how Pinwheel implements pagination here.
operationId: get_end_user_accounts_v1_end_users__end_user_id__accounts_get
parameters:
- description: User ID provided by you, to associate Pinwheel users with your
user model.
required: true
schema:
type: string
description: User ID provided by you, to associate Pinwheel users with your
user model.
name: end_user_id
in: path
- 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.
default: 25
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/PayrollAccountObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- id: eb240ec6-a227-47ca-b7c7-fbbdfe7170a0
created_at: '2021-01-06T15:59:13.530178+00:00'
link_token_id: bd2c09e7-1303-46d5-87c0-0ffa572d7ae4
platform_id: fce3eee0-285b-496f-9b36-30e976194736
connected: true
monitoring_status: active
data_updated_at:
direct_deposit_allocations: '2021-01-08T00:00:00.000000+00:00'
data_refreshed_at:
direct_deposit_allocations: '2021-01-09T00:00:00.000000+00:00'
end_user_id: my_user_12345
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/end_users/{end_user_id}/documents/{document_id}:
get:
tags:
- End Users
summary: Get Document
description: Get a specific document for your end user ID.
operationId: get_end_user_document_v1_end_users__end_user_id__documents__document_id__get
parameters:
- description: Unique identifier of the document object.
required: true
schema:
type: string
format: uuid
description: Unique identifier of the document object.
name: document_id
in: path
- description: User ID provided by you, to associate Pinwheel users with your
user model.
required: true
schema:
type: string
description: User ID provided by you, to associate Pinwheel users with your
user model.
name: end_user_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/EndUserDocumentObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
created_at: '2021-01-06T15:59:13.530178+00:00'
end_user_id: end-user-id
id: 07814454-9163-40b5-9aba-8a738fa7080c
document:
id: 07814454-9163-40b5-9aba-8a738fa7080c
download_url: https://amazonaws.com/s3/bucket/file.pdf
download_url_expiration: '2021-01-06T15:59:13.530178+00:00'
document_type: w2
parsed_data:
document_type: w2
applicant:
name: Jo Boren
ssn: '681123906'
address:
line1: 8717 S 4th Ave
line2: null
city: Inglewood
state: CA
postal_code: '90305'
raw: 8717 S 4th Ave Inglewood CA 90305
employer_name: Informed, Inc.
total_wages: 6500100
state_wages: 6500100
social_security_wages: 5307787
medicare_wages: 6500100
federal_taxes: 1172215
state_taxes: 521660
social_security_taxes: 329083
medicare_taxes: 94251
tax_year: '2020'
warnings:
- field: parsed_data.box_11
status: unparsable
message: This field could not be parsed.
- field: parsed_data.box_13.third_party_sick_pay
status: unparsable
message: This field could not be parsed
fraud:
status: not_suspected
/end_users/{end_user_id}/documents:
get:
tags:
- End Users
summary: List Documents
description: Lists all documents associated with your end user ID. This is a
paginated endpoint; see how Pinwheel implements pagination here.
operationId: get_end_user_documents_v1_end_users__end_user_id__documents_get
parameters:
- description: User ID provided by you, to associate Pinwheel users with your
user model.
required: true
schema:
type: string
description: User ID provided by you, to associate Pinwheel users with your
user model.
name: end_user_id
in: path
- description: The type of the document.
required: false
schema:
allOf:
- type: string
enum:
- direct_deposit_form
description: The type of the document.
name: type
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/EndUserDocumentObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- created_at: '2021-01-06T15:59:13.530178+00:00'
end_user_id: end-user-id
id: 07814454-9163-40b5-9aba-8a738fa7080c
document:
id: 07814454-9163-40b5-9aba-8a738fa7080c
download_url: https://amazonaws.com/s3/bucket/file.pdf
download_url_expiration: '2021-01-06T15:59:13.530178+00:00'
document_type: w2
parsed_data:
document_type: w2
applicant:
name: Jo Boren
ssn: '681123906'
address:
line1: 8717 S 4th Ave
line2: null
city: Inglewood
state: CA
postal_code: '90305'
raw: 8717 S 4th Ave Inglewood CA 90305
employer_name: Informed, Inc.
total_wages: 6500100
state_wages: 6500100
social_security_wages: 5307787
medicare_wages: 6500100
federal_taxes: 1172215
state_taxes: 521660
social_security_taxes: 329083
medicare_taxes: 94251
tax_year: '2020'
warnings:
- field: parsed_data.box_11
status: unparsable
message: This field could not be parsed.
- field: parsed_data.box_13.third_party_sick_pay
status: unparsable
message: This field could not be parsed
fraud:
status: not_suspected
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/end_users/{end_user_id}/bill_navigator/status:
put:
tags:
- End Users
summary: Update end user Bill Navigator status
description: The Bill Navigator end user status API allows you to update the
status of an end user's account.
operationId: update_bill_navigator_user_status_v1_end_users__end_user_id__bill_navigator_status_put
parameters:
- description: User ID provided by you, to associate Pinwheel users with your
user model.
required: true
schema:
type: string
description: User ID provided by you, to associate Pinwheel users with your
user model.
name: end_user_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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BillNavigatorStatusUpdateRequest'
examples:
example:
value:
action: deactivated
reason: User no longer wants to use bill navigator
required: true
responses:
'204':
description: No Content
/end_users/{end_user_id}/earnings_stream/payouts:
get:
tags:
- Earnings Stream
summary: Get Earnings Stream Payouts
description: Get an Earnings Stream of payout objects representing discrete
cash flow events. This is a paginated endpoint; see how Pinwheel implements
pagination here.
operationId: get_earnings_stream_payouts_v1_end_users__end_user_id__earnings_stream_payouts_get
parameters:
- description: User ID provided by you, to associate Pinwheel users with your
user model.
required: true
schema:
type: string
description: User ID provided by you, to associate Pinwheel users with your
user model.
name: end_user_id
in: path
- 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.
default: 25
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/FreshnessPaginationListMeta'
data:
items:
$ref: '#/components/schemas/EarningsStreamPayoutObjResponse_v2023_04_18'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- status: estimated
pay_date: '2022-05-15'
earnings:
- date: '2022-05-05'
confidence_score: 0.5
net_pay:
amount: 10000
currency: USD
- date: '2022-05-04'
confidence_score: 0.5
net_pay:
amount: 5000
currency: USD
- date: '2022-05-03'
confidence_score: 0.7
net_pay:
amount: 7500
currency: USD
- date: '2022-05-02'
confidence_score: 0.7
net_pay:
amount: 5000
currency: USD
- date: '2022-05-01'
confidence_score: 0.7
net_pay:
amount: 10000
currency: USD
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/end_users/{end_user_id}/verification_reports/voie:
get:
tags:
- Verification Reports
summary: Get Verification of Income and Employment Report
description: Get a Verification of Income and Employment (VOIE) report associated
with your end user ID.
operationId: get_end_user_verification_reports_voie_v1_end_users__end_user_id__verification_reports_voie_get
parameters:
- description: User ID provided by you, to associate Pinwheel users with your
user model.
required: true
schema:
type: string
description: User ID provided by you, to associate Pinwheel users with your
user model.
name: end_user_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/VerificationReportsVOIEObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: aea8cc55-93fa-452d-8eac-b83c80b19a41
updated_at: '2021-01-06T15:59:13.530178+00:00'
refreshed_at: '2021-01-06T15:59:13.530178+00:00'
employee:
name:
first_name: Alicia
middle_name: ''
last_name: Green
full_name: Alicia Green
address:
city: Washington
country: US
line1: 1234 Home Road
line2: null
postal_code: '20017'
raw: 1234 Home Road, Washington, DC, 20017, USA
state: DC
last_four_ssn: 0090
date_of_birth: '1987-02-01'
phone_numbers:
- type: mobile
value: '+14155552671'
report_type: voie
employments:
- employer_name: Acme Corporation
employer_address:
city: Washington
country: US
line1: 1234 Main St
line2: Suite 3
postal_code: '20036'
raw: 1234 Main St, Suite 3, Washington, DC, 20036, USA
state: DC
start_date: '2020-06-01'
employment_duration_months: 23
employment_status: employed
employment_type: full time
termination_date: null
title: Engineer
most_recent_pay_date: '2021-01-05'
income:
pay_frequency: bi-weekly
compensation_unit: hourly
compensation_amount: 4000
currency: USD
annual_incomes:
- year: '2022'
gross_pay_ytd: 11000
net_pay_ytd: 9950
total_deductions_ytd: 64704
total_reimbursements_ytd: 7000
total_taxes_ytd: 94407
earnings_ytds:
- amount: 10000
category: salary
- amount: 1000
category: bonus
paystubs:
- id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 5c1952df-3a84-4f28-8318-58291452061f
gross_pay_amount: 480720
gross_pay_ytd: 6971151
net_pay_amount: 321609
net_pay_ytd: 4357992
pay_date: '2022-01-05'
pay_period_end: '2021-12-24'
pay_period_start: '2021-12-10'
earnings:
- amount: 380720
category: hourly
hours: 80.0
name: Regular
rate: 4759
- amount: 100000
category: bonus
hours: null
name: Bonus
rate: null
total_deductions: 64704
total_reimbursements: 7000
total_taxes: 94407
currency: USD
created_at: '2021-01-10T19:54:45.745660+00:00'
check_amount: 328609
employer_name: Acme Corporation
external_paystub_id: 821b7d1b-c115-470c-9411-be132f51c19d
- id: 497f6eca-6276-4993-bfeb-53cbbbda6f53
account_id: 5c1952df-3a84-4f28-8318-58291452061f
gross_pay_amount: 480720
gross_pay_ytd: 6490431
net_pay_amount: 321609
net_pay_ytd: 4036383
pay_date: '2021-12-22'
pay_period_end: '2021-12-09'
pay_period_start: '2021-11-26'
earnings:
- amount: 380720
category: hourly
hours: 80.0
name: Regular
rate: 4759
- amount: 100000
category: bonus
hours: null
name: Bonus
rate: null
total_deductions: 64704
total_reimbursements: 7000
total_taxes: 94407
currency: USD
created_at: '2021-01-10T19:54:45.745660+00:00'
check_amount: 328609
employer_name: Acme Corporation
external_paystub_id: 50df7fe0-b818-414f-84b9-b9f5bba06a09
document:
id: 353fb6fb-e704-4112-990a-30058efe2737
download_url: https://pinwheel-cdn.s3.amazonaws.com/assets/pdfs/voie_report.pdf
download_url_expiration: '2024-01-06T17:47:52.782334+00:00'
/end_users/{end_user_id}/verification_reports/voe:
get:
tags:
- Verification Reports
summary: Get Verification of Employment Report
description: Get a Verification of Employment (VOE) report associated with your
end user ID.
operationId: get_end_user_verification_reports_voe_v1_end_users__end_user_id__verification_reports_voe_get
parameters:
- description: User ID provided by you, to associate Pinwheel users with your
user model.
required: true
schema:
type: string
description: User ID provided by you, to associate Pinwheel users with your
user model.
name: end_user_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/VerificationReportsVOEObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: aea8cc55-93fa-452d-8eac-b83c80b19a41
updated_at: '2021-01-06T15:59:13.530178+00:00'
refreshed_at: '2021-01-06T15:59:13.530178+00:00'
employee:
name:
first_name: Alicia
middle_name: ''
last_name: Green
full_name: Alicia Green
address:
city: Washington
country: US
line1: 1234 Home Road
line2: null
postal_code: '20017'
raw: 1234 Home Road, Washington, DC, 20017, USA
state: DC
last_four_ssn: 0090
date_of_birth: '1987-02-01'
phone_numbers:
- type: mobile
value: '+14155552671'
report_type: voe
employments:
- employer_name: Acme Corporation
employer_address:
city: Washington
country: US
line1: 1234 Main St
line2: Suite 3
postal_code: '20036'
raw: 1234 Main St, Suite 3, Washington, DC, 20036, USA
state: DC
start_date: '2020-06-01'
employment_duration_months: 23
employment_status: employed
employment_type: full time
termination_date: null
title: Engineer
most_recent_pay_date: '2021-01-05'
document:
id: 15bbb566-fb4e-4835-9967-b308c164269e
download_url: https://pinwheel-cdn.s3.amazonaws.com/assets/pdfs/voe_report.pdf
download_url_expiration: '2024-01-06T17:47:52.782334+00:00'
/accounts/{account_id}/direct_deposit_allocations:
get:
tags:
- Direct Deposit Allocations
summary: Get Direct Deposit Allocations
description: The Direct Deposit Allocations endpoint returns the current direct
deposit allocations configured for the specified account.
operationId: get_direct_deposit_allocations_v1_accounts__account_id__direct_deposit_allocations_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/DDAllocationObjResponse'
meta:
$ref: '#/components/schemas/RefreshableMeta'
type: object
required:
- data
- meta
x-tags:
- Schemas
examples:
example:
value:
data:
id: 07814454-9163-40b5-9aaa-8a738fa7080b
account_id: c0a343a6-4e33-49cf-9bfc-46f770709452
created_at: '2021-01-06T00:00:00.000000+00:00'
updated_at: '2021-01-12T00:00:00.000000+00:00'
allocations:
- account_name: My Checking Account
account_type: checking
allocation_type: amount
amount: 50000
bank_name: Chase
currency: USD
masked_account_number: '53'
percentage: null
priority: 1
routing_number: '540622601'
- account_name: BoA Savings
account_type: savings
allocation_type: amount
amount: 5000
bank_name: Bank of America
currency: USD
masked_account_number: '3953'
percentage: null
priority: 2
routing_number: '021000322'
- account_name: Neobank
account_type: checking
allocation_type: remainder
amount: null
bank_name: null
currency: USD
masked_account_number: '83'
percentage: null
priority: 3
routing_number: '434957982'
/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:
get:
tags:
- Accounts
summary: List Accounts
description: List all payroll accounts. This is a paginated endpoint; see how
Pinwheel implements pagination here.
operationId: list_accounts_v1_accounts_get
parameters:
- 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.
default: 25
name: limit
in: query
- description: If included, filter on connected accounts. If true, return only
accounts that are connected. If false, return only accounts that are disconnected.
Connected accounts are accounts for which you can retrieve new data manually
using On Demand Updates or automatically via Monitoring.
required: false
schema:
type: boolean
description: If included, filter on connected accounts. If true, return
only accounts that are connected. If false, return only accounts that
are disconnected. Connected accounts are accounts for which you can retrieve
new data manually using On Demand Updates or automatically via Monitoring.
name: connected
in: query
- description: Monitoring status describes the the automated ability of Pinwheel
to retrieve new account information.
required: false
schema:
allOf:
- type: string
enum:
- active
- degraded
- user_action_required
- customer_disabled
- unavailable
description: Monitoring status describes the the automated ability of Pinwheel
to retrieve new account information.
name: monitoring_status
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/PayrollAccountObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- id: eb240ec6-a227-47ca-b7c7-fbbdfe7170a0
created_at: '2021-01-06T15:59:13.530178+00:00'
link_token_id: bd2c09e7-1303-46d5-87c0-0ffa572d7ae4
platform_id: fce3eee0-285b-496f-9b36-30e976194736
connected: true
monitoring_status: active
data_updated_at:
direct_deposit_allocations: '2021-01-08T00:00:00.000000+00:00'
data_refreshed_at:
direct_deposit_allocations: '2021-01-09T00:00:00.000000+00:00'
end_user_id: my_user_12345
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/accounts/{account_id}:
get:
tags:
- Accounts
summary: Get Account
description: Get a single payroll account.
operationId: get_account_v1_accounts__account_id__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/PayrollAccountObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: eb240ec6-a227-47ca-b7c7-fbbdfe7170a0
created_at: '2021-01-06T15:59:13.530178+00:00'
link_token_id: bd2c09e7-1303-46d5-87c0-0ffa572d7ae4
platform_id: fce3eee0-285b-496f-9b36-30e976194736
connected: true
monitoring_status: active
data_updated_at:
direct_deposit_allocations: '2021-01-08T00:00:00.000000+00:00'
data_refreshed_at:
direct_deposit_allocations: '2021-01-09T00:00:00.000000+00:00'
end_user_id: my_user_12345
/accounts/{account_id}/disable_monitoring:
post:
tags:
- Accounts
summary: Disable monitoring for account
description: Disable monitoring for an account so that refresh jobs will no
longer be scheduled to retrieve payroll data.
operationId: disable_monitoring_v1_accounts__account_id__disable_monitoring_post
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:
'204':
description: No Content
/accounts/{account_id}/disconnect:
post:
tags:
- Accounts
summary: Disconnect an account
description: Disconnect an account. This is permanent and irreversible. Once
complete, an account will no longer support Earnings Streams or Recurring
Access, e.g., On Demand Updates will no longer work and Monitoring will no
longer be performed. However, old data will remain accessible. As mentioned
above, this excludes derived data products e.g. Earnings Stream.
operationId: disconnect_v1_accounts__account_id__disconnect_post
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:
'204':
description: No Content
/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
/accounts/{account_id}/tax_forms:
get:
tags:
- Tax Forms
summary: List Tax Forms
description: Lists all tax forms associated with a payroll account. Each tax
form contains metadata like year, form type, and form ID. Tax forms are returned
in reverse chronological order by year. This is a paginated endpoint; see
how Pinwheel implements pagination here.
operationId: list_tax_forms_v1_accounts__account_id__tax_forms_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 tax forms during or after this year.
required: false
schema:
type: integer
description: Filter for tax forms during or after this year.
name: from_year
in: query
- description: Filter for tax forms during or before this year.
required: false
schema:
type: integer
description: Filter for tax forms during or before this year.
name: to_year
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/TaxFormObjResponseNoDocument_v2022_06_22'
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
created_at: '2022-07-05T19:54:45.745660+00:00'
form_type: W-2
year: '2021'
meta:
count: 1
next_cursor: eyJlbXBsb3llciI6ICJVbml0ZWQgUGFyY2VsIFNlcnZpY2UifQ==
refreshed_at: '2022-07-05T19:54:45.745660+00:00'
/accounts/{account_id}/tax_forms/{tax_form_id}:
get:
tags:
- Tax Forms
summary: Get Tax Form
description: Gets a specific tax form with document data.
operationId: get_tax_form_v1_accounts__account_id__tax_forms__tax_form_id__get
parameters:
- description: Unique identifier of the tax form object.
required: true
schema:
type: string
format: uuid
description: Unique identifier of the tax form object.
name: tax_form_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
- description: If set to true, return the parsed data of the tax form document.
Note the billing implications of the Tax Forms endpoint. Currently only
supported for W-2 forms.
required: false
schema:
type: boolean
description: If set to true, return the parsed data of the tax form document.
Note the billing implications of the Tax Forms endpoint. Currently only
supported for W-2 forms.
name: with_parsed_data
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:
data:
$ref: '#/components/schemas/TaxFormObjResponse_v2022_06_22'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 5c1952df-3a84-4f28-8318-58291452061f
created_at: '2022-07-05T19:54:45.745660+00:00'
form_type: W-2
year: '2021'
document:
id: aea8cc55-93fa-452d-8eac-b83c80b19a41
download_url: https://s3.us-east-1.amazonaws.com/tax_form_document
download_url_expiration: '2022-07-05T20:13:55.123450+00:00'
parsed_data:
box_a: 123-45-6789
box_b: '123456789'
box_c:
name: SAMPLE COMPANY INC
address:
raw: 123 MAIN ST, ANYWHERE, CA 123456 1234
line1: 123 MAIN ST
line2: null
city: ANYWHERE
state: CA
postal_code: '123456'
country: US
box_d: 000011 R#/123
box_e: JOHN SMITH
box_f:
raw: 1234 S MAPLE ST, ANYWHERE, CA 123456
line1: 1234 S MAPLE ST
line2: null
city: ANYWHERE
state: CA
postal_code: '123456'
country: US
box_1: 2350000
box_2: 150000
box_3: 2350000
box_4: 145700
box_5: 2350000
box_6: 34057
box_7: null
box_8: null
box_9: null
box_10: null
box_11: null
box_12:
- code: D
amount: 2000
- code: W
amount: 5000
box_13:
statutory_employee: false
retirement_plan: true
third_party_sick_pay: null
box_14: null
box_15_to_20:
- box_15_state: CA
box_15_employer_state_id: null
box_16: 2350000
box_17: 80000
box_18: null
box_19: null
box_20: null
warnings:
- field: parsed_data.box_11
status: unparsable
message: This field could not be parsed.
- field: parsed_data.box_13.third_party_sick_pay
status: unparsable
message: This field could not be parsed
/company_connections/{company_connection_id}/census:
get:
tags:
- Company Connect
summary: List Employees
description: List all employee census data reported by the payroll platform.
This is a paginated endpoint; see how Pinwheel implements pagination here.
operationId: get_v1_company_connections__company_connection_id__census_get
parameters:
- description: UUID of the Company Connection.
required: true
schema:
type: string
format: uuid
description: UUID of the Company Connection.
name: company_connection_id
in: path
- 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.
default: 25
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/CompanyIdentityObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- created_at: '2023-06-11T20:31:13.530178+00:00'
employee_external_id: '1001331'
full_name: Alicia Rose Green
first_name: Alicia
middle_name: Rose
last_name: 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
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/company_connections:
get:
tags:
- Company Connect
summary: List Company Connections
description: List all Company Connections. This is a paginated endpoint; see
how Pinwheel implements pagination here.
operationId: list_v1_company_connections_get
parameters:
- 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.
default: 25
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/CompanyConnectionBase'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- id: 07814454-9163-40b5-9aaa-8a738fa7080b
created_at: '2023-01-06T00:00:00.000000+00:00'
company_name: Acme, Inc.
status: ready_to_connect
status_updated_at: '2023-01-06T00:00:00.000000+00:00'
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
post:
tags:
- Company Connect
summary: Create Company Connection
description: Create a Company Connection used to get income & employment data
from your target company.
operationId: post_v1_company_connections_post
parameters:
- 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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyConnectionCreate'
examples:
example:
value:
company_name: Acme, Inc.
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/CompanyConnectionBase'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: 07814454-9163-40b5-9aaa-8a738fa7080b
created_at: '2023-01-06T00:00:00.000000+00:00'
company_name: Acme, Inc.
status: ready_to_connect
status_updated_at: '2023-01-06T00:00:00.000000+00:00'
/company_connections/{company_connection_id}:
get:
tags:
- Company Connect
summary: Get Company Connection
description: Get Company Connection.
operationId: get_v1_company_connections__company_connection_id__get
parameters:
- description: UUID of the Company Connection.
required: true
schema:
type: string
format: uuid
description: UUID of the Company Connection.
name: company_connection_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/CompanyConnectionBase'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: 07814454-9163-40b5-9aaa-8a738fa7080b
created_at: '2023-01-06T00:00:00.000000+00:00'
company_name: Acme, Inc.
status: ready_to_connect
status_updated_at: '2023-01-06T00:00:00.000000+00:00'
/company_connections/{company_connection_id}/employments:
get:
tags:
- Company Connect
summary: List Employments Data
description: List all employments data reported by the payroll platform. This
is a paginated endpoint; see how Pinwheel implements pagination here.
operationId: get_v1_company_connections__company_connection_id__employments_get
parameters:
- description: UUID of the Company Connection.
required: true
schema:
type: string
format: uuid
description: UUID of the Company Connection.
name: company_connection_id
in: path
- 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.
default: 25
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/CompanyEmploymentObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- created_at: '2023-06-11T20:31:13.530178+00:00'
employee_external_id: '1001331'
status: employed
employment_type: full_time
start_date: '2020-06-01'
termination_date: null
employer_name: Acme Corporation
title: Engineer
department: Engineering
manager_external_id: eb240ec6-a227-47ca-b7c7-fbbdfe7170a0
class_code: '1001'
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
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/company_connections/{company_connection_id}/incomes:
get:
tags:
- Company Connect
summary: List Employee Incomes
description: List all employee income data reported by the payroll platform.
This is a paginated endpoint; see how Pinwheel implements pagination here.
operationId: get_v1_company_connections__company_connection_id__incomes_get
parameters:
- description: UUID of the Company Connection.
required: true
schema:
type: string
format: uuid
description: UUID of the Company Connection.
name: company_connection_id
in: path
- 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.
default: 25
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/CompanyIncomeObjResponse'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- created_at: '2023-06-11T20:31:13.530178+00:00'
employee_external_id: '1001331'
compensation_amount: 400000
compensation_unit: monthly
currency: USD
pay_frequency: monthly
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/company_connections/{company_connection_id}/paystubs/{employee_external_id}:
get:
tags:
- Company Connect
- Company Connect
summary: List Employee Paystubs
description: List employee paystubs data reported by the payroll platform. This
is a paginated endpoint; see how Pinwheel implements pagination here.
operationId: get_v1_company_connections__company_connection_id__paystubs__employee_external_id__get
parameters:
- description: UUID of the Company Connection.
required: true
schema:
type: string
format: uuid
description: UUID of the Company Connection.
name: company_connection_id
in: path
- description: Employee ID as reported by their employer.
required: true
schema:
type: string
description: Employee ID as reported by their employer.
name: employee_external_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.
default: 25
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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/CompanyPaystubObjResponse'
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
employee_external_id: '8911172'
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
created_at: '2021-01-10T19:54:45.745660+00:00'
employer_name: Acme Corporation
external_paystub_id: 821b7d1b-c115-470c-9411-be132f51c19d
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
/company_connect/link_tokens:
post:
tags:
- Company Connect
summary: Create Link Token
description: Create a Company Connect link token used to launch a Link modal.
operationId: post_v1_company_connect_link_tokens_post
parameters:
- 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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyConnectLinkTokenCreate'
examples:
example:
value:
org_name: Fintech.io
company_connect:
company_connection_id: e3c3ec9e-eea5-42fc-b533-de3cea9c352f
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/CompanyConnectLinkTokenObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: bd2c09e7-1303-46d5-87c0-0ffa572d7ae4
token: eyJhbGciOiJIUz....pZ-qZZPO-mA06Dzu-nfUdurwaTUA
expires: '2021-01-09T02:52:26+00:00'
mode: production
/sandbox/accounts/{account_id}:
patch:
tags:
- Sandbox
summary: Override an account's monitoring status
description: Manually override a sandbox account's monitoring status.
operationId: patch_monitoring_status_v1_sandbox_accounts__account_id__patch
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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PayrollAccountPatchMonitoringStatus'
examples:
example:
value:
monitoring_status: user_action_required
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/PayrollAccountObjResponse'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
id: eb240ec6-a227-47ca-b7c7-fbbdfe7170a0
created_at: '2021-01-06T15:59:13.530178+00:00'
link_token_id: bd2c09e7-1303-46d5-87c0-0ffa572d7ae4
platform_id: fce3eee0-285b-496f-9b36-30e976194736
connected: true
monitoring_status: active
data_updated_at:
direct_deposit_allocations: '2021-01-08T00:00:00.000000+00:00'
data_refreshed_at:
direct_deposit_allocations: '2021-01-09T00:00:00.000000+00:00'
end_user_id: my_user_12345
/admin/token:
post:
tags:
- API Keys
summary: Admin API Authentication
description: Authenticate against the Admin API.
operationId: auth_v1_admin_token_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAdminTokenRequest'
examples:
example:
value:
username: bob@example.com
password: '!pa55w0rd'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/CreateAdminTokenResponseData'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
token: 665ffb0f-3b65-483d-97be-2aeddfd54467
expiration: '2023-03-24 21:37:00.650846+00:00'
workspace_name: Acme, Inc.
mode: production
user_role: administrator
parameters:
- 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
security: []
/admin/api_keys:
get:
tags:
- API Keys
summary: List API Keys
description: List all keys for this workspace.
operationId: list_keys_v1_admin_api_keys_get
parameters:
- 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.
default: 25
name: limit
in: query
- description: Admin API bearer token.
required: false
schema:
type: string
description: Admin API bearer token.
name: authorization
in: header
- 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/PaginationMeta'
data:
items:
$ref: '#/components/schemas/ListAPIKeyResponseData'
type: array
title: Data
type: object
required:
- meta
- data
x-tags:
- Schemas
examples:
example:
value:
data:
- mode: production
key: 412cb238ff82788ae1678fbdb3623a75b44059aa07a6e915c3d99a750e7953b2
expires_at: null
created_at: '2023-03-24 21:37:00.650846+00:00'
last_used_at: '2023-03-24'
is_active: true
revoked_at: null
meta:
count: 1
next_cursor: eyJuYW1lIjogImFtYXpvbiJ9
security:
- bearerAuth: []
post:
tags:
- API Keys
summary: Create an API Key
description: Creates an API Key.
operationId: create_key_v1_admin_api_keys_post
parameters:
- description: Admin API bearer token.
required: false
schema:
type: string
description: Admin API bearer token.
name: authorization
in: header
- 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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAPIKeyOptions'
examples:
example:
value:
expires_at: '2023-03-23 12:34:56'
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/CreateAPIKeyResponseData'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
mode: production
key: 412cb238ff82788ae1678fbdb3623a75b44059aa07a6e915c3d99a750e7953b2
secret: 23252c3d516ec1cf92822d8db03b04f59c22ac4810fb20752b5511e43340e771
expires_at: null
created_at: '2023-03-24 21:37:00.650846+00:00'
security:
- bearerAuth: []
/admin/api_keys/{api_key}/revoke:
post:
tags:
- API Keys
summary: Revoke an API Key
description: Revokes an API Key.
operationId: revoke_key_v1_admin_api_keys__api_key__revoke_post
parameters:
- description: The public token that refers to your API key, as distinct from
the API Secret.
required: true
schema:
type: string
description: The public token that refers to your API key, as distinct from
the API Secret.
name: api_key
in: path
- description: Admin API bearer token.
required: false
schema:
type: string
description: Admin API bearer token.
name: authorization
in: header
- 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/RevokeAPIKeyResponseData'
type: object
required:
- data
x-tags:
- Schemas
examples:
example:
value:
data:
mode: production
key: 412cb238ff82788ae1678fbdb3623a75b44059aa07a6e915c3d99a750e7953b2
expires_at: null
created_at: '2023-03-20 13:02:21.987347+00:00'
revoked_at: '2023-03-24 21:37:00.768426+00:00'
security:
- bearerAuth: []
components:
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
Allocation:
properties:
type:
allOf:
- type: string
enum:
- amount
description: Type of allocation.
value:
type: number
title: value
description: Value of allocation. If type is amount, you must include a
value. If type is null, the end-user will be able to select the allocation
type and value. If min_amount is also specified for the allocation, must
be greater than or equal to min_amount.
min_amount:
type: number
title: min_amount
description: Minimum amount for the allocation.
targets:
items:
$ref: '#/components/schemas/BankAccountDetails'
type: array
title: targets
description: List of allowed target accounts for an allocation.
default: []
type: object
title: Allocation
x-tags:
- Schemas
AllocationAccountObjResponse:
properties:
account_name:
type: string
title: account_name
description: The name of the account, as entered by the user or presented
by the platform.
account_type:
allOf:
- type: string
enum:
- checking
- savings
- debit_card
- pay_card
description: The type of account.
allocation_type:
allOf:
- type: string
enum:
- amount
- percentage
- remainder
description: The type of allocation.
amount:
type: integer
title: amount
description: The amount of this allocation, in cents. Required if `allocation_type`
is `amount`.
bank_name:
type: string
title: bank_name
description: The name of the bank associated with `allocation.routing_number`,
if available.
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.
masked_account_number:
type: string
maxLength: 4
minLength: 2
title: masked_account_number
description: Either the last two or four digits associated with the allocation,
dependent on what is displayed by the platform.
percentage:
type: number
title: percentage
description: The percentage of this allocation. Required if `allocation_type`
is `percentage`.
priority:
type: integer
title: priority
description: The priority of this allocation. Lower priority allocations
are filled first.
routing_number:
type: string
title: routing_number
description: Either the full routing number or last four digits of the routing
number associated with the allocation, dependent on what is displayed
by the platform.
type: object
required:
- allocation_type
- currency
title: Allocation
x-tags:
- Schemas
AnnualIncomeResponseObj:
properties:
year:
type: string
title: year
description: Year for which the income represents.
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_deductions_ytd:
type: integer
title: total_deductions_ytd
description: The cumulative year to date total deductions, in cents.
total_reimbursements_ytd:
type: integer
title: total_reimbursements_ytd
description: The cumulative year to date total reimbursements, in cents.
total_taxes_ytd:
type: integer
title: total_taxes_ytd
description: The cumulative year to date total taxes, in cents.
earnings_ytds:
items:
$ref: '#/components/schemas/EarningsYtds'
type: array
title: earnings_ytds
description: The cumulative year to date amount for all earnings, in cents.
type: object
required:
- year
- gross_pay_ytd
- net_pay_ytd
- total_deductions_ytd
- total_reimbursements_ytd
- total_taxes_ytd
- earnings_ytds
title: AnnualIncomeResponseObj
x-tags:
- Schemas
ApplicantNameAndAddress:
properties:
name:
type: string
title: name
description: The full name of the applicant.
address:
allOf:
- $ref: '#/components/schemas/AddressGetResponseItem'
title: address
description: The address of the applicant.
type: object
title: ApplicantNameAndAddress
x-tags:
- Schemas
BankAccount:
properties:
account_number:
anyOf:
- type: number
- type: string
title: account_number
description: The account number of the bank account.
account_name:
type: string
title: account_name
description: The name of the bank account.
bank_account_type:
type: string
title: bank_account_type
description: The type of the bank account.
is_joint_account:
type: boolean
title: is_joint_account
description: Whether the bank account is a joint account.
total_deposits:
anyOf:
- type: number
- type: string
title: total_deposits
description: The total deposits of the bank account.
beginning_balance:
anyOf:
- type: number
- type: string
title: beginning_balance
description: The beginning balance of the bank account.
ending_balance:
anyOf:
- type: number
- type: string
title: ending_balance
description: The ending balance of the bank account.
transactions:
items:
$ref: '#/components/schemas/BankAccountTransaction'
type: array
title: transactions
description: The transactions of the bank account.
type: object
title: BankAccount
x-tags:
- Schemas
BankAccountDetails:
properties:
name:
type: string
title: name
description: Name of the bank account.
type:
allOf:
- type: string
enum:
- checking
- savings
description: Bank account type, checking or savings. Required if requesting
direct_deposit_switch jobs.
routing_number:
type: string
maxLength: 9
minLength: 9
pattern: ^[0-9]*$
title: routing_number
description: Routing number of bank. Required if requesting direct_deposit_switch
jobs.
account_number:
type: string
minLength: 5
pattern: ^[0-9]*$
title: account_number
description: Bank account number. Required if requesting direct_deposit_switch
jobs.
type: object
title: BankAccountDetails
x-tags:
- Schemas
BankAccountTransaction:
properties:
date:
type: string
title: date
description: The date of the transaction.
description:
type: string
title: description
description: The description of the transaction.
amount:
anyOf:
- type: number
- type: string
title: amount
description: The amount of the transaction.
base_type:
type: string
title: base_type
description: The base type of the transaction.
type:
type: string
title: type
description: The type of the transaction.
type: object
title: BankAccountTransaction
x-tags:
- Schemas
BillNavigatorStatusUpdateRequest:
properties:
action:
allOf:
- type: string
enum:
- deactivate
- terminate
- deactivated
- terminated
description: The action to take on the end user's account. Valid actions
are `deactivated` and `terminated`. When an end user is set to `deactivated`,
the user can reactivate themselves. When an end user is set to `terminated`,
the action is irreversible.
reason:
type: string
title: reason
description: The reason for taking action on the end user's account.
type: object
required:
- action
title: Bill Navigator Status Update Request
x-tags:
- Schemas
CardDetails:
properties:
card_name:
type: string
maxLength: 30
minLength: 2
title: card_name
description: Name of the card. Required if requesting `bill_switch` job.
card_number:
type: string
maxLength: 19
minLength: 8
pattern: ^[0-9]*$
title: card_number
description: Card number. Required if requesting `bill_switch` job.
cvc:
type: string
maxLength: 4
minLength: 3
title: cvc
description: Card verification code or other security code of the card.
Required if requesting `bill_switch` job.
expiration_date:
type: string
format: date
title: expiration_date
description: Expiration date of the card in MM/YY format. Required if requesting
`bill_switch` job.
name_on_card:
type: string
title: name_on_card
description: Full name displayed on the card. Required if requesting `bill_switch`
job.
card_zip_code:
type: string
maxLength: 5
minLength: 5
pattern: ^[0-9]*$
title: card_zip_code
description: Zip code for the card. Required if requesting `bill_switch`
job.
billing_address:
type: string
title: billing_address
description: Billing address line one of the card. Required if requesting
`bill_switch` job.
billing_address_two:
type: string
title: billing_address_two
description: Billing address line two of the card. Required if requesting
`bill_switch` job.
city:
type: string
title: city
description: City of the card. Required if requesting `bill_switch` job.
state:
allOf:
- type: string
enum:
- AL
- AK
- AZ
- AR
- CA
- CO
- CT
- DE
- FL
- GA
- HI
- ID
- IL
- IN
- IA
- KS
- KY
- LA
- ME
- MD
- MA
- MI
- MN
- MS
- MO
- MT
- NE
- NV
- NH
- NJ
- NM
- NY
- NC
- ND
- OH
- OK
- OR
- PA
- RI
- SC
- SD
- TN
- TX
- UT
- VT
- VA
- WA
- WV
- WI
- WY
description: Two letter state code of the card, e.g. `NY`. Required if requesting
`bill_switch` job.
type: object
required:
- card_name
- card_number
- expiration_date
- name_on_card
- card_zip_code
title: object
x-tags:
- Schemas
CompanyConnect:
properties:
company_connection_id:
type: string
format: uuid
title: company_connection_id
description: ID of the Company Connection.
type: object
title: CompanyConnect
description: "This class defines the fields present in the `company_connect`\
\ object in\nthe link token.\n\nFor non-Company Connect link tokens, this\
\ field is optional. If the object\nis present, it indicates that the link\
\ token is a Company Connect link\ntoken.\n\nAttributes:\n company_connection_id\
\ (UUID): This field specifies the ID of the\n company connection.\
\ This ID is generated by Pinwheel. All Company\n Connect webhooks\
\ reference the connection by this ID, and all\n public CC API endpoints\
\ require this ID as well."
x-tags:
- Schemas
CompanyConnectLinkTokenCreate:
properties:
required_jobs:
items:
type: string
enum:
- company_employments
- company_census
- company_incomes
type: array
description: List of job types to be performed on the Company Connection.
Platforms that do not support ALL of these jobs will not be visible to
the user.
org_name:
type: string
maxLength: 30
minLength: 3
title: org_name
description: Organization or app name that is displayed to the user.
skip_intro_screen:
type: boolean
title: skip_intro_screen
description: If set to true, intro screen is not shown to user.
default: false
platform_id:
type: string
format: uuid
title: platform_id
description: UUID of a platform. If set, user is taken directly to Link
login screen.
language:
allOf:
- type: string
enum:
- en
- es
description: IETF code denoting which language to display in Link.
default: en
company_connect:
allOf:
- $ref: '#/components/schemas/CompanyConnect'
title: company_connect
description: Configuration used to specify a Company Connection.
type: object
required:
- org_name
title: LinkTokenPostBody
x-tags:
- Schemas
CompanyConnectLinkTokenObjResponse:
properties:
mode:
allOf:
- type: string
enum:
- sandbox
- development
- production
description: Token mode, i.e. `sandbox`, `development`, or `production`.
id:
type: string
format: uuid
title: id
description: UUID of the link token.
token:
type: string
title: token
description: Short-lived token that is used to initialize Pinwheel Link.
expires:
type: string
format: date-time
title: expires
description: The token will be invalid after this timestamp.
type: object
required:
- mode
- id
- token
- expires
title: CompanyConnect Link Token Response Data
x-tags:
- Schemas
CompanyConnectionBase:
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.
company_name:
type: string
title: company_name
description: Name of the company used in a Company Connection.
status:
allOf:
- type: string
enum:
- ready_to_connect
- connection_failed
- processing
- data_available
- reconnect_needed
description: The status of the Company Connection. See documentation for details.
status_updated_at:
type: string
format: date-time
title: status_updated_at
description: Timestamp of when the Company Connection's status was last
updated.
type: object
required:
- id
- created_at
- company_name
- status
- status_updated_at
title: CompanyConnectionBase
x-tags:
- Schemas
CompanyConnectionCreate:
properties:
company_name:
type: string
title: company_name
description: Name of the company used in a Company Connection.
type: object
required:
- company_name
title: CompanyConnectionPostBody
x-tags:
- Schemas
CompanyEmploymentObjResponse:
properties:
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
employee_external_id:
type: string
title: employee_external_id
description: Employee ID as reported by their employer.
status:
allOf:
- type: string
enum:
- employed
- terminated
- furloughed
description: The employment status of the employee.
employment_type:
allOf:
- type: string
enum:
- full_time
- part_time
- seasonal
- temporary
- contractor
- self_employed
- per_diem
- commission
description: The employment type e.g. full time, part time, seasonal, contractor.
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.
title:
type: string
title: title
description: The job title of the employee.
department:
type: string
title: department
description: The department the employee works in.
manager_external_id:
type: string
title: manager_external_id
description: The employee's manager's employee ID.
class_code:
type: string
title: class_code
description: A three- to four-digit code that identifies types of work,
typically used by insurance companies to evaluate risk.
employer_address:
allOf:
- $ref: '#/components/schemas/AddressGetResponseItem'
title: employer_address
description: The address of the employer.
type: object
required:
- created_at
- employee_external_id
- employer_name
title: CompanyEmploymentObjResponse
x-tags:
- Schemas
CompanyIdentityObjResponse:
properties:
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
employee_external_id:
type: string
title: employee_external_id
description: Employee ID as reported by their employer.
date_of_birth:
type: string
format: date
title: date_of_birth
description: The date the employee was born.
emails:
items:
type: string
type: array
title: emails
description: The emails associated with the employee.
first_name:
type: string
title: first_name
description: The first name of the employee.
middle_name:
type: string
title: middle_name
description: The middle name of the employee.
last_name:
type: string
title: last_name
description: The last name of the employee.
last_four_ssn:
type: string
title: last_four_ssn
description: The last four digits of the employee's social security number
(SSN).
full_name:
type: string
title: full_name
description: The full name of the employee.
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:
- created_at
- employee_external_id
- first_name
- middle_name
- last_name
- full_name
title: CompanyIdentityObjResponse
x-tags:
- Schemas
CompanyIncomeObjResponse:
properties:
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
employee_external_id:
type: string
title: employee_external_id
description: Employee ID as reported by their employer.
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:
- created_at
- employee_external_id
- compensation_amount
- compensation_unit
- currency
title: CompanyIncomeObjResponse
x-tags:
- Schemas
CompanyPaystubObjResponse:
properties:
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
employee_external_id:
type: string
title: employee_external_id
description: Employee ID as reported by their employer.
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.
employer_name:
type: string
title: employer_name
description: The name of the employer that issued the paystub.
type: object
required:
- created_at
- employee_external_id
- pay_date
- currency
- gross_pay_amount
- net_pay_amount
- check_amount
- total_taxes
- total_deductions
- total_reimbursements
title: CompanyPaystubObjResponse
x-tags:
- Schemas
CreateAPIKeyOptions:
properties:
expires_at:
type: string
format: date-time
title: expires_at
description: Timestamp used to set when this key automatically expires.
type: object
title: object
x-tags:
- Schemas
CreateAPIKeyResponse:
properties:
data:
$ref: '#/components/schemas/CreateAPIKeyResponseData'
type: object
required:
- data
x-tags:
- Schemas
CreateAPIKeyResponseData:
properties:
mode:
allOf:
- type: string
enum:
- sandbox
- development
- production
description: The mode that the Admin API token is authorized for.
key:
type: string
title: key
description: The public token that refers to your API key, as distinct from
the API Secret.
expires_at:
type: string
format: date-time
title: expires_at
description: Timestamp used to set when this key automatically expires.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
secret:
type: string
title: secret
description: The secret token part of the API key used to authorize requests
to the Pinwheel API.
type: object
required:
- mode
- key
- created_at
- secret
title: object
x-tags:
- Schemas
CreateAdminTokenRequest:
properties:
username:
type: string
title: username
description: Username or email of the Developer Dashboard user used to create
an Admin API token.
password:
type: string
title: password
description: Password of the Developer Dashboard user used to create an
Admin API token.
type: object
required:
- username
- password
title: object
x-tags:
- Schemas
CreateAdminTokenResponse:
properties:
data:
$ref: '#/components/schemas/CreateAdminTokenResponseData'
type: object
required:
- data
x-tags:
- Schemas
CreateAdminTokenResponseData:
properties:
token:
type: string
format: uuid
title: token
description: Short-lived token that is used to authorize Admin API endpoints.
expiration:
type: string
format: date-time
title: expiration
description: Timestamp of when the Admin API token expires.
workspace_name:
type: string
title: workspace_name
description: Name of the workspace the Admin API token is authorized for.
mode:
allOf:
- type: string
enum:
- sandbox
- development
- production
description: The mode that the Admin API token is authorized for.
user_role:
allOf:
- type: string
enum:
- owner
- administrator
- developer
description: The role of the developer-dashboard user the Admin API token
was authenticated with.
type: object
required:
- token
- expiration
- workspace_name
- mode
- user_role
title: object
x-tags:
- Schemas
DDAllocationObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier of the Direct Deposit Allocations object.
account_id:
type: string
format: uuid
title: account_id
description: UUID of the payroll account.
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.
allocations:
items:
$ref: '#/components/schemas/AllocationAccountObjResponse'
type: array
title: allocations
description: List of current allocations for this payroll account.
type: object
required:
- id
- account_id
- created_at
- updated_at
- allocations
title: Direct Deposit Allocations
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
DirectDepositAllocationDetail:
properties:
type:
allOf:
- type: string
enum:
- amount
- percentage
- remainder
description: Indicates what type of allocation this is.
value:
type: integer
title: value
description: The value (if any) for this allocation. Will be set if the
type is `percentage` or `amount`.
target:
allOf:
- $ref: '#/components/schemas/TargetAccount'
title: target
description: The target account for this allocation.
type: object
title: DirectDepositAllocationDetail
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
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
EarningsStreamPayoutObjResponse_v2023_04_18:
properties:
status:
allOf:
- type: string
enum:
- estimated
- processed
description: Status of the payout, either `estimated` or `processed`. `estimated`
represents income that has been earned but not finalized in the payroll
system. `processed` represents income that has a finalized paystub issued
in the payroll system.
pay_date:
type: string
format: date
title: pay_date
description: Date that the payout will arrive in a user's account. This
date includes a buffer for ACH settlement time. For estimated payouts,
this is projected from historical pay dates and may differ by a few days
from actual settlement. For processed payouts, this is taken directly
from the paystub.
net_pay:
allOf:
- $ref: '#/components/schemas/NetPayObjResponse'
title: net_pay
description: Object representing how much someone will receive in net pay
(i.e., the pay that will be disbursed to user-directed accounts) for the
work they completed that day. This is equivalent to (gross pay - deductions).
E.g., gross pay minus income tax, healthcare, 401k contributions, or other
withholdings that are not included in the user's payout.
earnings:
items: {}
type: array
title: earnings
description: List of objects representing income earned on a given day.
All earnings roll up into specific payouts.
type: object
required:
- status
- pay_date
- earnings
title: EarningsStreamPayoutsResponse
x-tags:
- Schemas
EarningsYtds:
properties:
amount:
type: integer
title: amount
description: The year to date earnings amount for an earning category, in
cents.
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.
type: object
title: EarningsYtds
x-tags:
- Schemas
EmployeeName:
properties:
first_name:
type: string
title: first_name
description: The first name of the employee.
middle_name:
type: string
title: middle_name
description: The middle name of the employee.
last_name:
type: string
title: last_name
description: The last name of the employee.
full_name:
type: string
title: full_name
description: The full name of the employee.
type: object
required:
- full_name
title: EmployeeName
x-tags:
- Schemas
EmployeeNameAndAddress:
properties:
name:
type: string
title: name
description: The full name of the employee.
address:
allOf:
- $ref: '#/components/schemas/AddressGetResponseItem'
title: address
description: The address of the employee.
type: object
title: EmployeeNameAndAddress
x-tags:
- Schemas
EmployeeResponseObj:
properties:
name:
allOf:
- $ref: '#/components/schemas/EmployeeName'
title: name
description: The name of 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:
- name
title: EmployeeResponseObj
x-tags:
- Schemas
EmployerNameAndAddress:
properties:
name:
type: string
title: name
description: Name of employer, e.g., Apple, Disney, Walmart.
address:
allOf:
- $ref: '#/components/schemas/AddressGetResponseItem'
title: address
description: The address of the employer.
type: object
title: EmployerNameAndAddress
x-tags:
- Schemas
EmployerObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: UUID of the employer.
name:
type: string
title: name
description: Name of employer, e.g., Apple, Disney, Walmart.
last_updated:
type: string
format: date-time
title: last_updated
description: ISO 8601 timestamp of the last update to this object.
logo_url:
type: string
maxLength: 65536
minLength: 1
format: uri
title: logo_url
description: The URL of the employer logo.
supported_jobs:
items:
type: string
enum:
- direct_deposit_allocations
- bill_cancellation
- direct_deposit_switch
- paycheck_viewer
- paystubs
- bill_switch
- identity
- direct_deposit_payment
- income
- employment
- tax_forms
- shifts
type: array
description: Array of supported jobs.
fractional_amount_supported:
type: boolean
title: fractional_amount_supported
description: Whether or not the platform accepts decimal values for `direct_deposit_switch`.
amount_supported:
type: boolean
title: amount_supported
description: Whether a direct deposit job supports specific amount.
min_amount:
type: number
title: min_amount
description: Minimum amount, if any, platform accepts for `direct_deposit_switch`.
max_amount:
type: number
title: max_amount
description: Maximum amount, if any, platform accepts for `direct_deposit_switch`.
min_percentage:
type: integer
title: min_percentage
description: Minimum percentage allowed for `direct_deposit_switch`.
maximum: true
minimum: true
exclusiveMinimum: true
exclusiveMaximum: true
max_percentage:
type: integer
title: max_percentage
description: Maximum percentage allowed for `direct_deposit_switch`.
maximum: true
minimum: true
exclusiveMinimum: true
exclusiveMaximum: true
percentage_supported:
type: boolean
title: percentage_supported
description: Whether a direct deposit job supports percentage switching.
type: object
required:
- id
- name
- last_updated
- supported_jobs
- fractional_amount_supported
- amount_supported
- min_percentage
- max_percentage
- percentage_supported
title: Employer
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
EmploymentResponseObj:
properties:
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.
start_date:
type: string
format: date
title: start_date
description: The date the employee began their job.
employment_duration_months:
type: integer
title: employment_duration_months
description: The length of time, in months, the employee has been active
with the employer.
employment_status:
allOf:
- type: string
enum:
- employed
- terminated
- furloughed
description: The employment status of the employee.
employment_type:
type: string
title: employment_type
description: The employment type e.g. full time, part time, seasonal, contractor.
termination_date:
type: string
format: date
title: termination_date
description: The date the employee was terminated.
title:
type: string
title: title
description: The job title of the employee.
most_recent_pay_date:
type: string
format: date
title: most_recent_pay_date
description: The latest date when the employee received regular pay.
type: object
required:
- employer_name
title: EmploymentResponseObj
x-tags:
- Schemas
EndUser:
properties:
platform_matching:
allOf:
- $ref: '#/components/schemas/LinkUserAuthenticationDataObjCreate'
title: platform_matching
description: User PII data for enabling partner-based switches.
type: object
title: EndUser
x-tags:
- Schemas
EndUserDocumentObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier of the document object.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
end_user_id:
type: string
title: end_user_id
description: User ID provided by you, to associate Pinwheel users with your
user model. Required if `account_id` is not provided. This ID will be
returned in all webhook events and all account-affiliated API responses.
Leading and trailing whitespace will be stripped. Do not include PII in
this identifier.
document:
allOf:
- $ref: '#/components/schemas/DocumentObjPublicResponseItem'
title: document
description: A document.
document_type:
allOf:
- type: string
enum:
- paystub
- W-2
- '1099'
- direct_deposit_form
- verification_report
- '1040'
- bank_statement
- ssi_award_letter
- w2
- verification_photo
description: The type of the document.
parsed_data:
oneOf:
- $ref: '#/components/schemas/UploadedPaystub'
- $ref: '#/components/schemas/UploadedBankStatement'
- $ref: '#/components/schemas/UploadedSSIAwardLetter'
- $ref: '#/components/schemas/UploadedW2Informed'
title: parsed_data
description: The parsed data of the document.
discriminator:
propertyName: document_type
mapping:
paystub: '#/components/schemas/UploadedPaystub'
bank_statement: '#/components/schemas/UploadedBankStatement'
ssi_award_letter: '#/components/schemas/UploadedSSIAwardLetter'
w2: '#/components/schemas/UploadedW2Informed'
warnings:
items:
$ref: '#/components/schemas/FieldWarning'
type: array
title: warnings
description: Used to indicate if there are any warnings for fields returned
in this response.
fraud:
allOf:
- $ref: '#/components/schemas/SharedFraud'
title: fraud
description: Used to indicate any fraud indications in this document.
type: object
required:
- id
- created_at
- end_user_id
- document
- document_type
title: Document for end user
x-tags:
- Schemas
FieldWarning:
properties:
field:
type: string
title: field
description: The response field associated with this warning. Nested values
are delimited with a `.`, i.e. `parsed_data.box_13.statutory_employee`.
status:
allOf:
- type: string
enum:
- unparsable
description: The status type of this warning.
message:
type: string
title: message
description: A full description of the warning.
type: object
required:
- field
- status
- message
title: FieldWarning
x-tags:
- Schemas
FreshnessPaginationListMeta:
properties:
refreshed_at:
type: string
format: date-time
title: refreshed_at
description: ISO 8601 timestamp of the most recent refresh of this data.
updated_at:
type: string
format: date-time
title: updated_at
description: ISO 8601 timestamp of the last update to this object.
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: FreshnessPaginationListMeta
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
IncomeAndEmploymentResponseObj:
properties:
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.
start_date:
type: string
format: date
title: start_date
description: The date the employee began their job.
employment_duration_months:
type: integer
title: employment_duration_months
description: The length of time, in months, the employee has been active
with the employer.
employment_status:
allOf:
- type: string
enum:
- employed
- terminated
- furloughed
description: The employment status of the employee.
employment_type:
type: string
title: employment_type
description: The employment type e.g. full time, part time, seasonal, contractor.
termination_date:
type: string
format: date
title: termination_date
description: The date the employee was terminated.
title:
type: string
title: title
description: The job title of the employee.
most_recent_pay_date:
type: string
format: date
title: most_recent_pay_date
description: The latest date when the employee received regular pay.
income:
allOf:
- $ref: '#/components/schemas/IncomeResponseObj'
title: income
description: Income details for the employment.
type: object
required:
- employer_name
- income
title: IncomeAndEmploymentResponseObj
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
IncomeResponseObj:
properties:
pay_frequency:
allOf:
- type: string
enum:
- daily
- weekly
- bi-weekly
- monthly
- semi-monthly
- variable
description: Describes how often the employee is paid.
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.
compensation_amount:
type: integer
title: compensation_amount
description: The amount per compensation unit, in cents.
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.
annual_incomes:
items:
$ref: '#/components/schemas/AnnualIncomeResponseObj'
type: array
title: annual_incomes
description: Annualized pay details for the user. Starting with the current
year and going back at most 2 years.
paystubs:
items:
$ref: '#/components/schemas/PaystubWithEarningsResponseObj'
type: array
title: paystubs
description: Up to 2 most recent paystubs for the employee's income.
type: object
required:
- compensation_unit
- compensation_amount
- currency
- annual_incomes
- paystubs
title: IncomeResponseObj
x-tags:
- Schemas
JobObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
name:
allOf:
- type: string
enum:
- direct_deposit_allocations
- bill_cancellation
- direct_deposit_switch
- paycheck_viewer
- paystubs
- bill_switch
- identity
- direct_deposit_payment
- income
- employment
- tax_forms
- shifts
description: Name of the completed job.
timestamp:
type: string
format: date-time
title: timestamp
description: ISO 8601 timestamp of job completion.
outcome:
allOf:
- type: string
enum:
- success
- pending
- error
description: The outcome of the job.
error_code:
type: string
title: error_code
description: On error, an explicit code describing the error.
error_type:
type: string
title: error_type
description: On error, a high level classification of the error.
link_token_id:
type: string
format: uuid
title: link_token_id
description: UUID of the link token triggering the job.
params:
allOf:
- $ref: '#/components/schemas/ParamsPayload'
title: params
description: Input parameters to the job.
account_id:
type: string
format: uuid
title: account_id
description: UUID of the payroll account.
type: object
required:
- id
- name
- timestamp
- outcome
- link_token_id
title: Job
x-tags:
- Schemas
JobObjResponse_v2023_11_22:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
name:
allOf:
- type: string
enum:
- direct_deposit_allocations
- bill_cancellation
- direct_deposit_switch
- paycheck_viewer
- paystubs
- bill_switch
- identity
- direct_deposit_payment
- income
- employment
- tax_forms
- shifts
description: Name of the completed job.
timestamp:
type: string
format: date-time
title: timestamp
description: ISO 8601 timestamp of job completion.
outcome:
allOf:
- type: string
enum:
- success
- pending
- error
description: The outcome of the job.
error_code:
type: string
title: error_code
description: On error, an explicit code describing the error.
error_type:
type: string
title: error_type
description: On error, a high level classification of the error.
link_token_id:
type: string
format: uuid
title: link_token_id
description: UUID of the link token triggering the job.
params:
allOf:
- $ref: '#/components/schemas/ParamsPayload_v2023_11_22'
title: params
description: Input parameters to the job.
account_id:
type: string
format: uuid
title: account_id
description: UUID of the payroll account.
type: object
required:
- id
- name
- timestamp
- outcome
- link_token_id
title: Job
x-tags:
- Schemas
LinkTokenCreate_v2025_07_08:
properties:
org_name:
type: string
maxLength: 30
minLength: 3
title: org_name
description: Organization or app name that is displayed to the user.
allocation:
allOf:
- $ref: '#/components/schemas/Allocation'
title: allocation
description: Allocation specified for the link token.
skip_intro_screen:
type: boolean
title: skip_intro_screen
description: If set to true, intro screen is not shown to user.
default: false
employer_id:
type: string
format: uuid
title: employer_id
description: UUID of an employer. If set, user is taken directly to Link
login screen.
disable_direct_deposit_splitting:
type: boolean
title: disable_direct_deposit_splitting
description: If set to true, user will not be given the option to choose
between a full or partial direct deposit switch. Only relevant with job
`direct_deposit_switch`. Defaults to false.
default: false
platform_id:
type: string
format: uuid
title: platform_id
description: UUID of a platform. If set, user is taken directly to Link
login screen.
platform_type:
allOf:
- type: string
enum:
- payroll
- time_and_attendance
- tax
- merchant
description: The type of the platform. `payroll` platforms are used for
direct-deposit switching and for Verify use cases. `time_and_attendance`
platforms contain data around shifts and hours. `tax` platforms are used
for tax solutions. `merchant` type platforms are used for bill switching
and cancellation.
language:
allOf:
- type: string
enum:
- en
- es
description: IETF code denoting which language to display in Link.
default: en
end_user_id:
type: string
maxLength: 255
minLength: 1
title: end_user_id
description: User ID provided by you, to associate Pinwheel users with your
user model. Required if `account_id` is not provided. This ID will be
returned in all webhook events and all account-affiliated API responses.
Leading and trailing whitespace will be stripped. Do not include PII in
this identifier.
account_id:
type: string
format: uuid
title: account_id
description: UUID of the payroll account.
document_uploads:
allOf:
- type: string
enum:
- direct
- fallback
- disabled
description: Optional parameter to facilitate pathway into document uploads
usage. Defaults to None.
tags:
additionalProperties:
type: string
type: object
title: tags
description: Tags associated with the Link token. These are restricted to
string key-value pairs.
deposit_forms:
allOf:
- type: string
enum:
- direct
- fallback
- disabled
description: Optional parameter to facilitate pathway into deposit forms.
Defaults to fallback if deposit forms are enabled for your workspace.
use_case:
allOf:
- type: string
enum:
- account_onboarding
- account_servicing
- underwriting
description: Field to indicate where in your application Pinwheel is being
launched. Required if leveraging Background Identify (PreMatch employee
lookup check prior to SDK initialization).
end_user:
allOf:
- $ref: '#/components/schemas/EndUser'
title: end_user
description: Optional field where data about an end user can be provided
to enable products such as automated platform matching.
cards:
items:
$ref: '#/components/schemas/CardDetails'
type: array
title: cards
description: Card details needed to attempt a bill switch.
reseller_customer_id:
type: string
maxLength: 40
title: reseller_customer_id
description: The identifier for a reseller's customer. This field is required
for resellers. For other customers, a non-null value will result in a
400 error. The value supplied must be preregistered with Pinwheel's customer
success team.
solution:
allOf:
- type: string
enum:
- Verify
- Bill Switch
- Bill Manager
- Paycheck Viewer
- Switch Kit
- Deposit Switch
description: The Pinwheel solution to be presented to the user.
features:
items:
type: string
enum:
- direct_deposit_allocations
- bill_cancellation
- direct_deposit_switch
- paycheck_viewer
- paystubs
- bill_switch
- identity
- direct_deposit_payment
- income
- employment
- tax_forms
- shifts
type: array
description: A list of job types to be performed on the user's account.
Platforms/merchants that do not support ALL of these jobs will not be
visible to the user. This property is required unless the account_id property
is set.
type: object
required:
- org_name
- solution
title: LinkTokenPostBody
x-tags:
- Schemas
LinkTokenObjResponse_v2021_07_28:
properties:
mode:
allOf:
- type: string
enum:
- sandbox
- development
- production
description: Token mode, i.e. `sandbox`, `development`, or `production`.
id:
type: string
format: uuid
title: id
description: UUID of the link token.
token:
type: string
title: token
description: Short-lived token that is used to initialize Pinwheel Link.
smart_branch_url:
type: string
title: smart_branch_url
description: URL that will initiate a Pinwheel-hosted smart branch experience,
if smart branch is configured for the workspace.
expires:
type: string
format: date-time
title: expires
description: The token will be invalid after this timestamp.
type: object
required:
- mode
- id
- token
- expires
title: LinkToken
x-tags:
- Schemas
LinkUserAuthenticationDataObjCreate:
properties:
social_security_number:
type: string
maxLength: 9
minLength: 9
pattern: ^[0-9]*$
title: social_security_number
description: Full 9-digit social security number of the user (required).
Using full SSN will improve conversion.
social_security_number_last_four:
type: string
maxLength: 4
minLength: 4
pattern: ^[0-9]*$
title: social_security_number_last_four
description: Last four digits of the user's social security number. Use
this field only when the full 9-digit SSN (social_security_number) is
not available. Passing the full SSN yields over 20% higher match rate
compared to using only the last four digits.
date_of_birth:
type: string
format: date
title: date_of_birth
description: The user's date of birth in `YYYY-MM-DD` format (required).
last_name:
type: string
title: last_name
description: The user's last name (required).
first_name:
type: string
title: first_name
description: The user's first name (required).
mobile_phone_number:
type: string
maxLength: 10
minLength: 10
pattern: ^[0-9]*$
title: mobile_phone_number
description: The users's 10-digit mobile phone number (required). Do not
include country code.
home_address_zip_code:
type: string
maxLength: 5
minLength: 5
pattern: ^[0-9]*$
title: home_address_zip_code
description: The user's 5-digit home zip code (required).
email:
type: string
format: email
title: email
description: The user's email (strongly recommended). The email must have
valid syntax with an @ and valid domain e.g. `name@example.com`. If provided
email is invalid a 400 will be returned. For more details on validation
see https://github.com/JoshData/python-email-validator.
type: object
title: object
x-tags:
- Schemas
ListAPIKeyResponseData:
properties:
mode:
allOf:
- type: string
enum:
- sandbox
- development
- production
description: The mode that the Admin API token is authorized for.
key:
type: string
title: key
description: The public token that refers to your API key, as distinct from
the API Secret.
expires_at:
type: string
format: date-time
title: expires_at
description: Timestamp used to set when this key automatically expires.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
last_used_at:
type: string
format: date
title: last_used_at
description: Date the API key was last used in a Pinwheel API request. Null
if the key hasn't been used.
is_active:
type: boolean
title: is_active
description: If true, the API key can be used in Pinwheel API requests.
Otherwise, the key is no longer useable.
revoked_at:
type: string
format: date-time
title: revoked_at
description: Timestamp of when this key was revoked.
type: object
required:
- mode
- key
- created_at
- is_active
title: object
x-tags:
- Schemas
ListMeta:
properties:
count:
type: integer
title: count
description: Number of objects returned.
type: object
title: ListMeta
x-tags:
- Schemas
MerchantPayment:
properties:
card_name:
type: string
title: card_name
description: The name of the new card added in a bill switch job.
last_four_card_number:
type: string
title: last_four_card_number
description: The last four digits of the card number added in a bill switch
job.
account_name:
type: string
title: account_name
description: The account name (if any) for this payment.
account_type:
allOf:
- type: string
enum:
- checking
- savings
description: The account type for this payment.
last_four_account_number:
type: string
title: last_four_account_number
description: The last four digits of the account number for this payment.
type: object
title: MerchantPayment
x-tags:
- Schemas
NetPayObjResponse:
properties:
amount:
type: integer
title: amount
description: Amount of net pay, denominated in the smallest unit for the
currency, e.g. for USD, 10000 represents $100 since the smallest unit
is cents. See ISO 4217.
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.
type: object
required:
- amount
- currency
title: NetPayObjResponse
x-tags:
- Schemas
PaginationMeta:
properties:
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: PaginationMeta
x-tags:
- Schemas
ParamsPayload:
properties:
batch_size:
type: integer
title: batch_size
description: The number of paystubs to process in each batch.
batch_number:
type: integer
title: batch_number
description: The number of the batch to process.
total_employees:
type: integer
title: total_employees
description: The total number of employees in the company.
document_type:
allOf:
- type: string
enum:
- paystub
- W-2
- '1099'
- direct_deposit_form
- verification_report
- '1040'
- bank_statement
- ssi_award_letter
- w2
- verification_photo
description: The type of the document.
pay_date:
type: string
title: pay_date
description: The date when the check amount is paid to the employee.
year:
type: integer
title: year
description: The tax year of the form.
count:
type: integer
title: count
description: The number of available data objects fetched in the job.
from_pay_date:
type: string
format: date
title: from_pay_date
description: The earliest pay date for the set of available paystubs in
the paystubs job.
to_pay_date:
type: string
format: date
title: to_pay_date
description: The latest pay date for the set of available paystubs in the
paystubs job.
has_potential_paystubs_documents:
type: boolean
title: has_potential_paystubs_documents
description: Indicates whether a paystubs documents job will attempt to
run.
sync_status:
allOf:
- type: string
enum:
- in_progress
- complete
description: The current synchronization status of the payroll platforms
data with Pinwheel's data.
bill_id:
type: string
format: uuid
title: bill_id
description: UUID of the user's recurring bill. This corresponds to the
`id` field in the Bill Detection webhooks (e.g. `bill.added`).
type:
allOf:
- type: string
enum:
- ach
- card
description: The type of payment that was used in a bill switch job.
payment:
allOf:
- $ref: '#/components/schemas/MerchantPayment'
title: payment
description: The payment that was updated during a bill switch job.
frequency:
allOf:
- type: string
enum:
- weekly
- bi-weekly
- monthly
- bi-monthly
- quarterly
- semi-yearly
- yearly
- other
description: How often the recurring bill is paid.
next_payment_date:
type: string
format: date-time
title: next_payment_date
description: Next payment date for the bill (if known).
next_payment_amount_cents:
type: integer
title: next_payment_amount_cents
description: Next predicted payment amount in cents.
is_integrated_switch:
type: boolean
title: is_integrated_switch
description: Whether this is an integrated switch flow (true) or guided
flow (false).
is_integrated_cancellation:
type: boolean
title: is_integrated_cancellation
description: Whether this is an integrated cancellation flow (true) or guided
flow (false).
detection_method:
allOf:
- type: string
enum:
- manual
- external_plaid
- first_party
description: Whether this bill was detected from an external account (`external-plaid`),
uploaded transaction data (`first-party`), or created manually by the
user (`manual`).
reported_platform_name:
type: string
title: reported_platform_name
description: For platforms not tracked by Pinwheel, the reported name of
the merchant/platform associated with the recurring bill or subscription.
reserved_platform_id:
type: string
format: uuid
title: reserved_platform_id
description: For platforms not tracked by Pinwheel, the reserved platform
ID if we track it in the future.
amount:
type: integer
title: amount
description: The amount to allocate per paycheck in the direct_deposit_switch
jobs.
type: object
title: object
x-tags:
- Schemas
ParamsPayload_v2023_11_22:
properties:
document_type:
allOf:
- type: string
enum:
- paystub
- W-2
- '1099'
- direct_deposit_form
- verification_report
- '1040'
- bank_statement
- ssi_award_letter
- w2
- verification_photo
description: The type of the document.
pay_date:
type: string
title: pay_date
description: The date when the check amount is paid to the employee.
year:
type: integer
title: year
description: The tax year of the form.
count:
type: integer
title: count
description: The number of available data objects fetched in the job.
from_pay_date:
type: string
format: date
title: from_pay_date
description: The earliest pay date for the set of available paystubs in
the paystubs job.
to_pay_date:
type: string
format: date
title: to_pay_date
description: The latest pay date for the set of available paystubs in the
paystubs job.
has_potential_paystubs_documents:
type: boolean
title: has_potential_paystubs_documents
description: Indicates whether a paystubs documents job will attempt to
run.
sync_status:
allOf:
- type: string
enum:
- in_progress
- complete
description: The current synchronization status of the payroll platforms
data with Pinwheel's data.
bill_id:
type: string
format: uuid
title: bill_id
description: UUID of the user's recurring bill. This corresponds to the
`id` field in the Bill Detection webhooks (e.g. `bill.added`).
type:
allOf:
- type: string
enum:
- ach
- card
description: The type of payment that was used in a bill switch job.
payment:
allOf:
- $ref: '#/components/schemas/MerchantPayment'
title: payment
description: The payment that was updated during a bill switch job.
frequency:
allOf:
- type: string
enum:
- weekly
- bi-weekly
- monthly
- bi-monthly
- quarterly
- semi-yearly
- yearly
- other
description: How often the recurring bill is paid.
next_payment_date:
type: string
format: date-time
title: next_payment_date
description: Next payment date for the bill (if known).
next_payment_amount_cents:
type: integer
title: next_payment_amount_cents
description: Next predicted payment amount in cents.
is_integrated_switch:
type: boolean
title: is_integrated_switch
description: Whether this is an integrated switch flow (true) or guided
flow (false).
is_integrated_cancellation:
type: boolean
title: is_integrated_cancellation
description: Whether this is an integrated cancellation flow (true) or guided
flow (false).
detection_method:
allOf:
- type: string
enum:
- manual
- external_plaid
- first_party
description: Whether this bill was detected from an external account (`external-plaid`),
uploaded transaction data (`first-party`), or created manually by the
user (`manual`).
reported_platform_name:
type: string
title: reported_platform_name
description: For platforms not tracked by Pinwheel, the reported name of
the merchant/platform associated with the recurring bill or subscription.
reserved_platform_id:
type: string
format: uuid
title: reserved_platform_id
description: For platforms not tracked by Pinwheel, the reserved platform
ID if we track it in the future.
card_name:
type: string
title: card_name
description: The name of the new card added in a card switch job.
action:
allOf:
- type: string
enum:
- full_switch
- partial_switch
description: Indicates whether the `direct_deposit_switch` was a full or
partial switch.
allocation:
allOf:
- $ref: '#/components/schemas/DirectDepositAllocationDetail'
title: allocation
description: The allocation that was created/updated during a `direct_deposit_switch`.
type: object
title: ParamsPayload_v2023_11_22
x-tags:
- Schemas
PayrollAccountDataRefreshed:
properties:
direct_deposit_allocations:
type: string
format: date-time
title: direct_deposit_allocations
description: ISO 8601 timestamp of the most recent check of direct deposit
allocations data.
income:
type: string
format: date-time
title: income
description: ISO 8601 timestamp of the most recent check of income data.
employment:
type: string
format: date-time
title: employment
description: ISO 8601 timestamp of the most recent check of employment data.
identity:
type: string
format: date-time
title: identity
description: ISO 8601 timestamp of the most recent check of identity data.
shifts:
type: string
format: date-time
title: shifts
description: ISO 8601 timestamp of the most recent check of shifts data.
paystubs:
type: string
format: date-time
title: paystubs
description: ISO 8601 timestamp of the most recent check of paystubs data.
type: object
title: PayrollAccountDataRefreshed
x-tags:
- Schemas
PayrollAccountDataUpdated:
properties:
direct_deposit_allocations:
type: string
format: date-time
title: direct_deposit_allocations
description: ISO 8601 timestamp of when direct deposit allocations data
most recently changed.
income:
type: string
format: date-time
title: income
description: ISO 8601 timestamp of when income data most recently changed.
employment:
type: string
format: date-time
title: employment
description: ISO 8601 timestamp of when employment data most recently changed.
identity:
type: string
format: date-time
title: identity
description: ISO 8601 timestamp of when identity data most recently changed.
shifts:
type: string
format: date-time
title: shifts
description: ISO 8601 timestamp of when shifts data most recently changed.
paystubs:
type: string
format: date-time
title: paystubs
description: ISO 8601 timestamp of when paystubs data most recently changed.
type: object
title: PayrollAccountDataUpdated
x-tags:
- Schemas
PayrollAccountObjResponse:
properties:
customer_id:
type: string
title: customer_id
description: 'Banking platforms webhooks only: the customer ID associated
with the platform''s customer.'
tags:
type: object
title: tags
description: The tags associated with the link token that triggered the
job.
reseller_customer_id:
type: string
title: reseller_customer_id
description: The reseller customer ID associated with the job. Used exclusively
for reseller customers.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
link_token_id:
type: string
format: uuid
title: link_token_id
description: UUID of the link token used to create the account.
platform_id:
type: string
format: uuid
title: platform_id
description: UUID of the platform associated with this account.
connected:
type: boolean
title: connected
description: If true, you can retrieve new data for the account using On
Demand Updates or automatically via Monitoring.
monitoring_status:
allOf:
- type: string
enum:
- active
- degraded
- user_action_required
- customer_disabled
- unavailable
description: Monitoring status describes the the automated ability of Pinwheel
to retrieve new account information.
end_user_id:
type: string
title: end_user_id
description: User ID provided by you, to associate Pinwheel users with your
user model. Required if `account_id` is not provided. This ID will be
returned in all webhook events and all account-affiliated API responses.
Leading and trailing whitespace will be stripped. Do not include PII in
this identifier.
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
data_updated_at:
allOf:
- $ref: '#/components/schemas/PayrollAccountDataUpdated'
title: data_updated_at
description: When data last changed for this payroll account.
data_refreshed_at:
allOf:
- $ref: '#/components/schemas/PayrollAccountDataRefreshed'
title: data_refreshed_at
description: ISO 8601 timestamp of when data was last refreshed for this
payroll account.
type: object
required:
- created_at
- platform_id
- connected
- monitoring_status
- id
- data_updated_at
- data_refreshed_at
title: Account
x-tags:
- Schemas
PayrollAccountPatchMonitoringStatus:
properties:
monitoring_status:
allOf:
- type: string
enum:
- user_action_required
description: Monitoring status describes the the automated ability of Pinwheel
to retrieve new account information.
type: object
title: object
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
PaystubWithEarningsResponseObj:
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.
earnings:
items:
$ref: '#/components/schemas/EarningObjPublicResponseItem'
type: array
title: earnings
description: The earnings for this pay period, in cents.
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
- earnings
title: PaystubWithEarningsResponseObj
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
PlatformObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: UUID of the platform.
name:
type: string
title: name
description: Name of platform, e.g., ADP Portal, Gusto, Paylocity.
type:
allOf:
- type: string
enum:
- payroll
- time_and_attendance
- tax
- merchant
description: The type of the platform. `payroll` platforms are used for
direct-deposit switching and for Verify use cases. `time_and_attendance`
platforms contain data around shifts and hours. `tax` platforms are used
for tax solutions. `merchant` type platforms are used for bill switching
and cancellation.
fractional_amount_supported:
type: boolean
title: fractional_amount_supported
description: Whether or not the platform accepts decimal values for `direct_deposit_switch`.
min_amount:
type: number
title: min_amount
description: Minimum amount, if any, platform accepts for `direct_deposit_switch`.
minimum: true
exclusiveMinimum: true
max_amount:
type: number
title: max_amount
description: Maximum amount, if any, platform accepts for `direct_deposit_switch`.
minimum: true
exclusiveMinimum: true
last_updated:
type: string
format: date-time
title: last_updated
description: ISO 8601 timestamp of the last update to this object.
logo_url:
type: string
maxLength: 65536
minLength: 1
format: uri
title: logo_url
description: The URL of the platform logo.
percentage_supported:
type: boolean
title: percentage_supported
description: Whether a direct deposit job supports percentage switching.
min_percentage:
type: integer
title: min_percentage
description: Minimum percentage allowed for `direct_deposit_switch`.
maximum: true
minimum: true
exclusiveMinimum: true
exclusiveMaximum: true
max_percentage:
type: integer
title: max_percentage
description: Maximum percentage allowed for `direct_deposit_switch`.
maximum: true
minimum: true
exclusiveMinimum: true
exclusiveMaximum: true
merchant_category:
allOf:
- type: string
enum:
- automotive
- buy_now_pay_later
- charity_and_donations
- education
- entertainment_and_recreation
- financial_services
- fitness
- food_and_delivery
- gaming
- health_and_wellness
- home_and_household_services
- insurance
- internet_and_telecom
- loan
- media
- music_and_audio_streaming
- news
- other
- productivity_and_saas_tools
- professional_services
- rent
- shopping_and_retail
- social_and_dating
- sports
- travel_and_transportation
- utilities
- video_streaming
description: The business category of the merchant, used to classify the
type of service provided.
supported_jobs:
items:
type: string
enum:
- direct_deposit_allocations
- bill_cancellation
- direct_deposit_switch
- paycheck_viewer
- paystubs
- bill_switch
- identity
- direct_deposit_payment
- income
- employment
- tax_forms
- shifts
type: array
description: Array of supported jobs.
amount_supported:
type: boolean
title: amount_supported
description: Whether a direct deposit job supports specific amount.
type: object
required:
- id
- name
- type
- fractional_amount_supported
- last_updated
- percentage_supported
- min_percentage
- max_percentage
- supported_jobs
- amount_supported
title: Platform
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
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
RevokeAPIKeyResponse:
properties:
data:
$ref: '#/components/schemas/RevokeAPIKeyResponseData'
type: object
required:
- data
x-tags:
- Schemas
RevokeAPIKeyResponseData:
properties:
mode:
allOf:
- type: string
enum:
- sandbox
- development
- production
description: The mode that the Admin API token is authorized for.
key:
type: string
title: key
description: The public token that refers to your API key, as distinct from
the API Secret.
expires_at:
type: string
format: date-time
title: expires_at
description: Timestamp used to set when this key automatically expires.
created_at:
type: string
format: date-time
title: created_at
description: ISO 8601 timestamp of created time.
revoked_at:
type: string
format: date-time
title: revoked_at
description: Timestamp of when this key was revoked.
type: object
required:
- mode
- key
- created_at
- revoked_at
title: object
x-tags:
- Schemas
SearchResultObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
name:
type: string
title: name
description: Name of result.
platform_type:
allOf:
- type: string
enum:
- payroll
- time_and_attendance
- tax
- merchant
description: The type of the platform. `payroll` platforms are used for
direct-deposit switching and for Verify use cases. `time_and_attendance`
platforms contain data around shifts and hours. `tax` platforms are used
for tax solutions. `merchant` type platforms are used for bill switching
and cancellation.
last_updated:
type: string
format: date-time
title: last_updated
description: ISO 8601 timestamp of the last update to this object.
logo_url:
type: string
maxLength: 65536
minLength: 1
format: uri
title: logo_url
description: The URL of the employer or platform logo.
supported_jobs:
items:
type: string
enum:
- direct_deposit_allocations
- bill_cancellation
- direct_deposit_switch
- paycheck_viewer
- paystubs
- bill_switch
- identity
- direct_deposit_payment
- income
- employment
- tax_forms
- shifts
type: array
description: Array of supported jobs.
fractional_amount_supported:
type: boolean
title: fractional_amount_supported
description: Whether or not the platform accepts decimal values for `direct_deposit_switch`.
amount_supported:
type: boolean
title: amount_supported
description: Whether a direct deposit job supports specific amount.
min_amount:
type: number
title: min_amount
description: Minimum amount, if any, platform accepts for `direct_deposit_switch`.
max_amount:
type: number
title: max_amount
description: Maximum amount, if any, platform accepts for `direct_deposit_switch`.
response_type:
allOf:
- type: string
enum:
- employer
- platform
description: Type of search result, either platform or employer.
min_percentage:
type: integer
title: min_percentage
description: Minimum percentage allowed for `direct_deposit_switch`.
maximum: true
minimum: true
exclusiveMinimum: true
exclusiveMaximum: true
max_percentage:
type: integer
title: max_percentage
description: Maximum percentage allowed for `direct_deposit_switch`.
maximum: true
minimum: true
exclusiveMinimum: true
exclusiveMaximum: true
percentage_supported:
type: boolean
title: percentage_supported
description: Whether a direct deposit job supports percentage switching.
type: object
required:
- id
- name
- last_updated
- supported_jobs
- fractional_amount_supported
- amount_supported
- min_amount
- max_amount
- response_type
- min_percentage
- max_percentage
- percentage_supported
title: SearchResult
x-tags:
- Schemas
SharedFraud:
properties:
status:
allOf:
- type: string
enum:
- suspected
- not_suspected
- unavailable
description: The suspected fraud status of the document.
type: object
required:
- status
title: SharedFraud
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
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
TargetAccount:
properties:
account_name:
type: string
title: account_name
description: The account name (if any) for this allocation.
account_type:
allOf:
- type: string
enum:
- checking
- savings
description: The account type for this allocation.
last_four_account_number:
type: string
title: last_four_account_number
description: The last four digits of the account number for this allocation.
type: object
title: TargetAccount
x-tags:
- Schemas
TaxFormObjResponseNoDocument_v2022_06_22:
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.
form_type:
allOf:
- type: string
enum:
- W-2
- W-2C
- 1099-NEC
- 1099-MISC
- 1099-K
- '1040'
description: The type of form.
year:
type: integer
title: year
description: The tax year of the form.
type: object
required:
- id
- created_at
- account_id
- form_type
- year
title: TaxForm
x-tags:
- Schemas
TaxFormObjResponse_v2022_06_22:
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.
form_type:
allOf:
- type: string
enum:
- W-2
- W-2C
- 1099-NEC
- 1099-MISC
- 1099-K
- '1040'
description: The type of form.
year:
type: integer
title: year
description: The tax year of the form.
document:
allOf:
- $ref: '#/components/schemas/DocumentObjPublicResponseItem'
title: document
description: The document for this tax form.
parsed_data:
allOf:
- $ref: '#/components/schemas/TaxFormW2'
title: parsed_data
description: The parsed data of the tax form document.
warnings:
items:
$ref: '#/components/schemas/FieldWarning'
type: array
title: warnings
description: Used to indicate if there are any warnings for fields returned
in this response.
type: object
required:
- id
- created_at
- account_id
- form_type
- year
title: TaxForm
x-tags:
- Schemas
TaxFormW2:
properties:
document_type:
type: string
enum:
- W-2
title: document_type
description: The type of the document.
default: W-2
box_a:
type: string
title: box_a
description: Employee's social security number. Box a IRS Form W-2.
box_b:
type: string
title: box_b
description: Employer identification number (EIN). Box b IRS Form W-2.
box_c:
allOf:
- $ref: '#/components/schemas/W2BoxC'
title: box_c
description: Employer's name and address. Box c IRS Form W-2.
box_d:
type: string
title: box_d
description: Control number. Box d IRS Form W-2.
box_e:
type: string
title: box_e
description: Employee's name. Box e IRS Form Form W-2.
box_f:
allOf:
- $ref: '#/components/schemas/AddressGetResponseItem'
title: box_f
description: Employee's address. Box f IRS Form W-2.
box_1:
type: integer
title: box_1
description: Wages, tips, other compensation. Box 1 IRS Form W-2.
box_2:
type: integer
title: box_2
description: Federal income tax withheld. Box 2 IRS Form W-2.
box_3:
type: integer
title: box_3
description: Social security wages. Box 3 IRS Form W-2.
box_4:
type: integer
title: box_4
description: Social security tax withheld. Box 4 IRS Form W-2.
box_5:
type: integer
title: box_5
description: Medicare wages and tips. Box 5 IRS Form W-2.
box_6:
type: integer
title: box_6
description: Medicare tax withheld. Box 6 IRS Form W-2.
box_7:
type: integer
title: box_7
description: Social security tips. Box 7 IRS Form W-2.
box_8:
type: integer
title: box_8
description: Allocated tips. Box 8 IRS Form W-2.
box_9:
type: string
title: box_9
description: This field is intentionally left blank.
box_10:
type: string
title: box_10
description: Dependent care benefits. Box 10 IRS Form W-2.
box_11:
type: string
title: box_11
description: Nonqualified plans. Box 11 IRS Form W-2.
box_12:
items:
$ref: '#/components/schemas/W2Box12'
type: array
title: box_12
description: Miscellaneous income or tax line items. Box 12 IRS Form W-2.
box_13:
allOf:
- $ref: '#/components/schemas/W2Box13'
title: box_13
description: Statutory employee, Retirement plan, or Third-party sick pay
options. Box 13 IRS Form W-2.
box_14:
items:
type: string
type: array
title: box_14
description: Other. Box 14 IRS Form W-2.
box_15_to_20:
items:
$ref: '#/components/schemas/W2Box15To20'
type: array
title: box_15_to_20
description: Box 15 to 20 IRS Form W-2. These boxes may contain multiple
sets of values if the either the state or the locality of the employee
and the employer differ, and are separately taxed.
type: object
title: TaxFormW2
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
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
UploadedBankStatement:
properties:
document_type:
type: string
enum:
- bank_statement
title: document_type
description: The type of the document.
default: bank_statement
bank_name:
type: string
title: bank_name
description: The name of the bank associated with this bank statement.
statement_begin_date:
type: string
title: statement_begin_date
description: The beginning date of the bank statement.
statement_end_date:
type: string
title: statement_end_date
description: The end date of the bank statement.
statement_holders:
items:
type: string
type: array
title: statement_holders
description: The holders of the bank statement.
applicant1:
allOf:
- $ref: '#/components/schemas/ApplicantNameAndAddress'
title: applicant1
description: The first applicant associated with this bank statement.
applicant2:
allOf:
- $ref: '#/components/schemas/ApplicantNameAndAddress'
title: applicant2
description: The second applicant associated with this bank statement.
accounts:
items:
$ref: '#/components/schemas/BankAccount'
type: array
title: accounts
description: The accounts associated with this bank statement.
type: object
title: UploadedBankStatement
x-tags:
- Schemas
UploadedDeduction:
properties:
type:
type: string
title: type
description: The category of deduction.
description:
type: string
title: description
description: The description of deduction.
amount:
type: integer
title: amount
description: The amount of deduction, in cents.
amount_ytd:
type: integer
title: amount_ytd
description: The amount ytd of deduction, in cents.
type: object
title: UploadedDeduction
x-tags:
- Schemas
UploadedEarning:
properties:
type:
type: string
title: type
description: The category of earning.
description:
type: string
title: description
description: The description of the earning.
amount:
type: integer
title: amount
description: The amount of earning, in cents.
amount_ytd:
type: integer
title: amount_ytd
description: The amount ytd of earning, in cents.
type: object
title: UploadedEarning
x-tags:
- Schemas
UploadedPaystub:
properties:
document_type:
type: string
enum:
- paystub
title: document_type
description: The type of the document.
default: paystub
pay_date:
type: string
title: pay_date
description: The date when the check amount is paid to the employee.
pay_period_start:
type: string
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
title: pay_period_end
description: The date when the pay period ends. Some platforms, like unemployment
portals, do not have fixed pay periods.
gross_pay_amount:
type: integer
title: gross_pay_amount
description: The total earnings before any deductions are made, 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_amount:
type: integer
title: net_pay_amount
description: The total earnings after all taxes and 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.
earnings:
items:
$ref: '#/components/schemas/UploadedEarning'
type: array
title: earnings
description: The earnings for this pay period, in cents.
taxes:
items:
$ref: '#/components/schemas/UploadedTax'
type: array
title: taxes
description: The taxes for this pay period, in cents.
deductions:
items:
$ref: '#/components/schemas/UploadedDeduction'
type: array
title: deductions
description: The deductions for this pay period, in cents.
employer:
allOf:
- $ref: '#/components/schemas/EmployerNameAndAddress'
title: employer
description: Employment details for the employee.
employee:
allOf:
- $ref: '#/components/schemas/EmployeeNameAndAddress'
title: employee
description: Personal details for the employee.
time_off:
items:
$ref: '#/components/schemas/UploadedTimeOff'
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.
type: object
title: UploadedPaystub
x-tags:
- Schemas
UploadedSSIAwardLetter:
properties:
document_type:
type: string
enum:
- ssi_award_letter
title: document_type
description: The type of the document.
default: ssi_award_letter
applicant:
allOf:
- $ref: '#/components/schemas/ApplicantNameAndAddress'
title: applicant
description: The applicant associated with award letter.
issue_date:
type: string
title: issue_date
description: The date the award letter was issued.
pay_date:
type: string
title: pay_date
description: The date the award letter was paid.
social_security_payment:
type: integer
title: social_security_payment
description: The social security payment.
social_security_deduction:
type: integer
title: social_security_deduction
description: The social security deduction.
social_security_net_payment:
type: integer
title: social_security_net_payment
description: The social security net payment.
supplemental_security_payment:
type: integer
title: supplemental_security_payment
description: The supplemental security payment.
type: object
title: UploadedSSIAwardLetter
x-tags:
- Schemas
UploadedTax:
properties:
type:
type: string
title: type
description: The category of tax.
description:
type: string
title: description
description: The description of tax.
amount:
type: integer
title: amount
description: The amount of tax, in cents.
amount_ytd:
type: integer
title: amount_ytd
description: The amount ytd of tax, in cents.
type: object
title: UploadedTax
x-tags:
- Schemas
UploadedTimeOff:
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
title: UploadedTimeOff
x-tags:
- Schemas
UploadedW2Informed:
properties:
document_type:
type: string
enum:
- w2
title: document_type
description: The type of the document.
default: w2
applicant:
allOf:
- $ref: '#/components/schemas/ApplicantNameAndAddress'
title: applicant
description: The applicant associated with the W2.
employer_name:
type: string
title: employer_name
description: The employer name associated with the W2.
total_wages:
anyOf:
- type: number
- type: string
title: total_wages
description: The total wages associated with the W2.
state_wages:
anyOf:
- type: number
- type: string
title: state_wages
description: The state wages associated with the W2.
social_security_wages:
anyOf:
- type: number
- type: string
title: social_security_wages
description: The social security wages associated with the W2.
medicare_wages:
anyOf:
- type: number
- type: string
title: medicare_wages
description: The medicare wages associated with the W2.
federal_taxes:
anyOf:
- type: number
- type: string
title: federal_taxes
description: The federal taxes associated with the W2.
state_taxes:
anyOf:
- type: number
- type: string
title: state_taxes
description: The state taxes associated with the W2.
social_security_taxes:
anyOf:
- type: number
- type: string
title: social_security_taxes
description: The social security taxes associated with the W2.
medicare_taxes:
anyOf:
- type: number
- type: string
title: medicare_taxes
description: The medicare taxes associated with the W2.
tax_year:
type: string
title: tax_year
description: The tax year associated with the W2.
type: object
title: UploadedW2Informed
x-tags:
- Schemas
VerificationReportsVOEObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
updated_at:
type: string
format: date-time
title: updated_at
description: ISO 8601 timestamp of the last update to this object.
refreshed_at:
type: string
format: date-time
title: refreshed_at
description: ISO 8601 timestamp of the most recent refresh of this data.
employee:
allOf:
- $ref: '#/components/schemas/EmployeeResponseObj'
title: employee
description: Personal details for the employee.
employments:
items:
$ref: '#/components/schemas/EmploymentResponseObj'
type: array
title: employments
description: Employment details for the employee.
document:
allOf:
- $ref: '#/components/schemas/DocumentObjPublicResponseItem'
title: document
description: A document.
report_type:
allOf:
- type: string
enum:
- voe
- voie
- base
description: The type of report created.
type: object
required:
- id
- updated_at
- refreshed_at
- employee
- employments
- report_type
title: Verification of Employment Report for an end user
x-tags:
- Schemas
VerificationReportsVOIEObjResponse:
properties:
id:
type: string
format: uuid
title: id
description: Unique identifier for the object.
updated_at:
type: string
format: date-time
title: updated_at
description: ISO 8601 timestamp of the last update to this object.
refreshed_at:
type: string
format: date-time
title: refreshed_at
description: ISO 8601 timestamp of the most recent refresh of this data.
employee:
allOf:
- $ref: '#/components/schemas/EmployeeResponseObj'
title: employee
description: Personal details for the employee.
employments:
items:
$ref: '#/components/schemas/IncomeAndEmploymentResponseObj'
type: array
title: employments
description: Income and Employment details for the employee.
document:
allOf:
- $ref: '#/components/schemas/DocumentObjPublicResponseItem'
title: document
description: A document.
report_type:
allOf:
- type: string
enum:
- voe
- voie
- base
description: The type of report created.
type: object
required:
- id
- updated_at
- refreshed_at
- employee
- employments
- report_type
title: Verification of Income and Employment Report for an end user
x-tags:
- Schemas
W2Box12:
properties:
code:
type: string
title: code
description: Code for miscellaneous income or tax line items. Box 12 IRS
Form W-2.
amount:
type: integer
title: amount
description: Amount for miscellaneous income or tax line items. Box 12 IRS
Form W-2.
type: object
title: W2Box12
x-tags:
- Schemas
W2Box13:
properties:
statutory_employee:
type: boolean
title: statutory_employee
description: Statutory employee option. Box 13 IRS Form W-2.
retirement_plan:
type: boolean
title: retirement_plan
description: Retirement plan option. Box 13 IRS Form W-2.
third_party_sick_pay:
type: boolean
title: third_party_sick_pay
description: Third-party sick pay option. Box 13 IRS Form W-2.
type: object
title: W2Box13
x-tags:
- Schemas
W2Box15To20:
properties:
box_15_state:
type: string
title: box_15_state
description: State. Box 15 IRS Form W-2.
box_15_employer_state_id:
type: string
title: box_15_employer_state_id
description: Employer's state ID number. Box 15 IRS Form W-2.
box_16:
type: integer
title: box_16
description: State wages, tips, etc. Box 16 IRS Form W-2.
box_17:
type: integer
title: box_17
description: State income tax. Box 17 IRS Form W-2.
box_18:
type: integer
title: box_18
description: Local wages, tips, etc. Box 18 IRS Form W-2.
box_19:
type: integer
title: box_19
description: Local income tax. Box 19 IRS Form W-2.
box_20:
type: string
title: box_20
description: Locality name. Box 20 IRS Form W-2.
type: object
title: W2Box15To20
x-tags:
- Schemas
W2BoxC:
properties:
name:
type: string
title: name
description: Employer's name. Box c IRS Form W-2.
address:
allOf:
- $ref: '#/components/schemas/AddressGetResponseItem'
title: address
description: Employer's address. Box c IRS Form W-2.
type: object
title: W2BoxC
x-tags:
- Schemas
WebhookCreate_v2023_04_18:
properties:
url:
type: string
title: url
description: The URL of the webhook endpoints. Must be 'https://'.
status:
allOf:
- type: string
enum:
- active
- paused
description: The status of the webhook.
enabled_events:
items:
type: string
enum:
- paystubs.thirty_days_synced
- paystubs.ninety_days_synced
- direct_deposit_switch.added
- verification_reports.refreshed
- paystubs.documents.added
- paystubs.added
- company_connect.employments.added
- shifts.added
- bill.added
- shifts.thirty_days_synced
- account.monitoring_status.updated
- paystubs.seven_days_synced
- earnings_stream.payouts.refreshed
- bill.updated
- company_connect.status.updated
- income.added
- shifts.seven_days_synced
- paystubs.fully_synced
- identity.added
- employment.added
- shifts.fully_synced
- company_connect.incomes.added
- account.additional_connections_recommended
- bill_switch.added
- account.added
- company_connect.census.added
- paycheck_viewer.added
- direct_deposit_allocations.added
- bill_switch.cancelled
- bill.reminder
- tax_forms.added
- documents.added
- bill.removed
- shifts.ninety_days_synced
type: array
minItems: 1
description: The list of events enabled for this webhook.
version:
allOf:
- type: string
enum:
- '2022-09-09'
- '2025-07-08'
- '2023-04-18'
- '2023-11-22'
- '2023-07-18'
description: The webhook's version, which determines the format of the webhook
event payloads.
customer_id:
type: string
title: customer_id
description: 'Banking platforms webhooks only: the customer ID associated
with the platform''s customer.'
type: object
required:
- url
- status
- enabled_events
- version
title: WebhookPostBody
x-tags:
- Schemas
WebhookObjResponse:
properties:
url:
type: string
title: url
description: The URL of the webhook endpoints.
status:
allOf:
- type: string
enum:
- active
- paused
description: The status of the webhook.
enabled_events:
items:
type: string
enum:
- paystubs.thirty_days_synced
- paystubs.ninety_days_synced
- direct_deposit_switch.added
- verification_reports.refreshed
- paystubs.documents.added
- paystubs.added
- company_connect.employments.added
- shifts.added
- bill.added
- shifts.thirty_days_synced
- account.monitoring_status.updated
- paystubs.seven_days_synced
- earnings_stream.payouts.refreshed
- bill.updated
- company_connect.status.updated
- income.added
- shifts.seven_days_synced
- paystubs.fully_synced
- identity.added
- employment.added
- shifts.fully_synced
- company_connect.incomes.added
- account.additional_connections_recommended
- bill_switch.added
- account.added
- company_connect.census.added
- paycheck_viewer.added
- direct_deposit_allocations.added
- bill_switch.cancelled
- bill.reminder
- tax_forms.added
- documents.added
- bill.removed
- shifts.ninety_days_synced
type: array
minItems: 1
description: The list of events enabled for this webhook.
version:
allOf:
- type: string
enum:
- '2022-09-09'
- '2025-07-08'
- '2023-04-18'
- '2023-11-22'
- '2023-07-18'
description: The webhook's version, which determines the format of the webhook
event payloads.
customer_id:
type: string
title: customer_id
description: 'Banking platforms webhooks only: the customer ID associated
with the platform''s customer.'
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.
last_updated:
type: string
format: date-time
title: last_updated
description: ISO 8601 timestamp of the last update to this object.
type: object
required:
- url
- status
- enabled_events
- version
- id
- created_at
- last_updated
title: Webhook
x-tags:
- Schemas
WebhookUpdate:
properties:
url:
type: string
title: url
description: The URL of the webhook endpoints. Must be 'https://'.
status:
allOf:
- type: string
enum:
- active
- paused
description: The status of the webhook.
enabled_events:
items:
type: string
enum:
- paystubs.thirty_days_synced
- paystubs.ninety_days_synced
- direct_deposit_switch.added
- verification_reports.refreshed
- paystubs.documents.added
- paystubs.added
- company_connect.employments.added
- shifts.added
- bill.added
- shifts.thirty_days_synced
- account.monitoring_status.updated
- paystubs.seven_days_synced
- earnings_stream.payouts.refreshed
- bill.updated
- company_connect.status.updated
- income.added
- shifts.seven_days_synced
- paystubs.fully_synced
- identity.added
- employment.added
- shifts.fully_synced
- company_connect.incomes.added
- account.additional_connections_recommended
- bill_switch.added
- account.added
- company_connect.census.added
- paycheck_viewer.added
- direct_deposit_allocations.added
- bill_switch.cancelled
- bill.reminder
- tax_forms.added
- documents.added
- bill.removed
- shifts.ninety_days_synced
type: array
minItems: 1
description: The list of events enabled for this webhook.
customer_id:
type: string
title: customer_id
description: 'Banking platforms webhooks only: the customer ID associated
with the platform''s customer.'
type: object
title: WebhookPatchBody
x-tags:
- Schemas
securitySchemes:
apiSecret:
type: apiKey
in: header
name: X-API-SECRET
description: API Secret
bearerAuth:
description: Bearer token
type: http
scheme: bearer
tags:
- name: API Keys
- name: Accounts
- name: Company Connect
- name: Direct Deposit Allocations
- name: Earnings Stream
- name: Employers and Platforms
- name: End Users
- name: Income and Employment
- name: Jobs
- name: Link Tokens
- name: Payout Cards
- name: Sandbox
- name: Schemas
- name: Tax Forms
- name: Verification Reports
- name: Webhooks
security:
- apiSecret: []