Generating Paystubs

Generating paystubs for your employees

Paystubs are the most frequently accessed payroll resources. They are used by employees to understand their pay and often serve as proof of income. They are also subject to a patchwork of state-by-state compliance regulations.

Check provides a paystubs endpoint for each employee that makes compliance and rendering easy. /employees/<employee_id>/paystubs returns the employee's paystubs in reverse chronological order, in the standard paginated response type.

We also provide an endpoint for a single employee's paystub: /employees/<employee_id>/paystubs/<payroll_id> returns a singular paystub for the employee, and it can be returned as JSON or rendered directly to PDF by using an Accept: application/pdf request header.

Paystub PDF

To return a Check-designed paystub as a PDF, make a GET call to the /paystubs endpoint with the HTTP header Accept: application/pdf. Check will return a fully rendered paystub for the employee:

GET /employees/<employee_id>/paystubs/<payroll_id>

Note: State regulations generally require that all of the information in the paystub JSON response is rendered and the paystub is printable. Directly rendering a singular paystub to PDF will satisfy this requirement.

Here is an example of a paystub that would be returned from this endpoint. Note that the Check logo can be easily replaced with a partner’s logo.

Paystub JSON

Use the Paystub JSON API to retrieve all paystub data, and provide a completely customized paystub for your companies and employees.

Add the HTTP header Accept: application/json to the GET /paystubs call to return all data used to render a paystub in JSON format.

GET /employees/<employee_id>/paystubs/<payroll_id>

Example:

curl https://sandbox.checkhq.com/employees/emp_MRQDxt1J4mrz4HZ4XwMx/paystubs/pay_bpp9oycVBI6GHT008a8G
  -H 'Content-Type: application/pdf'

Example return:

{
   "payroll": "pay_904CPnfvRvNLo9Itg44Q",
   "payday": "2021-05-21",
   "period_start": "2021-04-24",
   "period_end": "2021-05-07",
   "company": {
       "trade_name": "Stark Industries",
       "legal_name": "Stark Industries, Inc.",
       "address": {
           "line1": "200 Park Ave",
           "line2": null,
           "city": "New York",
           "state": "NY",
           "postal_code": "10166",
           "country": "US"
       },
       "phone": "5558675309"
   },
   "void_of": null,
   "voided_by": null,
   "employee": {
       "first_name": "Tony",
       "middle_name": null,
       "last_name": "Stark",
       "residence": {
           "line1": "630 Bedford Road",
           "line2": null,
           "city": "Tarrytown",
           "state": "NY",
           "postal_code": "10591",
           "country": "US"
       },
       "ssn_last_four": null
   },
   "earnings": [
       {
           "type": "regular",
           "code": null,
           "earning_code": null,
           "amount": "5384.61",
           "amount_ytd": "5384.61",
           "hours": "40.00",
           "hours_ytd": "40.00",
           "name": "Regular",
           "current_earnings": [
               {
                   "description": "Regular",
                   "amount": "5384.61",
                   "hours": "40.00",
                   "workplace": "wrk_aj8gIXWZ6HelAcx18Ppw",
                   "rate": "134.615"
               }
           ]
       }
   ],
   "reimbursements": [
       {
           "code": null,
           "amount": "123.43",
           "amount_ytd": "123.43",
           "current_reimbursements": [
               {
                   "description": "Office supplies",
                   "amount": "123.43"
               }
           ]
       }
   ],
   "employee_taxes": [
       {
           "amount": "333.85",
           "amount_ytd": "333.85",
           "description": "FICA"
       },
       {
           "amount": "920.65",
           "amount_ytd": "920.65",
           "description": "Federal Income Tax"
       },
       {
           "amount": "78.08",
           "amount_ytd": "78.08",
           "description": "Medicare"
       },
       {
           "amount": "27.52",
           "amount_ytd": "27.52",
           "description": "New York Family Leave Benefits"
       },
       {
           "amount": "1.20",
           "amount_ytd": "1.20",
           "description": "New York SDI"
       },
       {
           "amount": "313.36",
           "amount_ytd": "313.36",
           "description": "New York State Tax"
       }
   ],
   "company_taxes": [
       {
           "amount": "333.85",
           "amount_ytd": "333.85",
           "description": "Employer FICA Tax"
       },
       {
           "amount": "32.31",
           "amount_ytd": "32.31",
           "description": "Federal Unemployment Tax"
       },
       {
           "amount": "78.08",
           "amount_ytd": "78.08",
           "description": "Employer Medicare Tax"
       },
       {
           "amount": "168.27",
           "amount_ytd": "168.27",
           "description": "New York State Unemployment Tax"
       },
       {
           "amount": "4.04",
           "amount_ytd": "4.04",
           "description": "New York Reemployment Fund"
       }
   ],
   "employee_benefit_contributions": [
       {
           "benefit": "401k",
           "description": "401k Benefit",
           "amount": "107.69",
           "amount_ytd": "107.69"
       }
   ],
   "company_benefit_contributions": [
       {
           "benefit": "401k",
           "description": "401k Benefit",
           "amount": "50.00",
           "amount_ytd": "50.00"
       }
   ],
   "post_tax_deductions": [
       {
           "type": "miscellaneous",
           "description": "Coffee Money",
           "calculation_method": "amount",
           "amount": "50.00",
           "amount_ytd": "50.00"
       }
   ],
   "summary": {
       "earnings": "5384.61",
       "earnings_ytd": "5384.61",
       "reimbursements": "123.43",
       "reimbursements_ytd": "123.43",
       "employee_taxes": "1674.66",
       "employee_taxes_ytd": "1674.66",
       "company_taxes": "616.55",
       "company_taxes_ytd": "616.55",
       "employee_benefit_contributions": "107.69",
       "employee_benefit_contributions_ytd": "107.69",
       "company_benefit_contributions": "50.00",
       "company_benefit_contributions_ytd": "50.00",
       "post_tax_deductions": "50.00",
       "post_tax_deductions_ytd": "50.00",
       "net_pay": "3675.69",
       "net_pay_ytd": "3675.69"
   },
   "total_hours": "40.00",
   "time_off_balances": {
       "pto_balance_hours": null,
       "sick_balance_hours": null,
       "state_covid_sick_balance_hours": null
   }
}

You may also fetch all paystub data for a specific employee in JSON format. Paystub data will be returned in reverse chronological order. Note: PDF format is not supported for this call.

GET /employees/<employee_id>/paystubs

Did this page help you?