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: []