Skip to main content

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:

StatusBehavior
activeFull access
past_dueFull access during grace period
canceledAPI keys return 402 immediately

The grace period allows continued operation while payment issues are resolved.