# Welcome
Welcome to Pinwheel, the API for Payroll. Pinwheel makes it easy for your customers to grant you access to their payroll account via your application, unlocking a wealth of data and functionality. Once a user grants access, your application can update direct deposit allocations and access income and employment data from their payroll account. To request access to the Pinwheel API, please contact [[email protected]](🔗).
# Implementation Overview
<br/>
The Pinwheel API is easy to integrate and highly customizable. Implementing Pinwheel involves a simple client and server side integration, which are outlined in five key steps:
**Link token**: Your application server sends a request to our REST API to generate a short-lived [Link Token](🔗).
**Pinwheel Link**: Using the Link Token, your application client initializes the client SDK to launch the [Link](🔗) modal. Your users interact with Link to submit their login credentials to authenticate with their payroll provider over a secure and encrypted connection.
**Account Creation**: Once the user successfully authenticates via Pinwheel Link an [Account](🔗) is created representing the user's payroll account.
**Jobs**: Our servers execute the requested jobs. We read and store data from the user's payroll account, and if requested, modify their direct deposit allocations.
**Webhooks**: [Webhooks](🔗) are delivered to your server in real time, notifying your application whenever data is available or updated. Your server can then fetch data from our REST API.
# Jobs
After a user authorizes access to their payroll account, several jobs can be executed. [Direct Deposit](🔗) jobs update direct deposit allocations in the payroll account. [Income and Employment](🔗) jobs provide access to payroll account data. You can specify the jobs to execute with the `required_jobs
` parameter when creating a [Link Token](🔗).
Job | Type | Description |
`direct_deposit_switch ` | [Direct Deposit](🔗) | Switches the payroll account direct deposit, in partial or full, to the specified bank account. This job can also be used to enable paycheck-linked lending when a specific amount is required. |
`direct_deposit_allocations ` | [Direct Deposit](🔗) | Provides data about existing allocations of a user's payroll account. |
`paystubs ` | [Income and Employment](🔗) | Provides access to the user's paystubs as structured data. |
`employment ` | [Income and Employment](🔗) | Provides data about the user's employment, such as the name of their employer and their start date. |
`identity ` | [Income and Employment](🔗) | Provides data about the identity of the payroll account owner, such as name and date of birth. |
`income ` | [Income and Employment](🔗) | Provides income data such as annual salary or hourly wage. |
`shifts ` | [Income and Employment](🔗) | Provides access to ongoing and completed work performed by the user. |