---
title: "Check usage limits for a customer and product"
method: POST
path: "/v1/sdk/limits"
tags: ["Limits"]
---

# Check usage limits for a customer and product

`POST /v1/sdk/limits`

Checks whether a customer has an active purchase for a product and is within their usage limits. Returns a checkout URL if payment is required.

## Request body

- CheckLimitRequest
  - `customerRef` string, required
  - `includeCheckoutSession` boolean
  - `meterName` string
  - `productRef` string, required
  - `usageType` string

## Response `200`

Limit check result

- LimitResponse
  - `activationRequired` boolean — True when the customer must activate a priced default plan before usage is allowed
  - `balance` LimitBalanceDto
    - `creditBalance` number, required — Credit balance in mils
    - `creditsPerUnit` number, required — Credits per usage unit
    - `currency` string, required
    - `remainingUnits` number — Estimated whole units remaining from prepaid credit balance
  - `checkoutSessionId` string — Checkout session ID if payment is required
  - `checkoutUrl` string — Checkout URL if payment is required
  - `confirmationUrl` string — Customer portal confirmation URL when activation is required (fallback when not starting checkout)
  - `creditBalance` number — Credit balance in mils (for pre-paid usage-based plans)
  - `creditsPerUnit` number — Credits per usage unit (for pre-paid usage-based plans)
  - `currency` string — ISO 4217 currency code for credit fields
  - `meterName` string — The meter name to use when tracking usage events
  - `plans` LimitPlanItemDto[] — Active plans on the product available for activation or checkout
    - `billingCycle` string
    - `billingModel` string
    - `creditsPerUnit` number — Credits per usage unit (usage-based plans)
    - `currency` string, required
    - `freeUnits` number
    - `name` string
    - `price` number, required — Price in smallest currency unit (e.g. cents)
    - `pricingOptions` PlanPricingOptionDto[] — Per-currency price options for this plan
      - `basePrice` number — Base price in smallest currency unit (hybrid plans)
      - `currency` string, required — ISO 4217 currency code
      - `default` boolean — Whether this is the default currency option for the plan
      - `price` number, required — Price in smallest currency unit (e.g. cents)
      - `setupFee` number — One-time setup fee in smallest currency unit
    - `reference` string, required
    - `requiresPayment` boolean, required
    - `type` string, required
  - `product` LimitProductBriefDto
    - `name` string
    - `reference` string, required
  - `remaining` number, required — Remaining usage units before hitting the limit
  - `withinLimits` boolean, required — Whether the customer is within their usage limits

## Other responses

- `400` — Missing customerRef or productRef
- `404` — Customer or product not found

## Changes

- **2026-07-17** `bbc2ff2bc849` — 2 warning
  - the `customerRef` request property's maxLength was set to `20`
  - the `productRef` request property's maxLength was set to `20`
- **2026-07-04** `a30b6aef464d` — 4 info
  - the endpoint scheme security `SecretKey` was added to the API
  - the endpoint scheme security `bearer` was removed from the API
  - added the new optional request property `includeCheckoutSession`
  - added the optional property `plans/items/pricingOptions` to the response with the `200` status
- **2026-04-26** `60c2cd1caf83` — 1 warning
  - removed the request property `planRef`
- **2026-04-09** `7b327a22e3cb` — 1 breaking, 2 warning, 3 info
  - removed the required property `balance/allOf[#/components/schemas/LimitBalanceDto]/pricePerUnit` from the response with the `200` status
  - removed the optional property `plans/items/pricePerUnit` from the response with the `200` status
  - removed the optional property `pricePerUnit` from the response with the `200` status
  - added the optional property `creditsPerUnit` to the response with the `200` status
  - …2 more
- **2026-04-08** `052cc028fdfa` — 1 warning
  - removed the optional property `product/allOf[#/components/schemas/LimitProductBriefDto]/id` from the response with the `200` status

[Full history](https://skmtc.dev/solvapay/apis/solvapay-rest-api/changes/v1/sdk/limits/post.md)

---

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