openapi: 3.0.3
info:
title: Pinwheel Accounts Employers and Platforms API
description: Pinwheel is the API for direct deposit switching, bill switching, and income & employment verification.
version: v2025-07-08
contact:
name: Support
email: support@getpinwheel.com
url: https://getpinwheel.com
servers:
- url: https://api.getpinwheel.com/v1
description: production
- url: https://sandbox.getpinwheel.com/v1
description: sandbox
- url: https://development.getpinwheel.com/v1
description: development
security:
- apiSecret: []
tags:
- name: Employers and Platforms
paths:
/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
/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
components:
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
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
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
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
ListMeta:
properties:
count:
type: integer
title: count
description: Number of objects returned.
type: object
title: ListMeta
x-tags:
- Schemas
securitySchemes:
apiSecret:
type: apiKey
in: header
name: X-API-SECRET
description: API Secret
bearerAuth:
description: Bearer token
type: http
scheme: bearer