---
title: "Get subscription details"
method: GET
path: "/subscriptions/{subscriptionId}"
tags: ["Provisioning", "NachoPay"]
---

# Get subscription details

`GET /subscriptions/{subscriptionId}`

Retrieve details for a NachoNacho subscription whenever you need to verify whether the buyer is still a paying customer. You can call this endpoint at login, once a month, or any other time required by your business logic.
Use the NachoNacho subscription ID to fetch the subscription details.

The response shape depends on the flow the subscription belongs to, given by the `type` field:
- `PROVISIONING`: `subscription_payment` holds the Stripe subscription object. For additional subscription fields, see the [Stripe API documentation](https://stripe.com/docs/api/subscriptions/object).
- `NACHO_PAY`: there is no Stripe subscription, so `subscription_payment` is `null`. Use `payment_source` and `can_be_charged` to check that the buyer still has a payment source you can bill through `POST /payments`.

## Path parameters

- `subscriptionId` string, required

## Response `200`

Subscription details with user, company, and — for PROVISIONING subscriptions — Stripe subscription data

- object — Response from GET /subscriptions/{subscriptionId}
  - `subscriptionId` string
  - `type` 'PROVISIONING' | 'NACHO_PAY' — Which flow this subscription belongs to. Determines whether `subscription_payment` or `payment_source` is populated.
  - `created` integer — NACHO_PAY only. Unix timestamp of when the NachoNacho subscription was created.
  - `can_be_charged` boolean — NACHO_PAY only. True when the buyer has a payment source on file and has not canceled, meaning `POST /payments` will work.
  - `payment_source` object, nullable — NACHO_PAY only. The payment source we charge for this subscription, or null if the buyer has not saved one yet.
    - `id` string
    - `type` string
    - `brand` string, nullable
    - `last4` string, nullable
    - `exp_month` integer, nullable
    - `exp_year` integer, nullable
  - `user` object
    - `id` string
    - `firstName` string
    - `lastName` string
    - `email` string, email
  - `company` object
    - `id` string
    - `name` string
  - `subscription_payment` object, nullable — Stripe subscription object. Always null for NACHO_PAY subscriptions, which have no Stripe subscription.
    - `id` string
    - `object` string
    - `application` string, nullable
    - `application_fee_percent` number, float, nullable
    - `automatic_tax` object
      - `enabled` boolean
      - `liability` string, nullable
    - `billing_cycle_anchor` integer — Unix timestamp
    - `cancel_at` integer, nullable — Unix timestamp when subscription will cancel
    - `cancellation_details` object, nullable
      - `comment` string, nullable
      - `feedback` string, nullable
      - `reason` string, nullable
    - `cancel_at_period_end` boolean
    - `canceled_at` integer, nullable — Unix timestamp when subscription was canceled
    - `collection_method` string
    - `created` integer — Unix timestamp
    - `currency` string
    - `customer` string
    - `days_until_due` integer, nullable
    - `default_payment_method` string, nullable
    - `default_source` string, nullable
    - `default_tax_rates` object[]
    - `description` string, nullable
    - `discounts` object[], nullable
    - `ended_at` integer, nullable
    - `invoice_settings` object
      - `issuer` object
        - `type` string
    - `items` object
      - `object` string
      - `data` object[]
        - `id` string
        - `object` string
        - `created` integer — Unix timestamp
        - `current_period_end` integer — Unix timestamp
        - `current_period_start` integer — Unix timestamp
        - `metadata` object
        - `plan` object
          - `id` string
          - `object` string
          - `active` boolean
          - `amount` integer
          - `amount_decimal` string
          - `billing_scheme` string
          - `created` integer — Unix timestamp
          - `currency` string
          - `discounts` object[], nullable
          - `interval` string
          - `interval_count` integer
          - `livemode` boolean
          - `metadata` object
          - `nickname` string, nullable
          - `product` string
          - `tiers_mode` string, nullable
          - `transform_usage` object, nullable
          - `trial_period_days` integer, nullable
          - `usage_type` string
        - `price` object
          - `id` string
          - `object` string
          - `active` boolean
          - `billing_scheme` string
          - `created` integer — Unix timestamp
          - `currency` string
          - `custom_unit_amount` object, nullable
          - `livemode` boolean
          - `lookup_key` string, nullable
          - `metadata` object
          - `nickname` string, nullable
          - `product` string
          - `recurring` object
            - `interval` string
            - `interval_count` integer
            - `trial_period_days` integer, nullable
            - `usage_type` string
          - `tax_behavior` string
          - `tiers_mode` string, nullable
          - `transform_quantity` object, nullable
          - `type` string
          - `unit_amount` integer
          - `unit_amount_decimal` string
        - `quantity` integer
        - `subscription` string
        - `tax_rates` object[]
      - `has_more` boolean
      - `total_count` integer
      - `url` string
    - `latest_invoice` string
    - `livemode` boolean
    - `metadata` object
    - `next_pending_invoice_item_invoice` string, nullable
    - `on_behalf_of` string, nullable
    - `pause_collection` object, nullable
    - `payment_settings` object
      - `payment_method_options` object, nullable
      - `payment_method_types` string[], nullable
      - `save_default_payment_method` string
    - `pending_invoice_item_interval` object, nullable
    - `pending_setup_intent` string, nullable
    - `pending_update` object, nullable
    - `schedule` string, nullable
    - `start_date` integer — Unix timestamp
    - `status` string
    - `test_clock` string, nullable
    - `transfer_data` object, nullable
    - `trial_end` integer, nullable
    - `trial_settings` object
      - `end_behavior` object
        - `missing_payment_method` string
    - `trial_start` integer, nullable
  - `status` 'active' | 'canceled' — NACHO_PAY only. `canceled` once the Buyer has ended the subscription. Cancellation is final: a canceled subscription can never be charged or reactivated.
  - `canceled_at` integer, nullable — NACHO_PAY only. Unix timestamp of when the Buyer canceled, or null if still active.

## Other responses

- `400` — Missing subscriptionId in path or subscription has no linked Stripe subscription
- `401` — Missing or invalid JWT
- `403` — Seller is not the owner of this product
- `404` — Subscription not found or Stripe subscription not found
- `500` — Internal server error

---

[API](https://skmtc.dev/nachonacho/apis/nachonacho-public-api.md) · [All operations](https://skmtc.dev/nachonacho/apis/nachonacho-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nachonacho/nachonacho-public-api/revisions/0c3733b7fab0/schema)
