GEThttps://api.veriko.mx/v1/billing/subscription

Get user's active subscription

Audience
public
Auth
API key
Permission
billing:read_self

Returns the authenticated user's active subscription. The response always contains a resource: if no active subscription exists, the server assigns the default plan.

source distinguishes Stripe payments (stripe), admin grants (admin_granted), and plans assigned by the system (system_default). The cycle summary (used, limit, remaining, and resets_at) lives in meta.quota.

Current-cycle usage is also available from GET /v1/usage/summary. Its resets_at is the end of the quota cycle: it matches current_period_end except on an annual plan, where quota resets every month and resets_at marks the end of the current month. Available plans are returned by GET /v1/plans.

Request
curl -X GET 'https://api.veriko.mx/v1/billing/subscription' \
  -H 'Authorization: Bearer veriko_••••'

Python example — coming soon.

JavaScript example — coming soon.

PHP example — coming soon.

Response 200BillingSubscriptionResponse — User's active subscription with plan, cycle, and quota.
FieldTypeDescription
dataobject

Main response payload. Shape varies by endpoint (object, array, or JSON:API envelope with type, id, attributes).

type*string

JSON:API resource type. Always billing_subscription.

e.g. billing_subscription
id*string

Local subscription identifier, represented as a string.

e.g. 4218
attributes*object

The user's active subscription, including its source, state, cycle, and limits. Each user has exactly one. The trial_*, cancel_*, and stripe_subscription_id fields are null when not applicable.

plan_slugstring

Unique, human-readable plan identifier. It corresponds to the user's active plan.

e.g. pro
plan_namestring

Plan name shown in the interfaces.

e.g. Personal
billing_modelstring

Plan billing model. free: No charge; tiered: Flat fee; metered: Charged by usage; hybrid: Flat fee plus usage.

e.g. hybrid
sourcestring

Subscription source — stripe: Payment through Stripe; admin_granted: Admin grant; system_default: Plan assigned by the system.

e.g. stripe
statusstring

Subscription lifecycle state — active: Active; trialing: In a trial period; past_due: Payment overdue with access still enabled; canceled: Ended; unpaid: Failed payments with no access; incomplete: First payment pending; incomplete_expired: First payment expired; paused: Paused.

e.g. active
current_period_startstring (date-time)

ISO 8601 timestamp in UTC with an explicit Z suffix; for example, "2026-05-01T05:14:38Z". The *_at, *_end, *_start, and *_date fields follow this format. meta.datetime describes the same contract in the response.

e.g. 2026-05-01T05:14:38Z
current_period_endstring (date-time)

ISO 8601 timestamp in UTC with an explicit Z suffix; for example, "2026-05-01T05:14:38Z". The *_at, *_end, *_start, and *_date fields follow this format. meta.datetime describes the same contract in the response.

e.g. 2026-05-01T05:14:38Z
currencystring

Currency of the active cycle. MXN is Mexican pesos and USD, US dollars.

e.g. MXN
billing_intervalstring

Billing cadence — once: One cycle with no automatic renewal; month: Monthly; year: Yearly.

e.g. month
overage_enabledboolean

true when the user has opted into overage billing on a hybrid plan. When so, effective_limit jumps from included_validations to monthly_validation_limit.

e.g. false
included_validationsinteger | nullnullable

Validations included in the base quota before overage charges. null when the plan has no base quota.

e.g. 500
monthly_validation_limitinteger

Validation cap per subscription cycle. 0 allows no validations. On hybrid plans, it is the hard cap when overage_enabled is true; when it is false, effective_limit uses included_validations. On other models, it is the effective limit unless an admin override applies.

e.g. 10000
beneficiaries_maxinteger

Cap on registered beneficiaries per account. -1 means uncapped; from 0, the value is enforced as the limit.

e.g. -1
bulk_validations_maxinteger

Maximum number of validations per import job. 0 allows no validation imports.

effective_limitinteger

Effective validation limit for the current cycle. It includes admin overrides and, on hybrid plans, the overage_enabled rule. This is the value used to decide whether a validation is served or rejected.

e.g. 500
is_stripeboolean

true when source is stripe.

e.g. true
stripe_subscription_idstring | nullnullable

Stripe subscription identifier (sub_...). null when source is not stripe.

e.g. sub_1OaBcDeFgHiJk2
grant_reasonstring | nullnullable

Reason recorded when the subscription was granted by an admin. null when source is not admin_granted.

e.g. cortesía soporte
cancel_at_period_endboolean

true when the subscription is scheduled to cancel at the end of the current cycle.

e.g. false
cancel_atstring | nullnullable

Date and time the cancellation is scheduled for, in ISO 8601 UTC. null when no cancellation is scheduled through cancel_at.

e.g. 2026-04-30T10:15:00Z
canceled_atstring | nullnullable

Date and time the cancellation took effect, in ISO 8601 UTC. null while the subscription is active.

e.g. 2026-04-30T10:15:00Z
trial_startstring | nullnullable

Date and time the trial period starts, in ISO 8601 UTC. null when there is no trial period.

e.g. 2026-04-30T10:15:00Z
trial_endstring | nullnullable

Date and time the trial period ends, in ISO 8601 UTC. null when there is no trial period.

e.g. 2026-04-30T10:15:00Z
metaobject

Response metadata including API version, route prefix, unique request identifier, and the server timestamp in UTC.

versionstring

API version that processed the request.

e.g. 1.47.0
api_versionstring

API route prefix version (e.g. v1).

e.g. v1
request_idstring

Unique request identifier (hex).

e.g. a1b2c3d4e5f66f5e4d3c2b1a
datetimeobject

Companion descriptor present in the meta block of every response (and in the meta of outgoing webhook bodies). Lets clients assert the timezone contract without re-reading the spec.

e.g. {"timezone":"UTC","format":"ISO 8601"}
timezone*string

Always UTC: The canonical timezone for every datetime field in the body.

e.g. UTC
format*string

Always ISO 8601: Explicit Z suffix on every datetime.

e.g. ISO 8601
linksobject

Pagination or related links, present only when the endpoint returns a paginated collection.

Response status codesGET /v1/billing/subscription
StatusClassDescriptionBody
2002xxUser's active subscription with plan, cycle, and quota.BillingSubscriptionResponse
4014xxAuthentication is required or the provided credentials are invalid.ErrorResponse
Errors from GET /v1/billing/subscription
StatusCodeExample
401unauthorized

Invalid or missing authentication credentials.

Envelope
meta.request_id
c4d5e6f7a8b99b8a7f6e5d4c