---
title: "List Company Payroll Runs"
method: GET
path: "/v1/payroll-runs"
tags: ["Payroll Runs"]
---

# List Company Payroll Runs

`GET /v1/payroll-runs`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/payroll-runs`
- 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: `payroll_run: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: `payroll_run: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

Lists all payroll runs for a company

## 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 payroll runs (`payroll`) | View payroll runs (`payroll_run:read`) | - |
| Company-scoped access token (assertion) | Manage payroll runs (`payroll`) | View payroll runs (`payroll_run:read`) | - |
| Customer API token | Manage payroll runs (`payroll`) | View payroll runs (`payroll_run:read`) | - |

## Query parameters

- `payroll_period` string, date: UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
- `page` integer
- `page_size` integer

## Response `200`

Success

- ListPayrollRunResponse: Response containing a list of payroll runs for the company. Each payroll run includes summary information but not per-employee breakdowns.
  - `payroll_runs` MinimalPayrollRun[]: List of payroll runs matching the query filters.
    - `approval_date` string, date, nullable, required: Optional UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
    - `country` Country, required: A supported country on Remote
      - `alpha_2_code` string, required: The ISO 3166-1 alpha-2 country code (e.g., "PT").
      - `code` string, required: The ISO 3166-1 alpha-3 country code (e.g., "PRT"). This is the primary code used across the Remote API.
      - `contractor_products_available` string[]: Contractor product names available for this country
      - `country_subdivisions` CountrySubdivision[], nullable: Administrative subdivisions of the country (e.g., states, provinces, districts). Null if the country has no subdivisions relevant to Remote's services.
        - `code` string: The ISO 3166-2 subdivision code (e.g., "PT-11" for Lisboa).
        - `name` string, required: The subdivision's name (e.g., "Lisboa", "California").
        - `subdivision_type` string: The type of subdivision (e.g., "District", "State", "Province").
      - `employment_agreement_preview_available` boolean: Whether an Employment Agreement preview is available for this country.
      - `eor_onboarding` boolean: Whether EOR (Employer of Record) onboarding is available in this country.
      - `global_payroll_supported` boolean: Whether Global Payroll employments can be onboarded in this country. When true, the "global_payroll_administrative_details", "global_payroll_contract_details" and "global_payroll_personal_details" forms are available from the Show form schema endpoint.
      - `locked_benefits` string: When benefit plan selections become locked for this country (e.g., "after_first_hire" means benefits cannot be changed after the first employee is hired).
      - `name` string, required: The country's full English name.
      - `region` string: The geographic region the country belongs to (e.g., "Europe", "Asia", "Americas").
      - `subregion` string, nullable: The geographic subregion (e.g., "Southern Europe", "Southeast Asia"). Null for some countries.
      - `supported_json_schemas` string[]: The list of JSON schema form names available for this country (e.g., "address_details", "contract_details", "global_payroll_contract_details"). Use these with the Show form schema endpoint to get country-specific field requirements.
    - `currency_code` string, required: Currency code in [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format.
    - `cutoff_date` string, date, nullable: Optional UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
    - `expected_payout_date` string, date, required: UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
    - `id` string, uuid, required: The unique identifier of the payroll run.
    - `period_end` string, date, required: UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
    - `period_start` string, date, required: UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
    - `status` 'preparing' | 'processing' | 'completed' | 'finalized' | 'waiting_for_customer_approval' | 'rejected', required: The current status of the payroll run. - `preparing`: The payroll run is being assembled. Costs are estimates. - `processing`: Submitted for processing. Costs are still estimates. - `completed`: Processing is complete. Costs are final. - `finalized`: Payments have been or will be disbursed. - `waiting_for_customer_approval`: Requires company approval before proceeding. - `rejected`: Rejected during approval and needs revision.
    - `total_payroll_cost` integer, required: The total cost of this payroll run across all employees. Amount in cents.
    - `type` 'main' | 'one_off' | 'pro_forma' | 'tax_documents' | 'year_end_reports' | 'employer_year_end_reports' | 'expenses' | 'parallel', required: The type of payroll run. - `main`: Regular recurring payroll. - `one_off`: Ad-hoc off-cycle payment. - `pro_forma`: Simulated run for cost estimation. - `tax_documents`: Tax document generation only. - `year_end_reports`: Year-end run holding employees' year-end tax documents. - `employer_year_end_reports`: Year-end run holding company-level reports for the employer to review and approve. Global Payroll only. - `expenses`: Dedicated expense reimbursement run. - `parallel`: Supplementary run alongside the main payroll.

## Other responses

- `401`: Unauthorized
- `404`: Not Found
- `422`: Unprocessable Entity

---

[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)
