Skip to content

List invoice items

The invoice_items.list operation: GET /api/v1/invoice_items in the REST API and the invoice_items_list tool in the MCP server.

GET/api/v1/invoice_items

Lists the brand's invoice items in the mode of the request, newest first: a customer's (customerId), an invoice's (invoiceId), or only those waiting for an invoice (pending=true). Paginate with limit (1–100, default 10) and starting_after.

At a glance

  • REST: GET /api/v1/invoice_items
  • MCP tool: invoice_items_list
  • Operation ID: invoice_items.list
  • Scope: Brand
  • Permission: invoices:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Pagination: limit (at most 100) and starting_after
  • Authentication: API key with the invoices:read scope
  • Since: M5

Request

Query parameters

FieldTypeRequiredDescription
customerIdcus_… IDNoItems of one customer.
invoiceIdinv_… IDNoItems on one invoice.
pendingboolean or stringNotrue: only items not on an invoice yet; false: only items on one.
limitinteger (1 to 100)NoPage size, 1 to 100 (default 10).
starting_afterii_… IDNoThe next_cursor of the previous page.

Response

200 OK with a JSON object, a page of the list (newest first):

FieldTypeDescription
object"list"
dataarray of object
data[].idii_… ID
data[].object"invoice_item"
data[].livemodeboolean
data[].customerIdcus_… ID
data[].subscriptionIdsub_… ID or null
data[].invoiceIdinv_… ID or nullThe invoice the item is on; null while it waits for the customer's next invoice.
data[].originone of pending, invoiceinvoice: created for a draft; pending: created for the next invoice.
data[].descriptionstring
data[].productIdprod_… ID
data[].priceIdprice_… ID or null
data[].taxCategoryIdone of 9 values, e.g. electronically_supplied_service, saas, ebook (all in the OpenAPI document)
data[].taxBehaviorone of inclusive, exclusive
data[].quantityinteger
data[].unitAmountmoney
data[].amountmoneyQuantity × unit amount.
data[].periodobject or null
data[].prorationboolean
data[].taxDatedate-time or nullThe date whose tax rates apply (a proration's change date).
data[].metadataobject
data[].createdAtdate-time
data[].updatedAtdate-time
has_moreboolean
next_cursorii_… ID or null

Examples

The items of a draft

HTTP
GET /api/v1/invoice_items?invoiceId=inv_01m4tx5nj8emwbyf7y9vcf47yk
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "ii_01m4tx5nj8emwbyf7y9vcf47ys",
      "object": "invoice_item",
      "livemode": false,
      "customerId": "cus_01m4tx5nj8emwbyf7y9vcf47ym",
      "subscriptionId": null,
      "invoiceId": "inv_01m4tx5nj8emwbyf7y9vcf47yk",
      "origin": "invoice",
      "description": "Implementation workshop (days)",
      "productId": "prod_01m4tx5nj8emwbyf7y9vcf47yr",
      "priceId": null,
      "taxCategoryId": "consulting_remote",
      "taxBehavior": "exclusive",
      "quantity": 2,
      "unitAmount": {
        "amount": "600000000",
        "currency": "EUR"
      },
      "amount": {
        "amount": "1200000000",
        "currency": "EUR"
      },
      "period": null,
      "proration": false,
      "taxDate": null,
      "metadata": {},
      "createdAt": "2026-10-20T08:30:00.000Z",
      "updatedAt": "2026-10-20T08:30:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400A filter or pagination value is invalid, or invoiceId and pending=true are both given.Fix the fields listed in details.issues and send the request again.
scope_required400The request names no brand (an org or entity key without Ownrecord-Brand).Call the operation with credentials or a target at its level: an organization, a legal entity, a brand or the platform (details.required_scope).
permission_denied403You can't read this brand's invoices (invoices:read; every role but billing admin has it).Ask an organization owner or admin for a role or scope that allows this action.
livemode_not_allowed403You have no live-mode access, so you can't use live invoices.Use test mode, or credentials for the target's mode. Developers need live access granted by an organization owner or admin.

It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, resource_not_found, dry_run_not_supported, rate_limited, internal_error.