Billing & Subscriptions
Manage your subscription, upgrade tiers, and access the Stripe billing portal.
Get subscription status
GET /billing/subscription
Auth: Bearer JWT (any role)
{
"status": "active",
"tier": "pro",
"current_period_start": "2026-03-04T00:00:00Z",
"current_period_end": "2026-04-04T00:00:00Z",
"cancel_at_period_end": false
}
Subscription statuses: active, trialing, past_due, unpaid, canceled, incomplete
Create a checkout session
POST /billing/checkout
Auth: Bearer JWT (admin)
Initiates a Stripe Checkout session for tier upgrades.
{
"price_id": "price_1234567890",
"success_url": "https://app.haltless.io/settings?billing=success",
"cancel_url": "https://app.haltless.io/settings?billing=cancel"
}
Response:
{
"checkout_url": "https://checkout.stripe.com/c/pay/..."
}
Redirect the user to checkout_url to complete the payment.
Billing portal
POST /billing/portal
Auth: Bearer JWT (admin)
Opens the Stripe Customer Portal for managing payment methods, invoices, and cancellation.
{
"return_url": "https://app.haltless.io/settings"
}
Response:
{
"url": "https://billing.stripe.com/p/session/..."
}
Grace period
When a payment fails, your subscription enters a grace period:
| Status | Behavior |
|---|---|
active | Full access |
past_due | Full access during grace period |
canceled | API keys return 402 immediately |
The grace period allows continued operation while payment issues are resolved.