# Retrieve an intercompany bill

Operation ID: `getIntercompanyBill`

Group: Accounting › Intercompany Bills

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

`GET /accounting/intercompany-bills/{id}`

Read-only: Reads and returns; changes nothing.

Retrieves an intercompany bill. Use the intercompany bill's id, not its intercompanyBillNumber.

The response includes the bill's lines.

## 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`. |
| `id` | path | string | yes | The unique identifier of the intercompany bill you want to retrieve. |

## Response

`200` Success

Under `data` (getIntercompanyBillOutput):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | The unique identifier for the intercompany bill. |
| `intercompanyBillNumber` | string | no | The intercompany bill number. Unique within the tenant. Example: 'ICB-1'. |
| `name` | string | no | The name of the intercompany bill. |
| `description` | string | no | A description of the intercompany bill. |
| `fromEntityId` | string | no | The legal entity that issues the intercompany bill and is owed the amount. See id on GET base/entities. |
| `fromEntityName` | string | no | The name of the issuing legal entity. See entityName on GET base/entities. |
| `toEntityId` | string | no | The legal entity that receives the intercompany bill and is charged for it. See id on GET base/entities. |
| `toEntityName` | string | no | The name of the receiving legal entity. See entityName on GET base/entities. |
| `intercompanyProcessId` | string | 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 | no | The name of the intercompany process. |
| `currency` | string | no | 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 | 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 | no | 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 | 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 | no | The date of the intercompany bill. Format YYYY-MM-DD. |
| `paymentTerms` | string | no | The payment term of the intercompany bill. Possible values: 'net30', 'net60', 'net90', 'dueOnReceipt', 'net15', 'custom'. |
| `dueDate` | date | no | The date the intercompany bill falls due. Format YYYY-MM-DD. |
| `serviceDate` | date | no | The start date of the service period the intercompany bill covers. Format YYYY-MM-DD. |
| `status` | string | no | The status of the intercompany bill. Possible values: 'draft', 'open', 'partiallySettled', 'settled', 'voided'. |
| `voidReason` | string | no | The reason given when the intercompany bill was voided. Absent when status is not 'voided'. |
| `type` | string | no | How the intercompany bill was created. Possible values: 'manual' (in the application), 'system' (by a system process, such as an allocation run). |
| `postingDirection` | string | no | 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 | yes | The date and time the intercompany bill last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
| `lines` | array<object> | no | The lines of the intercompany bill. An empty array when the bill has no lines. |
| `lines[].id` | string | yes | The unique identifier for the line. |
| `lines[].description` | string | no | A description of the line. |
| `lines[].amount` | decimal | no | The amount of the line before markup, in the intercompany bill's currency. |
| `lines[].fromAccountId` | string | no | The account the issuing legal entity credits with the line's amount, typically where it records the income or recharge. Markup is credited to the issuing entity's markup account instead. See id on GET accounting/accounts/:id. |
| `lines[].toAccountId` | string | no | The account the receiving legal entity debits with the line's amount plus markup, typically where it records the cost or asset. See id on GET accounting/accounts/:id. |
| `lines[].fromValueAllocationId` | string | no | The numeric id of the value accounting tags on the issuing legal entity's side, not a UUID. No endpoint returns value accounting tags. Absent when value accounting tags are not in use. |
| `lines[].toValueAllocationId` | string | no | The numeric id of the value accounting tags on the receiving legal entity's side, not a UUID. No endpoint returns value accounting tags. Absent when value accounting tags are not in use. |
| `lines[].markupAmount` | decimal | no | The markup on the line, in the intercompany bill's currency, calculated from the bill's billMarkup and markupAmount. |
| `lines[].fromTaxAmount` | decimal | no | The tax the issuing legal entity charges on the line (output tax), in the intercompany bill's currency. It is the rate of the issuing entity's tax configuration multiplied by the line's amount plus markup. Absent when no tax applies. |
| `lines[].toTaxAmount` | decimal | no | The tax the receiving legal entity pays on the line and records as recoverable (input tax), in the intercompany bill's currency. It is the rate of the receiving entity's tax configuration multiplied by the line's amount plus markup. Absent when no tax applies. |

```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",
    "lines": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "description": "<description>",
        "amount": "19.99",
        "fromAccountId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "toAccountId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "fromValueAllocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "toValueAllocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "markupAmount": "19.99",
        "fromTaxAmount": "19.99",
        "toTaxAmount": "19.99"
      }
    ]
  },
  "diagnostics": [
    {
      "code": "<code>",
      "message": "<message>",
      "severity": "error",
      "path": [
        "<path>"
      ],
      "details": "<details>"
    }
  ]
}
```

## Errors

| Code | Status |
| --- | --- |
| `NOT_FOUND` | 400 |

## Statuses

- `400` — Invalid request or business failure. Codes: NOT_FOUND
- `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
