# List a customer's invoices (/api/customers/list-customer-invoices)

`GET https://api.comecero.com/api/v1/customers/{customer_id}/invoices`

Lists a customer's invoices, oldest first. The list is offset-based: follow `next_page_url` or send `offset`. Secret tokens, and limited tokens tied to the customer. A limited token never sees draft invoices, whatever `draft` says.

## Parameters

- `customer_id` (path, required): The id of the customer. With a limited token from a customer login you can send `me` instead.
- `limit` (query): How many items to return on one page, from 1 to 100. The default is 100. A value outside 1 to 100, or one that is not a whole number, is a `400`.
- `offset` (query): For offset-based lists, how many items to skip before the page starts. Use `next_page_offset` or `previous_page_offset` from the page you have. A value that is not a whole number is a `400`.
- `desc` (query): Sort in descending order (newest, largest or last first) when `true`. The default is `false`. A value other than `true` or `false` is a `400`.
- `sort_by` (query): The date to sort by.
- `q` (query): An invoice id. Only that invoice is returned.
- `open` (query): `true` for only open invoices, `false` for only closed ones.
- `draft` (query): `true` for only drafts, `false` for only sent invoices. Secret tokens only.
- `payment_status` (query): Only invoices with this payment status.
- `expand` (query): Comma-separated child objects to return in full instead of as a URL, for example `customer,payments`. Use dot notation for nested objects (`items.product`), up to four levels deep. A single object takes up to 12 paths; a list takes up to 2, applied to every item. Extra paths are dropped without an error. See [Expanding objects](https://docs.comecero.com/docs/basic-concepts/expanding-objects).
- `show` (query): Comma-separated fields to return; all others are left out. Use dot notation for child fields (`customer.email`). You cannot send `show` and `hide` together (`400`). See [Customizing output](https://docs.comecero.com/docs/basic-concepts/customizing-output).
- `hide` (query): Comma-separated fields to leave out of the response. Use dot notation for child fields (`customer.email`). You cannot send `show` and `hide` together (`400`). See [Customizing output](https://docs.comecero.com/docs/basic-concepts/customizing-output).
- `formatted` (query): When `true`, the object also has a `formatted` child with amounts and dates as display text in the shopper's language and currency (for example `$19.99` or `November 7, 2026`). The default is `false`. See [Localized formatting](https://docs.comecero.com/docs/basic-concepts/localized-formatting).

Responses: 200, 400, 401, 403, 404.

Full schemas: operation `list_customer_invoices` in /openapi.json.