# GET /api/invoicing/invoices

Invoices: Retrieves a continuation-token paged, filtered list of invoices.

The public invoice list surface is continuation-token only (Cosmos charges RU per skipped
row on a skip/take path). The in-process skip/take `GetListAsync` is implemented
explicitly below so it satisfies the CRUD contract without being exposed over HTTP.

**Operation ID:** `GET_api_invoicing_invoices`

## Authorization

Requires: Invoicing.Invoices, merchant scope.

Required permissions:
- `Invoicing.Invoices`

## Parameters

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| BillerId | query | no | string(uuid) | Filter by billing entity. |
| BillerType | query | no | WinkPGInvoicingInvoicePartyType | Filter by biller type. |
| RecipientId | query | no | string(uuid) | Filter by recipient. |
| Status | query | no | WinkPGInvoicingInvoiceStatus | Filter by status. |
| InvoiceNumber | query | no | string | Filter by invoice number (partial match). |
| Currency | query | no | string | Filter by currency (exact match). |
| MinIssueDate | query | no | string(date-time) | Filter invoices issued on or after this date. |
| MaxIssueDate | query | no | string(date-time) | Filter invoices issued on or before this date. |
| MinDueDate | query | no | string(date-time) | Filter invoices due on or after this date. |
| MaxDueDate | query | no | string(date-time) | Filter invoices due on or before this date. |
| MinAmount | query | no | number(double) | Filter by minimum grand total. An invoice with no grand total (a null  `GrandTotal`) is excluded when this bound is set, consistently across the list,  count, and export. |
| MaxAmount | query | no | number(double) | Filter by maximum grand total. An invoice with no grand total (a null  `GrandTotal`) is excluded when this bound is set, consistently across the list,  count, and export. |
| SourceType | query | no | WinkPGInvoicingInvoiceSourceType | Filter by source type. |
| Filter.Logic | query | no | PhoenixAbpCoreDataFilteringFilterLogic |  |
| Filter.Rules | query | no | array<PhoenixAbpCoreDataFilteringFilterRule> |  |
| Filter.Groups | query | no | array<PhoenixAbpCoreDataFilteringFilterGroup> |  |
| MaxResultCount | query | no | integer(int32) |  |
| ContinuationToken | query | no | string |  |
| IncludeDeleted | query | no | boolean |  |
| IncludeInactive | query | no | boolean |  |
| Sorting.Field | query | no | string |  |
| Sorting.Descending | query | no | boolean |  |
| suppressNulls | query | no | boolean | If true, omit properties with null values. |

## Responses

### 200

OK

**Content type:** `text/plain`

Schema: `PhoenixAbpCoreApplicationContractsContinuationPagedResultDtoOfWinkPGInvoicingInvoiceListDto`

**Content type:** `application/json`

Schema: `PhoenixAbpCoreApplicationContractsContinuationPagedResultDtoOfWinkPGInvoicingInvoiceListDto`

**Content type:** `text/json`

Schema: `PhoenixAbpCoreApplicationContractsContinuationPagedResultDtoOfWinkPGInvoicingInvoiceListDto`

### 403

Forbidden

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 401

Unauthorized

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 400

Bad Request

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 404

Not Found

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 501

Not Implemented

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 500

Internal Server Error

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### default

The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

## See also

- [All documentation](https://docs.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
