# List invoices (v1)

```http
GET https://secure.yoprint.com/v1/api/store/{team_slug}/invoice
```

- Status: legacy, deprecated
- API version: v1
- Operation ID: `v1_public_invoice_index`
- Section: Invoices and payments › [Invoices](https://developer.yoprint.com/reference/invoices.md)
- Web page: https://developer.yoprint.com/reference/invoices/v1-invoice-index/
- Authentication: `Authorization: Bearer YOUR_API_KEY`

> **Legacy (deprecated).** A newer operation does this better: use [Filter invoices](https://developer.yoprint.com/reference/invoices/v2-invoice-filter.md) (`POST /v2/api/store/{team_slug}/v2/invoice/filter`) instead. Its answers say so in the `Deprecation` and `X-YoPrint-Successor` headers.

Returns one page of your team's invoices of saved, non-draft sales orders and quotes (invoices of deleted, draft or autosaved orders, and deleted invoices, are left out). No filters or sort: only `page`; the order isn't guaranteed.

Each row is a summary: number, order, customer, dates, deposit, totals (`calc_total` and the other `calc_*` fields are in thousandths, an older encoding: 12.50 is `12500`; see [Money and quantities](/concepts/money-and-quantities/)), `paid_amount`, `is_paid` and PDF links (they carry their own access token).

## Permission

Any member of the team.

## Path parameters

- `team_slug` (string, required): Your team slug, shown as Team ID next to your API key in Profile. Example `your-team`.

## Query parameters

- `page` (integer, optional): The page to read. The page size is the team's list page size setting (50 unless the team changed it). Default `1`. Minimum 1. Example `1`.

## Request body

This operation takes no request body.

### Example request

```bash
curl 'https://secure.yoprint.com/v1/api/store/your-team/invoice' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'X-Yoprint-Decimal-Format: exact-v1'
```

## Response

`200` Successful response.

Fields:

- `data` (array of objects, required)
  - Each item:
    - `billing_address` (object | null, optional): An address.
      - `address1` (string | null, optional)
      - `address2` (string | null, optional)
      - `city` (string | null, optional)
      - `country` (string | null, optional)
      - `country_code` (string | null, optional)
      - `id` (string, optional): The address.
      - `label` (string | null, optional)
      - `postcode` (string | null, optional)
      - `state` (string | null, optional)
      - `state_code` (string | null, optional)
    - `calc_delivery_total` (integer | number | string | null, optional): Shipping. Thousandths, an older encoding: `12500` is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (`1234.5` is 1.2345), or as a string (`"1234.5"`) when you send `X-Yoprint-Decimal-Format: exact-v1`. See [Money and quantities](/concepts/money-and-quantities/).
    - `calc_deposit_total` (integer | number | string | null, optional): Deposit amount. Thousandths, an older encoding: `12500` is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (`1234.5` is 1.2345), or as a string (`"1234.5"`) when you send `X-Yoprint-Decimal-Format: exact-v1`. See [Money and quantities](/concepts/money-and-quantities/).
    - `calc_discount` (integer | number | string | null, optional): Discount. Thousandths, an older encoding: `12500` is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (`1234.5` is 1.2345), or as a string (`"1234.5"`) when you send `X-Yoprint-Decimal-Format: exact-v1`. See [Money and quantities](/concepts/money-and-quantities/).
    - `calc_subtotal` (integer | number | string | null, optional): Subtotal. Thousandths, an older encoding: `12500` is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (`1234.5` is 1.2345), or as a string (`"1234.5"`) when you send `X-Yoprint-Decimal-Format: exact-v1`. See [Money and quantities](/concepts/money-and-quantities/).
    - `calc_tax` (integer | number | string | null, optional): Tax. Thousandths, an older encoding: `12500` is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (`1234.5` is 1.2345), or as a string (`"1234.5"`) when you send `X-Yoprint-Decimal-Format: exact-v1`. See [Money and quantities](/concepts/money-and-quantities/).
    - `calc_total` (integer | number | string | null, optional): Total. Thousandths, an older encoding: `12500` is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (`1234.5` is 1.2345), or as a string (`"1234.5"`) when you send `X-Yoprint-Decimal-Format: exact-v1`. See [Money and quantities](/concepts/money-and-quantities/).
    - `created_at` (string (date-time), optional)
    - `customer` (object | null, optional): The customer (the full customer record).
      - `id` (string, optional): The customer.
      - `name` (string, optional)
    - `customer_id` (string | null, optional): The customer.
    - `customer_name` (string | null, optional)
    - `deposit_due` (string (date-time) | null, optional): Deposit due. ISO 8601 with offset, or null.
    - `deposit_required` (boolean | integer | null, optional)
    - `full_amount_due` (string (date-time) | null, optional): Full amount due. ISO 8601 with offset, or null.
    - `id` (string, optional): The invoice.
    - `is_paid` (boolean, optional)
    - `order_cust_due_date` (string (date-time) | null, optional): Order customer due date. ISO 8601 with offset, or null.
    - `order_id` (string, optional): The order.
    - `order_issue_date` (string (date-time) | null, optional): Order issue date. ISO 8601 with offset, or null.
    - `order_name` (string | null, optional)
    - `order_object_type` (string | null, optional)
    - `order_quote` (boolean, optional)
    - `order_scoped_id` (string | null, optional): The order number.
    - `order_ship_due_date` (string (date-time) | null, optional): Order ship-by date. ISO 8601 with offset, or null.
    - `paid_amount` (integer | number | string | null, optional): Allocated payments. Thousandths, an older encoding: `12500` is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (`1234.5` is 1.2345), or as a string (`"1234.5"`) when you send `X-Yoprint-Decimal-Format: exact-v1`. See [Money and quantities](/concepts/money-and-quantities/).
    - `pdf_url` (array of objects, optional): PDF links (with their own access token): the standard invoice PDF first (`url`, `is_custom: false`), then one entry per enabled custom invoice template (`label`, `type`, `description`, `url`, the `show_in_*` flags, `is_custom: true`).
      - Each item:
        - `description` (string, optional)
        - `is_custom` (boolean, optional)
        - `label` (string, optional)
        - `type` (string, optional)
        - `url` (string, optional)
    - `scoped_id` (string | null, optional): The invoice number.
    - `shipping_address` (object | null, optional): An address. Same fields as `data[].billing_address` above.
- `status` (integer, required)
- `success` (boolean, required)
- `pagination` (object, optional)
  - `count` (integer, required)
  - `currentPage` (integer, required)
  - `links` (object | array of any, required): Links to the neighbouring pages: `previous` and `next`, each present only when that page exists. An empty list, `[]`, when there is only one page.
    - `next` (string (uri), optional): The next page.
    - `previous` (string (uri), optional): The previous page.
  - `perPage` (integer, required)
  - `total` (integer, required)
  - `totalPages` (integer, required)

Example response:

```json
{
  "data": [
    {
      "billing_address": {
        "address1": "100 Example Street",
        "address2": null,
        "city": "Austin",
        "country": "United States",
        "country_code": "US",
        "id": "117KfwwfreX15N",
        "label": "Main office",
        "postcode": "78701",
        "state": "Texas",
        "state_code": "TX"
      },
      "calc_delivery_total": 15000,
      "calc_deposit_total": 169880,
      "calc_discount": 0,
      "calc_subtotal": 315000,
      "calc_tax": 24750,
      "calc_total": 339750,
      "created_at": "2026-11-03T15:00:00+00:00",
      "customer": {
        "id": "ifAHmADekGZ6id",
        "name": "Northwind Apparel"
      },
      "customer_id": "ifAHmADekGZ6id",
      "customer_name": "Northwind Apparel",
      "deposit_due": "2026-11-05T00:00:00+00:00",
      "deposit_required": true,
      "full_amount_due": "2026-11-20T00:00:00+00:00",
      "id": "cBRpSf5nw6upt5",
      "is_paid": false,
      "order_cust_due_date": "2026-11-10T00:00:00+00:00",
      "order_id": "sFbALVSYD55eXe",
      "order_issue_date": "2026-11-02T00:00:00+00:00",
      "order_name": "Team shirts",
      "order_object_type": "sales_order",
      "order_quote": false,
      "order_scoped_id": "SO1001",
      "order_ship_due_date": "2026-11-08T00:00:00+00:00",
      "paid_amount": 100000,
      "pdf_url": [
        {
          "is_custom": false,
          "url": "https://example.com/pdf/invoice.pdf"
        }
      ],
      "scoped_id": "1001",
      "shipping_address": {
        "address1": "100 Example Street",
        "address2": null,
        "city": "Austin",
        "country": "United States",
        "country_code": "US",
        "id": "117KfwwfreX15N",
        "label": "Main office",
        "postcode": "78701",
        "state": "Texas",
        "state_code": "TX"
      }
    }
  ],
  "pagination": {
    "count": 1,
    "currentPage": 1,
    "links": [],
    "perPage": 50,
    "total": 1,
    "totalPages": 1
  },
  "status": 200,
  "success": true
}
```

## Errors

- `401` The API key is missing or wrong (`unauthenticated`).
- `403` You are not allowed to do this. `api_access_not_in_plan`: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only `{"message": "Insufficient Permission"}`. Other refusals use the error envelope, with `unauthorized` or `user_is_not_authorized`.
- `404` Not found. `page_not_found`: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's. `code: null`, with a message that starts "No query results for": there is no record with that id.

## Notes

- The response is one page with `pagination`. The page size is the team's list page size setting (50 unless the team changed it); `per_page` is not read. Send `page` (from 1) in the body or the query string for later pages.

## Related

- [Filter invoices](https://developer.yoprint.com/reference/invoices/v2-invoice-filter.md): `POST /v2/api/store/{team_slug}/v2/invoice/filter`
- [Get an invoice (v1)](https://developer.yoprint.com/reference/invoices/v1-invoice-show.md): `GET /v1/api/store/{team_slug}/invoice/{hash_id}`
