---
title: "Show Contractor Invoice pay-in details"
method: GET
path: "/v1/contractor-invoices/{id}/pay-in-details"
tags: ["Invoices"]
---

# Show Contractor Invoice pay-in details

`GET /v1/contractor-invoices/{id}/pay-in-details`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/contractor-invoices/{id}/pay-in-details`
- 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: `pay_in_details: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: `pay_in_details: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

Shows how the payment that collects a Contractor Invoice is paid in, and where to send it.

`bank_accounts` carries Remote's receiving accounts while `status` is `awaiting_payment`.
It is null once the funds are in flight or received, while the payment sits on a compliance
hold (`blocked`) or is partly paid (`partially_paid`, where `amount_due` overstates what
remains and Remote follows up with the balance directly), and whenever Remote has no
account to publish.

`pay_in_method` says whether a transfer is yours to send at all: Remote collects
`direct_debit`, `card` and `prefunding_credit` payments itself, and a transfer would pay the
same invoices twice. That holds after a failed or disputed collection too: the payment reads
`awaiting_payment` with its method unchanged until the company retries it in Remote, so a
failed debit is not an invitation to wire, even when accounts are present. Accounts can
differ from one payment to the next, so read them before every transfer rather than storing
them.

The endpoint answers 404 only while no payment stands behind the invoice. A passing
database fault surfaces as a 504 or a 500; retry either.

## 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 | View pay-in bank details (`pay_in_details`) | View pay-in details (`pay_in_details:read`) | - |
| Company-scoped access token (assertion) | View pay-in bank details (`pay_in_details`) | View pay-in details (`pay_in_details:read`) | - |
| Customer API token | View pay-in bank details (`pay_in_details`) | View pay-in details (`pay_in_details:read`) | - |

## Path parameters

- `id` string, uuid, required: A unique identifier in UUID v4 format.

## Response `200`

Pay-in details

- ContractorInvoicePayInDetailsResponse: Response schema to show the pay-in details of a Contractor Invoice
  - `data` object, required
    - `pay_in_details` ContractorInvoicePayInDetails, required: What the company needs to pay this invoice: the payment it belongs to, how that payment is collected, and Remote's receiving accounts for it. `bank_accounts` is null once the funds are in flight or received, while the payment is on a compliance hold (`status: blocked`) or partly paid (`status: partially_paid`), and whenever Remote can publish no account. `pay_in_method` says whether a transfer is yours to send.
      - `amount_due` integer, required: Total amount of the payment in cents, shared by every invoice in it. This is the amount the payment was raised for, not a running balance: when `status` is `partially_paid` Remote has already received part of it and the outstanding balance is lower. Remote contacts the company directly with that balance; it is not published here.
      - `bank_accounts` PayInBankAccount[], nullable, required: Remote's receiving accounts for this payment, present while `status` is `awaiting_payment` and the rail can publish them. Null for every other status, including `partially_paid`: `amount_due` there overstates what remains, so wiring against it would pay twice, and Remote follows up with the balance directly. Whether you should wire is a separate question that `pay_in_method` answers: Remote collects direct debit, card and prefunded payments itself.
        - `account_holder` string, nullable, required
        - `account_number` string, nullable, required
        - `ach_routing_number` string, nullable, required
        - `address` PayInBankAccountAddress, nullable, required: The address the rail publishes with the account, or `null` when it publishes none. `name` is who the rail named on the address, usually its owner, but some accounts pair Remote's entity name with the bank's street, so do not derive whose premises these are from `name` alone. A null `name` means the rail did not say whose address it is.
          - `city` string, nullable, required
          - `country` string, nullable, required
          - `name` string, nullable, required: The name the rail attached to the address, usually its owner (the bank, or the account holder), though not guaranteed to match the street beside it. Null when the rail publishes an address without naming anyone.
          - `postal_code` string, nullable, required
          - `state` string, nullable, required
          - `street` string, nullable, required
        - `bank_code` string, nullable, required
        - `bank_name` string, nullable, required
        - `branch_code` string, nullable, required
        - `branch_name` string, nullable, required
        - `bsb_code` string, nullable, required
        - `charge` 'OUR' | 'BEN' | 'SHA', required: Details of charge to select when sending the wire, so the full amount reaches Remote.
        - `clearing_code` string, nullable, required
        - `cnaps_code` string, nullable, required
        - `iban` string, nullable, required
        - `ifsc` string, nullable, required
        - `institution_number` string, nullable, required
        - `intermediary_bank_code` string, nullable, required
        - `sort_code` string, nullable, required
        - `swift` string, nullable, required
        - `transit_number` string, nullable, required
        - `wire_routing_number` string, nullable, required
      - `currency` string, required: Currency code in [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format.
      - `due_date` string, date, nullable, required: Optional UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
      - `pay_in_method` 'bank_transfer' | 'direct_debit' | 'card' | 'prefunding_credit' | 'other' | 'not_selected', required: How Remote collects this payment: `bank_transfer` when the company wires it, `direct_debit` for a mandate-based collection, `card`, `prefunding_credit` when prefunded balance covers it, and `other` for anything else. Wire when this reads `bank_transfer`; Remote collects `direct_debit`, `card` and `prefunding_credit` itself and a transfer would pay twice. `not_selected` means Remote has not recorded a collection method: for Contractor of Record that lasts until the company starts the payment, so confirm the arrangement before wiring.
      - `reference` string, required: The reference to quote when paying: the transaction receipt number, or the Remote invoice number for Contractor of Record. Put it in the transfer memo, with the company name; Remote matches an incoming transfer on it.
      - `status` 'awaiting_payment' | 'partially_paid' | 'blocked' | 'processing' | 'paid', required: Where the payment stands: `awaiting_payment` means Remote has not received the funds and the payment is still expected, `processing` that a collection is in flight, and `paid` that Remote has received the funds. `partially_paid` means Remote received some of the amount but not all of it, because the company underpaid or part of a collection failed after the rest settled; `amount_due` still shows the original total rather than what remains, and Remote follows up with the company on the outstanding balance directly. `blocked` means the payment is on a compliance hold: the reference stays valid, and the payment returns to `awaiting_payment` once Remote lifts it.

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