# GET /api/invoicing/exports/invoices/csv

Invoices: Exports the filtered invoice list as CSV.

Returns a downloadable UTF-8 .csv file covering every invoice matching the applied filters
(biller, biller type, recipient, status, invoice number, currency, issue-date range, due-date
range, amount range, and source type), in the requested sort order. Paging members are ignored:
an export is not a page. A filtered set of more than 10,000 invoices is rejected rather than
truncated; narrow the filter (for example by date range or status) and retry.

**Operation ID:** `GET_api_invoicing_exports_invoices_csv`

## 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. |
| 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. |
| MaxAmount | query | no | number(double) | Filter by maximum grand total. |
| SourceType | query | no | WinkPGInvoicingInvoiceSourceType | Filter by source type. |
| Ids | query | no | array<string(uuid)> | Restrict the result to these specific invoices, AND-combined with every other filter. |
| Filter | query | no | string | Gets or sets a general filter string for the result set. |
| Name | query | no | string | Gets or sets the name filter for the result set. |
| IncludeDeleted | query | no | boolean | Gets or sets a value indicating whether to include deleted entities in the result set. |
| IncludeInactive | query | no | boolean | Gets or sets a value indicating whether to include inactive entities in the result set. |
| Sorting | query | no | string |  |
| SkipCount | query | no | integer(int32) |  |
| MaxResultCount | query | no | integer(int32) |  |
| ExtraProperties | query | no | object |  |
| suppressNulls | query | no | boolean | If true, omit properties with null values. |

## Responses

### 200

The exported CSV.

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

Schema type: `string(binary)`

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

Schema type: `string(binary)`

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

Schema type: `string(binary)`

### 400

The filtered set exceeds the 10,000-row export limit
(`Invoicing:Export:RowLimitExceeded`). Narrow the filter, for example by date range or
status, and retry.

### 404

The caller's biller scope does not cover the requested biller
(`Invoicing:Biller:ForeignBillerNotAllowed`). Reported as not-found rather than
forbidden so the response cannot be used to probe which billers exist.

### 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`

### 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.
