Puzzle Payroll API
The Payroll API from Puzzle — 6 operation(s) for payroll.
The Payroll API from Puzzle — 6 operation(s) for payroll.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/puzzle-payroll-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Puzzle Payroll API
description: Puzzle Api
version: '0'
servers:
- url: https://staging.southparkdata.com/rest/v0
tags:
- name: Payroll
paths:
/company/{id}/workers:
get:
operationId: workersList
summary: Get Workers
description: 'Retrieves a list of all of the company''s workers, both employees and contractors.
Required scope: read:worker'
tags:
- Payroll
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
- name: subset
in: query
required: false
schema:
type: string
enum:
- Active
- Terminated
- Contractor
- name: search
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
workers:
type: array
items:
anyOf:
- type: object
properties:
annualCosts:
type:
- object
- 'null'
properties:
salaryCost:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
burdenCost:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
fullyLoadedCost:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
required:
- salaryCost
- burdenCost
- fullyLoadedCost
id:
type: string
minLength: 1
description: Partner-facing external identifier
firstName:
type:
- string
- 'null'
lastName:
type:
- string
- 'null'
employmentType:
type: string
enum:
- FullTime
- PartTime
- Contractor
jobTitle:
type: string
department:
type:
- string
- 'null'
startDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
employeeTerminations:
type: array
items:
type: object
properties:
terminationDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
required:
- terminationDate
flsaStatus:
type:
- string
- 'null'
enum:
- Exempt
- SalariedNonexempt
- Nonexempt
- Owner
officeLocation:
type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
city:
type: string
state:
type: string
zipCode:
type: string
required:
- id
- city
- state
- zipCode
payFrequency:
type: string
enum:
- Hour
- Day
- Week
- Month
- Year
- Paycheck
payRate:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
terminated:
type: boolean
required:
- annualCosts
- id
- firstName
- lastName
- employmentType
- jobTitle
- department
- startDate
- employeeTerminations
- flsaStatus
- officeLocation
- payFrequency
- payRate
- terminated
- type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
firstName:
type:
- string
- 'null'
lastName:
type:
- string
- 'null'
businessName:
type:
- string
- 'null'
startDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
department:
type:
- string
- 'null'
hourlyRate:
type:
- string
- 'null'
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
isActive:
type: boolean
type:
type:
- string
- 'null'
enum:
- Individual
- Business
wageType:
type: string
enum:
- Fixed
- Hourly
- Daily
- Weekly
- Monthly
- Biweekly
- Semimonthly
- Annually
- Custom
payRate:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
required:
- id
- firstName
- lastName
- businessName
- startDate
- department
- hourlyRate
- isActive
- type
- wageType
- payRate
required:
- workers
/company/{id}/contractors:
post:
operationId: createContractor
summary: Create Contractor
description: 'Create a contractor for the given company.
Requires scope: write:worker'
tags:
- Payroll
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
firstName:
type: string
lastName:
type: string
businessName:
type:
- string
- 'null'
startDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
type:
type: string
enum:
- Individual
- Business
payRate:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
wageType:
type: string
enum:
- Fixed
- Hourly
- Daily
- Weekly
- Monthly
- Biweekly
- Semimonthly
- Annually
- Custom
isActive:
type: boolean
departmentId:
type: string
minLength: 1
description: Partner-facing external identifier
nativeId:
type: string
required:
- firstName
- lastName
- startDate
- type
- payRate
- wageType
- isActive
- nativeId
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
firstName:
type:
- string
- 'null'
lastName:
type:
- string
- 'null'
businessName:
type:
- string
- 'null'
startDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
department:
type:
- string
- 'null'
hourlyRate:
type:
- string
- 'null'
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
isActive:
type: boolean
type:
type:
- string
- 'null'
enum:
- Individual
- Business
wageType:
type: string
enum:
- Fixed
- Hourly
- Daily
- Weekly
- Monthly
- Biweekly
- Semimonthly
- Annually
- Custom
payRate:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
required:
- id
- firstName
- lastName
- businessName
- startDate
- department
- hourlyRate
- isActive
- type
- wageType
- payRate
/company/{id}/employees:
post:
operationId: createEmployee
summary: Create Employee
description: 'Create an employee for the given company.
Required scope: write:worker'
tags:
- Payroll
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
firstName:
type: string
lastName:
type: string
employmentType:
type: string
enum:
- FullTime
- PartTime
- Contractor
jobTitle:
type: string
startDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
officeLocationId:
type: string
minLength: 1
description: Partner-facing external identifier
payRate:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
payFrequency:
type: string
enum:
- Hour
- Day
- Week
- Month
- Year
- Paycheck
nativeId:
type: string
terminationDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
flsaStatus:
type: string
enum:
- Exempt
- SalariedNonexempt
- Nonexempt
- Owner
departmentId:
type: string
minLength: 1
description: Partner-facing external identifier
required:
- firstName
- lastName
- employmentType
- jobTitle
- startDate
- officeLocationId
- payRate
- payFrequency
- nativeId
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
annualCosts:
type:
- object
- 'null'
properties:
salaryCost:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
burdenCost:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
fullyLoadedCost:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
required:
- salaryCost
- burdenCost
- fullyLoadedCost
id:
type: string
minLength: 1
description: Partner-facing external identifier
firstName:
type:
- string
- 'null'
lastName:
type:
- string
- 'null'
employmentType:
type: string
enum:
- FullTime
- PartTime
- Contractor
jobTitle:
type: string
department:
type:
- string
- 'null'
startDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
employeeTerminations:
type: array
items:
type: object
properties:
terminationDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
required:
- terminationDate
flsaStatus:
type:
- string
- 'null'
enum:
- Exempt
- SalariedNonexempt
- Nonexempt
- Owner
officeLocation:
type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
city:
type: string
state:
type: string
zipCode:
type: string
required:
- id
- city
- state
- zipCode
payFrequency:
type: string
enum:
- Hour
- Day
- Week
- Month
- Year
- Paycheck
payRate:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
terminated:
type: boolean
required:
- annualCosts
- id
- firstName
- lastName
- employmentType
- jobTitle
- department
- startDate
- employeeTerminations
- flsaStatus
- officeLocation
- payFrequency
- payRate
- terminated
/company/{id}/benefits:
get:
operationId: benefits
summary: Get Benefits
description: 'Retrieves a list of all benefits for the given company. These benefits represent company-level benefits that can have both an employee contribution and a company contribution.
Payrolls will reference these benefits and provide details on the employee and company contribution amounts.
Requires scope: read:company'
tags:
- Payroll
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
benefits:
type: array
items:
type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
nativeId:
type:
- string
- 'null'
name:
type: string
description:
type: string
type:
type: string
enum:
- medical
- dental
- vision
- retirement
- commuter
- disability
- life_insurance
- other_non_taxable
- other_taxable
- unknown_benefit
- student_loan
isPreTax:
type: boolean
dataSource:
type: string
required:
- id
- nativeId
- name
- description
- type
- isPreTax
- dataSource
required:
- benefits
post:
operationId: createBenefit
summary: Create Benefit
description: 'Create a benefit for the given company.
Requires scope: write:benefit'
tags:
- Payroll
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
nativeId:
type: string
name:
type: string
description:
type: string
type:
type: string
enum:
- medical
- dental
- vision
- retirement
- commuter
- disability
- life_insurance
- other_non_taxable
- other_taxable
- unknown_benefit
- student_loan
description: The value is normalized before matching, so any casing that maps onto a listed value is accepted.
isPreTax:
type: boolean
required:
- nativeId
- name
- description
- type
- isPreTax
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
nativeId:
type:
- string
- 'null'
name:
type: string
description:
type: string
type:
type: string
enum:
- medical
- dental
- vision
- retirement
- commuter
- disability
- life_insurance
- other_non_taxable
- other_taxable
- unknown_benefit
- student_loan
isPreTax:
type: boolean
dataSource:
type: string
required:
- id
- nativeId
- name
- description
- type
- isPreTax
- dataSource
/company/{id}/payrolls:
post:
operationId: createDetailedPayroll
summary: Create Payroll
description: 'Create a single payroll.
Payrolls can only be added to accounts with the Payroll type.
All the amounts on the top-level payroll object are the totals for all the associated compensations
Payrolls must have at least one employeeCompensation OR contractorCompensation
The transactionAmounts field should contain a list of all the amounts for all the non-reimbursement transactions that were used to fund this payroll.
If no transactionAmounts are provided, the companyDebit amount will be used instead
Puzzle uses this information to link this payroll with all the transactions that funded it to ensure everything gets represented in the general ledger correctly.
Puzzle currently only supports USD currencies
Required scope: write:payroll'
tags:
- Payroll
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
accountId:
type: string
minLength: 1
description: Partner-facing external identifier
nativeId:
type: string
withdrawalDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
checkDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
companyDebit:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
transactionAmounts:
type: array
items:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type
# --- truncated at 32 KB (89 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/puzzle/refs/heads/main/openapi/puzzle-payroll-api-openapi.yml