---
title: "Initiate a Contractor Invoice payment"
method: POST
path: "/v1/sandbox/contractor-invoices/initiate-payment"
tags: ["Sandbox"]
---

# Initiate a Contractor Invoice payment

`POST /v1/sandbox/contractor-invoices/initiate-payment`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/sandbox/contractor-invoices/initiate-payment`
- Auth: one of:
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token`
  - HTTP bearer

Approves the selected `issued` Contractor Invoices and initiates a bank-transfer payment for
them on the company's behalf, as Remote would. The invoices become `pending_payment` and
carry a payment reference, so the `payment` summary and the pay-in details of a real payment
can be read back.

Preconditions:

  * Run `POST /v1/sandbox/companies/{company_id}/bypass-eligibility-checks` first, so the
    legal entity has passed KYB.
  * Every contractor on the selected invoices must hold a bank-account payout method, and
    every contractor in one request must use the same payout method.
  * The company's legal entity must be able to pay in the invoice currency — its default
    currency, or one it holds an active virtual account for.
  * When the contractors are paid on Remote's licensed rails, the user initiating the
    payment must have completed identity verification.

Calling it again for invoices that are already `pending_payment` returns the same payment,
creates nothing new and does not retry the pay-in. If `pay_in_method` stays `not_selected`
after initiation, Remote has not recorded the pay-in: initiate a fresh batch of invoices,
or contact Remote.

This endpoint is only available in Sandbox, otherwise it will respond with a 404. There is
no pay action on the production API: payments are initiated in 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).

## Request body

- InitiateContractorInvoicePaymentParams: The Contractor Invoices to pay in one payment.
  - `contractor_invoice_ids` UuidSlug[], required: Identifiers of the Contractor Invoices to pay. They must all belong to the same payer legal entity and share one currency, and each one may appear only once.

## Response `200`

Success

- SuccessResponse: A generic success response returned by operations that don't produce a specific resource (e.g., updates, deletes).
  - `data` object, required
    - `status` string: The result status. Always `"ok"` for successful operations.

## 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/testing-sandbox.md) - [All operations](https://skmtc.dev/remote-com/apis/testing-sandbox/llms.txt) - [OpenAPI document](https://skmtc.dev/remote-com/apis/testing-sandbox/revisions/94f6859e2604?raw)
