---
title: "Download a payslip file"
method: GET
path: "/v1/payslips/{payslip_id}/download"
tags: ["Payslips"]
---

# Download a payslip file

`GET /v1/payslips/{payslip_id}/download`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/payslips/{payslip_id}/download`
- Auth: one of:
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `https://gateway.remote.com/company.manage`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `payslip:read`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `all:read`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `all:write`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `payslip:read`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `all:read`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `all:write`
  - HTTP bearer

Given a Payslip ID, downloads the payslip file as raw bytes. Payslips are usually PDFs; the
`Content-Type` header gives the file's type.
The user the token acts for must have one role that can view payroll, open files and open payslip files,
even when your integration doesn't enforce role permissions; otherwise the request answers 403. A payslip of an
employee outside the data scope of every role that holds those permissions answers 404.
It is important to note that each country has a different payslip format and they are not authored by Remote.

## Authentication

This endpoint accepts any one of the following token types:

- **Company-scoped access token** (`OAuth2AuthorizationCode`) — obtained by a company manager through the Authorization Code flow or the Refresh Token flow. See [Authentication for partners](https://developer.remote.com/docs/authentication-for-partners).
- **Company-scoped access token (assertion)** (`OAuth2CompanyManagerAssertion`) — obtained through the `urn:ietf:params:oauth:grant-type:jwt-bearer` grant for a company manager. See [OAuth Assertion](https://developer.remote.com/docs/authorization-method-oauth-assertion).
- **Customer API token** (`CustomerAPIToken`) — generated by the customer on their Integration Settings page, with the scopes they choose there. See [Authorization for customers](https://developer.remote.com/docs/authorization-for-customers).

## Scopes

Any one of the scopes in a token type's row is enough. `all:read` and `all:write` work too.

| Token type | Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|---|
| Company-scoped access token | Manage employment documents (`employment_documents`) | View payslips (`payslip:read`) | - |
| Company-scoped access token (assertion) | Manage employment documents (`employment_documents`) | View payslips (`payslip:read`) | - |
| Customer API token | Manage employment documents (`employment_documents`) | View payslips (`payslip:read`) | - |

## Path parameters

- `payslip_id` string, required

## Headers

- `Authorization` string, required

## Response `200`

Success

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `429`: Too many requests

---

[API](https://skmtc.dev/remote-com/apis/pay-compensation.md) - [All operations](https://skmtc.dev/remote-com/apis/pay-compensation/llms.txt) - [OpenAPI document](https://skmtc.dev/remote-com/apis/pay-compensation/revisions/ec29f1865c5e?raw)
