# List intercompany bills

Operation ID: `intercompanyBills`

Group: Accounting › Intercompany Bills

[Open in the interactive reference](https://docs.api.lensing.ai/lensing/v1/endpoints/intercompanyBills)

`GET /accounting/intercompany-bills`

Read-only: Reads and returns; changes nothing.

Lists intercompany bills. Each intercompany bill is returned without its lines. To get the lines, use GET accounting/intercompany-bills/:id or POST accounting/intercompany-bills/search. To filter by intercompanyBillNumber, name, description, exchangeRate, markupAmount, or eitherEntityId, use POST accounting/intercompany-bills/search.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version `v1`. |

## Query surface

- `id` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `fromEntityId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `toEntityId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `intercompanyProcessId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `currency` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `billMarkup` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `billDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `paymentTerms` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `dueDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `serviceDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `status` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `type` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `postingDirection` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- Orderable: billDate, dueDate, serviceDate, status, type, billMarkup, postingDirection, currency, paymentTerms, lastModifiedDate
- Selectable: id, intercompanyBillNumber, name, description, fromEntityId, fromEntityName, toEntityId, toEntityName, intercompanyProcessId, intercompanyProcessName, currency, exchangeRate, billMarkup, markupAmount, billDate, paymentTerms, dueDate, serviceDate, status, voidReason, type, postingDirection, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of intercompanyBillsRow:

| Field | Type | Required | Filter | Sort | Description |
| --- | --- | --- | --- | --- | --- |
| `id` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The unique identifier for the intercompany bill. |
| `intercompanyBillNumber` | string \| null | no | no | no | The intercompany bill number. Unique within the tenant. Example: 'ICB-1'. |
| `name` | string \| null | no | no | no | The name of the intercompany bill. |
| `description` | string \| null | no | no | no | A description of the intercompany bill. |
| `fromEntityId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The legal entity that issues the intercompany bill and is owed the amount. See id on GET base/entities. |
| `fromEntityName` | string \| null | no | no | no | The name of the issuing legal entity. See entityName on GET base/entities. |
| `toEntityId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The legal entity that receives the intercompany bill and is charged for it. See id on GET base/entities. |
| `toEntityName` | string \| null | no | no | no | The name of the receiving legal entity. See entityName on GET base/entities. |
| `intercompanyProcessId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The intercompany process whose intercompany receivable and payable accounts balance each legal entity's side of the bill's journal entry. Bills created by a system process that don't name one use the default 'Intercompany Transaction' process. No endpoint returns intercompany processes. |
| `intercompanyProcessName` | string \| null | no | no | no | The name of the intercompany process. |
| `currency` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The currency of the intercompany bill. Every amount on the bill and its lines is in this currency. Format ISO 4217, for example 'USD'. |
| `exchangeRate` | decimal \| null | no | no | no | The rate used to convert amounts from the intercompany bill's currency to each legal entity's functional currency. The same rate is used for both legal entities. |
| `billMarkup` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | How markupAmount is applied to the lines. Possible values: 'none' (no markup: markupAmount and each line's markup are 0), 'percentage' (each line's markup is its amount multiplied by markupAmount), 'flatFee' (markupAmount is a total split evenly across the lines). |
| `markupAmount` | decimal \| null | no | no | no | The markup on the lines. How to read markupAmount depends on billMarkup. When billMarkup is 'percentage', markupAmount is a decimal fraction of each line's amount, so 0.1 is 10%. When billMarkup is 'flatFee', markupAmount is a total in the intercompany bill's currency, split evenly across the lines and rounded to 2 decimal places, with any remainder on the first line. 0 when billMarkup is 'none'. |
| `billDate` | date \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date of the intercompany bill. Format YYYY-MM-DD. |
| `paymentTerms` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The payment term of the intercompany bill. Possible values: 'net30', 'net60', 'net90', 'dueOnReceipt', 'net15', 'custom'. |
| `dueDate` | date \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date the intercompany bill falls due. Format YYYY-MM-DD. |
| `serviceDate` | date \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The start date of the service period the intercompany bill covers. Format YYYY-MM-DD. |
| `status` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The status of the intercompany bill. Possible values: 'draft', 'open', 'partiallySettled', 'settled', 'voided'. |
| `voidReason` | string \| null | no | no | no | The reason given when the intercompany bill was voided. Absent when status is not 'voided'. |
| `type` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | How the intercompany bill was created. Possible values: 'manual' (in the application), 'system' (by a system process, such as an allocation run). |
| `postingDirection` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The direction of the intercompany bill's journal entry postings. Possible values: 'normal', 'reverse'. When postingDirection is 'reverse', the debit and credit accounts of the intercompany process are swapped. |
| `lastModifiedDate` | date-time \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date and time the intercompany bill last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |

```json
{
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "intercompanyBillNumber": "<intercompanyBillNumber>",
      "name": "<name>",
      "description": "<description>",
      "fromEntityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "fromEntityName": "<fromEntityName>",
      "toEntityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "toEntityName": "<toEntityName>",
      "intercompanyProcessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "intercompanyProcessName": "<intercompanyProcessName>",
      "currency": "<currency>",
      "exchangeRate": "19.99",
      "billMarkup": "<billMarkup>",
      "markupAmount": "19.99",
      "billDate": "2026-01-15",
      "paymentTerms": "<paymentTerms>",
      "dueDate": "2026-01-15",
      "serviceDate": "2026-01-15",
      "status": "<status>",
      "voidReason": "<voidReason>",
      "type": "<type>",
      "postingDirection": "<postingDirection>",
      "lastModifiedDate": "2026-01-15T09:30:00.000Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "<nextCursor>"
  }
}
```

## Statuses

- `400` — Invalid request or business failure
- `401` — The request carries no valid access token.
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests from this client address. The response has no body and no `Retry-After` header.
- `500` — Internal server error
