Get workspace subscription and billing status
What is Subscription Status? Subscription Status provides comprehensive information about your workspace subscription, billing details, and payment information. This endpoint returns all data needed to display subscription management interfaces, including current plan details, upcoming invoices, payment history, and feature availability.
What data is returned:
Core Subscription Information:
- billingMode: The workspace billing tier (free, regular, or enterprise)
- billingStatus: Current subscription status (active, trialing, canceled, etc.)
- planCode: The specific plan identifier
- billingInterval: Billing frequency (monthly or yearly)
- features: List of enabled workspace features
- featuresInfo: Detailed feature information with pricing for each enabled feature
Stripe Integration:
- stripeCustomerId: Stripe customer identifier (null for free workspaces)
- stripeSubscriptionId: Stripe subscription identifier (null for free workspaces)
- hasPaymentMethod: Whether a payment method is on file
Trial Information:
- trialEnd: End date of trial period (null if not in trial)
Subscription Details (Enterprise workspaces only):
- status: Current subscription status from Stripe
- currentPeriodStart/End: Current billing period dates
- items: List of subscription items with product names, quantities, and pricing
- dashboardUrl: Direct link to Stripe dashboard for this subscription
Invoice Information (Paid workspaces only):
- nextInvoice: Preview of upcoming invoice with:
- Line items with descriptions and quantities
- Subtotal, tax, and total amounts
- Tax breakdown by rate
- Due date
- latestInvoices: Up to 5 most recent invoices with:
- Invoice number and status
- Amount and currency
- Payment dates and due dates
- Direct links to view invoices
Seat Management:
- billableUsersCount: Current number of billable users
- committedSeats: Seats currently committed for billing
- pendingSeats: Seats scheduled to be added in next period
- pendingEffectiveAt: When pending seats become effective
Cancellation Information:
- cancelAtPeriodEnd: Whether subscription will cancel at period end
- cancellationEffectiveAt: When cancellation becomes effective
- cancellationRequestedAt: When cancellation was requested
- cancellationReason: Reason provided for cancellation
Billing Interval Changes:
- nextBillingInterval: Scheduled billing interval change (if any)
- billingIntervalChangeScheduled: When the change takes effect
- stillAvailableFeatures: Features that remain available after interval change
Important Notes:
- This is a read-only endpoint - it does not modify subscription state
- Free workspaces return basic information without Stripe details
- Enterprise workspaces include detailed Stripe subscription information
- Trial workspaces may have limited invoice history
- All monetary amounts are in cents (divide by 100 for display)
- Dates are returned in ISO 8601 format
GET
/administration/subscription-statusAuthorization
AuthorizationOAuth2 access token · headerrequiredScopes:
api:reador
AuthorizationBearer token (JWT) · headerrequiredResponses
200
billableUsersCountnumberCurrent number of billable users in the workspace. This is the count of users who are counted toward seat-based billing. Only present for paid workspaces.
billingIntervalstringBilling frequency. Values: "monthly" (billed every month), "yearly" (billed annually with potential discount). Only present for paid workspaces.
Allowed:
monthyearbillingIntervalChangeScheduledobject | nullDate when a scheduled billing interval change will take effect. ISO 8601 format. Null if no interval change is scheduled.
billingModestringrequiredWorkspace billing tier. Values: "free" (no paid subscription), "regular" (standard paid subscription), "enterprise" (custom enterprise agreement). Determines what features and billing details are available.
Allowed:
freeregularenterprisebillingStatusstringCurrent subscription status. Values: "active" (subscription is active and paid), "trialing" (in trial period), "past_due" (payment failed), "canceled" (subscription canceled), "unpaid" (payment required). Only present for paid workspaces.
Allowed:
trialingactivepast_duecanceledcancelAtPeriodEndobject | nullWhether the subscription is scheduled to cancel at the end of the current billing period. True means subscription will cancel automatically, false means it will renew. Null if cancellation status is unknown.
cancellationEffectiveAtobject | nullDate when the subscription cancellation becomes effective. ISO 8601 format. This is typically the end of the current billing period. Null if subscription is not scheduled to cancel.
cancellationReasonobject | nullReason provided by the user when requesting cancellation. May include feedback about why they are canceling. Null if no reason was provided or cancellation was not user-initiated.
cancellationRequestedAtobject | nullDate when the cancellation was requested by the user. ISO 8601 format. Null if cancellation has not been requested.
committedSeatsnumberNumber of seats currently committed and being billed for. This is the base seat count in the subscription. Only present for paid workspaces.
featuresstring[]List of workspace features currently enabled. Each feature code represents a capability or add-on that is active (e.g., customFields, advancedReports, apiAccess). Empty array for free workspaces.
featuresInfoFeatureInfoDto[]Detailed information about each enabled feature including pricing, labels, and descriptions. Useful for displaying feature lists with pricing in subscription management interfaces. Only present for paid workspaces.
Show propertiesHide properties
Array of
FeatureInfoDtocurrencystringrequiredISO 4217 currency code (e.g., USD, EUR, GBP). All prices are in this currency.
descriptionstringOptional description explaining what this feature provides and how it benefits the workspace.
enabledbooleanrequiredWhether this feature is currently enabled and active for the workspace. Disabled features are not available for use.
featureCodestringrequiredFeature code identifier. Identifies which workspace feature this information applies to (e.g., customFields, advancedReports, apiAccess).
Allowed:
HELPDESKAPIAGENTlabelstringrequiredHuman-readable display label for the feature. Localized based on workspace language settings.
monthlyPriceobject | nullrequiredMonthly subscription price for this feature in cents. Multiply by 100 to get the display amount. Null if feature is not available on monthly billing.
yearlyPriceobject | nullrequiredYearly subscription price for this feature in cents. Multiply by 100 to get the display amount. Null if feature is not available on yearly billing.
hasPaymentMethodbooleanWhether the workspace has a valid payment method on file with Stripe. True means payment can be processed automatically, false means payment method needs to be added. Only present for paid workspaces.
latestInvoicesLatestInvoiceDto[] | nullList of up to 5 most recent invoices. Includes invoice numbers, amounts, payment status, and direct links to view invoices. Only available for paid workspaces. Empty array for free workspaces or trial workspaces without payment history.
Show propertiesHide properties
Array of
LatestInvoiceDtoamountnumberrequiredTotal amount due for this invoice in cents. Multiply by 100 to get the display amount. This is the amount that was or will be charged.
createdstring<date-time>requiredDate and time when the invoice was created. ISO 8601 format.
currencystringrequiredISO 4217 currency code (e.g., USD, EUR, GBP). All amounts for this invoice are in this currency.
dueDateobject | nullrequiredDate when payment was or is due for this invoice. ISO 8601 format. Null if due date is not applicable.
idstringrequiredUnique Stripe invoice identifier. Use this to reference the invoice in Stripe API calls or support requests.
numberstringrequiredHuman-readable invoice number. This is the invoice number displayed to customers and used for accounting purposes.
paidAtobject | nullrequiredDate and time when the invoice was successfully paid. ISO 8601 format. Null if invoice is not yet paid or payment failed.
statusstringrequiredCurrent status of the invoice. Common values: "paid" (successfully paid), "open" (awaiting payment), "void" (canceled), "uncollectible" (payment failed).
viewUrlstringrequiredDirect URL to view this invoice in Stripe customer portal. Opens the invoice in a web browser. Use this to allow customers to view or download their invoices.
nextBillingIntervalstring | nullBilling interval that will take effect in the next billing cycle. Values: "monthly" or "yearly". Null if no interval change is scheduled. Only present when user has requested to switch between monthly and yearly billing.
Allowed:
monthyearnextInvoiceobject | nullPreview of the upcoming invoice that will be generated at the next billing cycle. Includes line items, taxes, and totals. Only available for paid workspaces with active subscriptions. Null for free workspaces or if preview cannot be generated.
Show propertiesHide properties
currencystringrequiredISO 4217 currency code (e.g., USD, EUR, GBP). All amounts are in this currency.
dueDateobject | nullrequiredDate when payment is due for this invoice. ISO 8601 format. Null if due date is not yet determined.
linesInvoiceLineDto[]requiredAll line items that will appear on the upcoming invoice. Includes base plan, seats, add-ons, and any other charges.
Show propertiesHide properties
Array of
InvoiceLineDtoamountExcludingTaxnumberTotal amount excluding tax in cents. Only present if tax is applied. Multiply by 100 to get the display amount.
descriptionstringrequiredHuman-readable description of what this line item represents. Examples: "Leadtime Pro Plan - Monthly", "Additional Seats (5)", "Setup Fee".
quantitynumberrequiredQuantity of this item. For seat-based billing, this represents the number of seats. For fixed-price items, typically 1.
taxesTaxInfoDto[]Tax information specific to this line item. Multiple tax rates may apply to a single line item in some jurisdictions.
Show propertiesHide properties
Array of
TaxInfoDtoamountnumberrequiredTax amount in cents. Multiply by 100 to get the display amount. This is the total tax for this specific tax line.
descriptionstringrequiredHuman-readable description of the tax. Typically includes the tax type and jurisdiction (e.g., "VAT", "Sales Tax", "GST").
percentagenumberTax rate percentage (e.g., 19.0 for 19% VAT). Optional - may not be available for all tax types.
totalAmountnumberrequiredTotal amount for this line item in cents (unitAmount × quantity, including any discounts). Multiply by 100 to get the display amount.
unitAmountobject | nullrequiredPrice per unit in cents before quantity multiplication. Multiply by 100 to get the display amount. Null if this is a fixed total amount line item.
periodEndobject | nullrequiredEnd date of the billing period this invoice covers. ISO 8601 format. Null if period information is not available.
periodStartobject | nullrequiredStart date of the billing period this invoice covers. ISO 8601 format. Null if period information is not available.
subtotalnumberrequiredSubtotal amount in cents before taxes and discounts. Multiply by 100 to get the display amount. Sum of all line item totals.
subtotal_excluding_taxnumberSubtotal excluding tax in cents. Only present if tax is applied. Multiply by 100 to get the display amount.
taxnumberrequiredTotal tax amount in cents. Multiply by 100 to get the display amount. Sum of all tax line amounts.
taxLinesTaxLineDto[]requiredAll tax lines that will appear on the invoice. Each line represents a different tax rate or tax type.
Show propertiesHide properties
Array of
TaxLineDtoamountnumberrequiredTotal tax amount for this tax line in cents. Multiply by 100 to get the display amount. This is the sum of all taxes at this rate.
descriptionstringrequiredHuman-readable description of the tax line. Typically includes tax type and jurisdiction.
rateobjectDetailed tax rate information including display name and percentage. Optional - may not be available for all tax types.
Show propertiesHide properties
displayNamestringrequiredHuman-readable name for this tax rate. Examples: "VAT", "Sales Tax", "GST".
percentagenumberrequiredTax rate as a percentage. Example: 19.0 represents 19% tax. Used to calculate tax amounts.
totalnumberrequiredFinal total amount due in cents including all line items and taxes. Multiply by 100 to get the display amount. This is the amount that will be charged.
total_excluding_taxnumberTotal amount excluding tax in cents. Only present if tax is applied. Multiply by 100 to get the display amount.
pendingEffectiveAtobject | nullDate when pending seat changes become effective. ISO 8601 format. Null if no seat changes are pending. Only present for paid workspaces.
pendingSeatsobject | nullNumber of additional seats scheduled to be added in the next billing period. Null if no seat changes are pending. Only present for paid workspaces.
planCodestringSpecific plan identifier. Identifies which subscription plan the workspace is on (e.g., "pro", "team", "enterprise"). Only present for paid workspaces.
Allowed:
regularstillAvailableFeaturesstring[]List of features that will remain available after a billing interval change. Some features may be restricted when switching from yearly to monthly billing. Empty array if no interval change is scheduled or all features remain available.
stripeCustomerIdobject | nullStripe customer identifier. Used to reference this workspace in Stripe API calls. Null for free workspaces or if Stripe integration is not set up.
stripeSubscriptionIdobject | nullStripe subscription identifier. Used to reference the active subscription in Stripe API calls. Null for free workspaces or if no active subscription exists.
subscriptionDetailsobject | nullDetailed subscription information from Stripe including status, billing period, and subscription items. Only available for enterprise workspaces with active Stripe subscriptions. Null for free or regular workspaces.
Show propertiesHide properties
currentPeriodEndstring<date-time>requiredEnd date of the current billing period. ISO 8601 format. This is when the current billing cycle ends and the next invoice will be generated.
currentPeriodStartstring<date-time>requiredStart date of the current billing period. ISO 8601 format. This is when the current billing cycle began.
dashboardUrlstringrequiredDirect URL to view and manage this subscription in the Stripe dashboard. Opens in a new window/tab. Only available for enterprise workspaces.
itemsSubscriptionItemDto[]requiredList of all items included in this subscription. Each item represents a product or service being billed (e.g., base plan, additional seats, add-ons).
Show propertiesHide properties
Array of
SubscriptionItemDtocurrencystringrequiredISO 4217 currency code (e.g., USD, EUR, GBP). All amounts for this item are in this currency.
intervalobject | nullrequiredBilling interval for this item. Values: "month" for monthly billing, "year" for yearly billing. Null if not applicable.
productNamestringrequiredProduct name from Stripe. Identifies what is being billed (e.g., "Leadtime Pro Plan", "Additional Seats").
quantitynumberrequiredQuantity of this item in the subscription. For seat-based billing, this represents the number of seats.
totalAmountnumberrequiredTotal amount for this line item in cents (unitAmount × quantity). Multiply by 100 to get the display amount.
unitAmountnumberrequiredPrice per unit in cents. Multiply by 100 to get the display amount. This is the price for a single unit before quantity multiplication.
statusstringrequiredCurrent subscription status from Stripe. Common values: "active" (subscription is active and paid), "trialing" (in trial period), "past_due" (payment failed), "canceled" (subscription canceled), "unpaid" (payment required).
trialEndobject | nullEnd date of the trial period. ISO 8601 format. Null if workspace is not in trial or trial has ended. After this date, subscription will convert to paid or cancel.
401Unauthorized - Invalid or missing authentication token
403Forbidden - Insufficient API scopes or permissions
Request
curl -X GET "https://leadtime.app/api/public/administration/subscription-status" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"const response = await fetch("https://leadtime.app/api/public/administration/subscription-status", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
});import requests
response = requests.get(
"https://leadtime.app/api/public/administration/subscription-status",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
},
)Response
{
"billableUsersCount": 0,
"billingInterval": "month",
"billingIntervalChangeScheduled": {},
"billingMode": "free",
"billingStatus": "trialing",
"cancelAtPeriodEnd": {},
"cancellationEffectiveAt": {},
"cancellationReason": {},
"cancellationRequestedAt": {},
"committedSeats": 0,
"features": [
"HELPDESK"
],
"featuresInfo": [
{
"currency": "string",
"description": "string",
"enabled": true,
"featureCode": "HELPDESK",
"label": "string",
"monthlyPrice": {},
"yearlyPrice": {}
}
],
"hasPaymentMethod": true,
"latestInvoices": [
{
"amount": 0,
"created": "2024-01-01T00:00:00Z",
"currency": "string",
"dueDate": {},
"id": "string",
"number": "string",
"paidAt": {},
"status": "string",
"viewUrl": "string"
}
],
"nextBillingInterval": "month",
"nextInvoice": {
"currency": "string",
"dueDate": {},
"lines": [
{
"amountExcludingTax": 0,
"description": "string",
"quantity": 0,
"taxes": [
{
"amount": 0,
"description": "string",
"percentage": 0
}
],
"totalAmount": 0,
"unitAmount": {}
}
],
"periodEnd": {},
"periodStart": {},
"subtotal": 0,
"subtotal_excluding_tax": 0,
"tax": 0,
"taxLines": [
{
"amount": 0,
"description": "string",
"rate": {
"displayName": "string",
"percentage": 0
}
}
],
"total": 0,
"total_excluding_tax": 0
},
"pendingEffectiveAt": {},
"pendingSeats": {},
"planCode": "regular",
"stillAvailableFeatures": [
"HELPDESK"
],
"stripeCustomerId": {},
"stripeSubscriptionId": {},
"subscriptionDetails": {
"currentPeriodEnd": "2024-01-01T00:00:00Z",
"currentPeriodStart": "2024-01-01T00:00:00Z",
"dashboardUrl": "string",
"items": [
{
"currency": "string",
"interval": {},
"productName": "string",
"quantity": 0,
"totalAmount": 0,
"unitAmount": 0
}
],
"status": "string"
},
"trialEnd": {}
}Unauthorized - Invalid or missing authentication token
Forbidden - Insufficient API scopes or permissions