---
title: "Invoice"
permalink: "/docs/api-v2/invoice"
original_source: "openapi-spec/api-v2.yaml"
---

> **AI agents:** This is the Markdown version of a RevenueCat documentation page. For the complete documentation index, see [llms.txt](https://www.revenuecat.com/docs/llms.txt).

# Invoice

## Invoice

Operations about invoices.

### Get a list of the customer's invoices

`GET /projects/{project_id}/customers/{customer_id}/invoices`

Operation ID: `list-customer-invoices`

This endpoint requires the following permission(s): <code>customer_information:invoices:read</code>. This endpoint belongs to the <strong>Customer Information</strong> domain, which has a default rate limit of <strong>480 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |
| `customer_id` | path | yes | ID of the customer |
| `starting_after` | query | no | Pagination cursor. Pass the id of the last item from the previous page to fetch the next page; omit for the first page. |
| `limit` | query | no | Maximum number of items to return per page. Values below 1 or above 100 are clamped to that range rather than rejected. |

**Responses**

- `200` — Success
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

**Response `200` body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. Always has the value `list`. One of: `list` |
| `items` | array of Invoice | yes | Details about each object. |
| `next_page` | string | yes | URL to access the next page of the customer's invoice. If not present / null, there is no next page |
| `url` | string | yes | The URL where this list can be accessed. |

<details><summary><code>items</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `invoice` |
| `id` | string | yes | The id of the invoice |
| `total_amount` | MonetaryAmount | yes |  |
| `line_items` | array of InvoiceLineItem | yes | List of line items that are part of the invoice. Each line item represents a product that was purchased. |
| `issued_at` | integer | yes | The date when the invoiced was issued in ms since epoch |
| `paid_at` | integer | yes | The date when the invoiced was paid in ms since epoch |
| `invoice_url` | string | yes | URL to download the invoice pdf |

<details><summary><code>total_amount</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `currency` | Currency | yes | ISO 4217 currency code One of: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL` |
| `gross` | number | yes | Total revenue generated (excluding taxes and commission) |
| `commission` | number | no | Store commission or payment processor fees deducted from gross revenue (if any) |
| `tax` | number | yes | Estimated taxes deducted from gross revenue |
| `proceeds` | number | yes | Net revenue after store commission / fees and taxes |

</details>

<details><summary><code>line_items</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `invoice.line_item` |
| `product_identifier` | string | yes | The product identifier |
| `product_display_name` | string | yes | The display name of the product |
| `product_duration` | string | yes | The duration of the subscription in ISO-8601 standard |
| `quantity` | integer | yes | Total purchased items |
| `unit_amount` | MonetaryAmount | yes |  |

</details>
</details>
### Get an invoice

`GET /projects/{project_id}/customers/{customer_id}/invoices/{invoice_id}/file`

Operation ID: `get-invoice`

This endpoint requires the following permission(s): <code>customer_information:invoices:read</code>. This endpoint belongs to the <strong>Customer Information</strong> domain, which has a default rate limit of <strong>480 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |
| `customer_id` | path | yes | ID of the customer |
| `invoice_id` | path | yes | ID of the invoice |

**Responses**

- `302` — File found. Needs to be downloaded from the location header
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

