# List payment terms

Operation ID: `paymentTerms`

Group: Accounting › Payment Terms

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

`GET /accounting/payment-terms`

Read-only: Reads and returns; changes nothing.

Lists payment terms. The list includes every payment term in your tenant. Each legal entity has its own list of these terms, managed under Settings & Policies > Feature Settings > Quote to Cash > Invoice Configuration. Only the terms on a legal entity's list can be used for its customers, sales orders, and invoice policies.

No endpoint returns a legal entity's list. On POST accounting/customers and PATCH accounting/customers/:id, the request fails with UNKNOWN_REFERENCE when paymentTermCode isn't on the customer's legal entity's list.

## 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
- `code` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `numberOfDays` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `discountPercentage` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `discountValidityDays` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- Orderable: id, code, label, numberOfDays, discountPercentage, discountValidityDays, lastModifiedDate
- Selectable: id, code, label, description, numberOfDays, discountPercentage, discountValidityDays, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of paymentTermsRow:

| Field | Type | Required | Filter | Sort | Description |
| --- | --- | --- | --- | --- | --- |
| `id` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The unique identifier for the payment term. |
| `code` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The code of the payment term. Unique within the tenant. Other records refer to a payment term by this code. See paymentTermCode on POST accounting/customers. Examples: 'net30', 'dueOnReceipt'. |
| `label` | string | no | no | yes | The display name of the payment term. See paymentTermLabel on GET accounting/customers/:id. Example: 'Net 30'. |
| `description` | string | no | no | no | A description of the payment term. |
| `numberOfDays` | number | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The number of days after the invoice date on which payment is due. |
| `discountPercentage` | decimal \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The discount for paying within discountValidityDays, as a decimal fraction of the invoice amount. For example, 0.02 is 2%. 0 when the term has no discount. |
| `discountValidityDays` | number \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The number of days after the invoice date during which discountPercentage applies. 0 when the term has no discount. |
| `lastModifiedDate` | date-time | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date and time the payment term last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |

```json
{
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "code": "<code>",
      "label": "<label>",
      "description": "<description>",
      "numberOfDays": 0,
      "discountPercentage": "19.99",
      "discountValidityDays": 0,
      "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
