---
title: "Read a customer's subscriptions or find existing Stripe subscriptions"
method: GET
path: "/contacts/{id}/subscriptions"
tags: ["Contacts"]
---

# Read a customer's subscriptions or find existing Stripe subscriptions

`GET /contacts/{id}/subscriptions`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/contacts/{id}/subscriptions`
- Auth: one of:
  - HTTP bearer and API key in header `x-organization-id`
  - HTTP bearer and API key in header `x-organization-id`

Requires the existing manage:contacts permission and a live customer in the selected company. Uses only that company's Stripe account, never its accountant's account. view=search requires integrationId and query (name/email, cus_ ID, or sub_ ID); returns results (id, customer, subscription, linked) and nextPage. view=portal returns the current private portal link and expiry, or null. 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

- `id` string, uuid, required

## Query parameters

- `view` 'subscriptions' | 'search' | 'invoices' | 'portal'
- `integrationId` string
- `query` string
- `page` string
- `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

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