---
title: "Read the authenticated customer's subscription billing"
method: GET
path: "/portal/{token}/subscriptions"
tags: ["Customer Portal"]
---

# Read the authenticated customer's subscription billing

`GET /portal/{token}/subscriptions`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/portal/{token}/subscriptions`
- Auth: none required

The high-entropy portal token is the credential. Organization and customer scope are derived exclusively from its current, unrevoked, unexpired grant; no caller-supplied organizationId or contactId is accepted. view=invoices returns invoices (id, number, subscriptionName, createdAt, amountCents, currency, status, invoiceUrl, pdfUrl) and nextCursor. Amounts are integer minor units (US cents). The full invoice is excluded when any line belongs to another billing recipient. Continue with cursor until nextCursor is null.

## Path parameters

- `token` string, required

## Query parameters

- `view` 'subscriptions' | 'invoices'
- `cursor` string

## Response `200`

subscriptions, companyName and customerName. Manager responses also include connections; private customer responses never include account choices or Stripe dashboard URLs.

- object
  - `companyName` string
  - `customerName` string
  - `subscriptions` LinkedCompanySubscription[]
    - `id` string, required: Local link UUID, or Stripe subscription ID in search results
    - `name` string, required
    - `status` string, required
    - `cancelAtPeriodEnd` boolean
    - `canUpdateCard` boolean, required
    - `error` string
    - `stripeUrl` string: Firm-only Stripe dashboard link
    - `paymentMethod` object, nullable
      - `brand` string
      - `last4` string
      - `expMonth` integer
      - `expYear` integer
    - `charges` object[], required
      - `name` string
      - `amountCents` integer, nullable: Quantity-adjusted recurring charge before invoice-level adjustments; null for variable pricing
      - `currency` string
      - `interval` string
      - `intervalCount` integer
      - `variable` boolean
      - `nextBillingAt` string, date-time, nullable
  - `connections` object[]
    - `id` string, uuid
    - `name` string

## Other responses

- `401`: Invalid, revoked or expired portal token
- `default`: Invalid input, unavailable Stripe account, or denied customer access

---

[API](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api.md) · [All operations](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/revisions/9a8269f0a586?raw)
