Billing & Credits
Manage subscriptions, purchase credits, and track billing — checkout, balance, invoices, and portal.
AskVerdict billing is powered by Stripe. All billing endpoints require authentication and operate on the currently signed-in user. Checkout endpoints return a Stripe-hosted URL - redirect the user to that URL to complete payment.
Authentication required
All billing endpoints require a valid session cookie or Authorization: Bearer <token> header. There is no public billing API.
Plans overview
| Plan | Price | Credits / Debates | Modes | API access | Team seats |
|---|---|---|---|---|---|
| Free | $0 | 10 on signup | All | No | 1 |
| Pro | $29/mo ($24/mo annual) | 500 credits/month | All | Yes | Up to 25 |
| BYOK | $19/mo | Unlimited (your keys) | All | Yes | Up to 5 |
| BYOK Pro | $39/mo | Unlimited (your keys) | All | Yes | Up to 10 |
Founding member offer
The first 100 users receive 1 month free Pro. The founding member discount is applied automatically at checkout when the offer is active - no coupon code required.
Credit costs
Credits are consumed when running debates using AskVerdict's hosted API keys. BYOK subscribers run debates against their own API keys and are not charged credits per debate.
| Mode | Credits per debate | Best for |
|---|---|---|
instant / quick_take | 1 credit | Rapid verdict in under 5 seconds |
fast | 1 credit | Quick decisions, lightweight questions |
balanced | 3 credits | Most debates - good depth and speed |
thorough | 8 credits | High-stakes decisions, comprehensive analysis |
compare | 5 credits | Evaluating 2-5 options against each other |
Credit packs
Credit packs are one-time purchases. Credits never expire.
| Pack | Credits | Price | Per credit |
|---|---|---|---|
credits_100 - Starter | 100 credits | $4.99 | $0.050 |
credits_500 - Standard | 500 credits | $19.99 | $0.040 |
credits_2000 - Power | 2000 credits | $59.99 | $0.030 |
BYOK subscription intervals
The BYOK and BYOK Pro subscriptions are billed monthly:
| Interval | BYOK | BYOK Pro |
|---|---|---|
monthly | $19 / month | $39 / month |
Endpoints
Create BYOK checkout session
/api/billing/checkout-sessionCreate a Stripe-hosted checkout URL for a BYOK subscription.
Creates a Stripe Checkout session for the BYOK plan. The response contains a url — redirect the user to it to complete the subscription purchase.
If this is the user's first purchase, a Stripe customer record is created automatically.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
interval | string | Required | Billing cadence. Must be: 'monthly'. |
Example request
curl -X POST https://api.askverdict.ai/api/billing/checkout-session \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "interval": "monthly" }'Response
Error responses
| Status | Code | Description |
|---|---|---|
400 | VALIDATION_ERROR | interval is missing or not one of the allowed values |
401 | UNAUTHORIZED | Not authenticated |
503 | BILLING_NOT_CONFIGURED | BYOK subscription pricing is not configured on this server |
Create BYOK Pro checkout session
/api/billing/checkout-session-proCreate a Stripe-hosted checkout URL for a BYOK Pro subscription.
Identical to the BYOK checkout endpoint but starts a BYOK Pro subscription, which unlocks decision matrix, convergence scores, argument graph heatmap, file upload + storage, and up to 10 team seats.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
interval | string | Required | Billing cadence. Must be: 'monthly'. |
Example request
curl -X POST https://api.askverdict.ai/api/billing/checkout-session-pro \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "interval": "monthly" }'Response
Error responses
| Status | Code | Description |
|---|---|---|
400 | VALIDATION_ERROR | interval is missing or not one of the allowed values |
401 | UNAUTHORIZED | Not authenticated |
503 | BILLING_NOT_CONFIGURED | BYOK Pro subscription pricing is not configured on this server |
Create credit pack checkout session
/api/billing/credit-checkoutCreate a Stripe-hosted checkout URL for a one-time credit pack purchase.
Creates a Stripe Checkout session for a one-time credit pack payment. Credits are added to the user's balance automatically via Stripe webhook after payment succeeds.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
pack | string | Required | Credit pack identifier. One of: 'credits_100' (100 credits, $4.99), 'credits_500' (500 credits, $19.99), 'credits_2000' (2000 credits, $59.99). |
Example request
curl -X POST https://api.askverdict.ai/api/billing/credit-checkout \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "pack": "credits_100" }'Response
Credit delivery
Credits are credited to your balance asynchronously via Stripe webhook. There may be a few seconds delay between completing the Stripe checkout and seeing your updated balance. Poll GET /api/billing/balance or refresh your billing page after returning from checkout.
Error responses
| Status | Code | Description |
|---|---|---|
400 | VALIDATION_ERROR | pack is missing or not one of the allowed values |
401 | UNAUTHORIZED | Not authenticated |
503 | BILLING_NOT_CONFIGURED | Credit pack pricing is not configured on this server |
Get credit balance
/api/billing/balanceReturn the current user's credit balance and active plan.
Returns a fresh read from the database — this always reflects the most current state, not a cached value.
Example request
curl https://api.askverdict.ai/api/billing/balance \
-H "Authorization: Bearer <token>"Response
The plan field is one of: "free", "starter", "pro", "byok", "byok_pro", "enterprise".
Error responses
| Status | Code | Description |
|---|---|---|
401 | UNAUTHORIZED | Not authenticated |
404 | USER_NOT_FOUND | Authenticated user record not found |
Open Stripe Customer Portal
/api/billing/portal-sessionCreate a Stripe Customer Portal session to manage subscriptions and payment methods.
Returns a Stripe-hosted Customer Portal URL. Use it to let users cancel subscriptions, update payment methods, download past invoices, and manage billing details — all handled by Stripe's secure portal.
Requires an existing billing account
This endpoint only works if the user has previously completed at least one checkout session (subscription or credit pack). Users who have never purchased anything will receive a NO_STRIPE_CUSTOMER error.
Example request
curl -X POST https://api.askverdict.ai/api/billing/portal-session \
-H "Authorization: Bearer <token>"Response
Error responses
| Status | Code | Description |
|---|---|---|
400 | NO_STRIPE_CUSTOMER | User has no billing account (no prior purchases) |
401 | UNAUTHORIZED | Not authenticated |
Invoices
Invoice records are written to your AskVerdict account automatically when Stripe webhooks confirm a payment. Each invoice has a link to the Stripe-hosted invoice page and/or a receipt URL.
List invoices
/api/invoicesList all invoices for the current user, paginated.
Returns invoices ordered by most recent first. Optionally filter to a specific workspace.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
page | number | Optional | Page number (1-based). Default: 1. |
limit | number | Optional | Results per page. Default: 20. Max: 50. |
workspaceId | string | Optional | Filter invoices to a specific workspace. |
Example request
curl "https://api.askverdict.ai/api/invoices?page=1&limit=20" \
-H "Authorization: Bearer <token>"Response
Invoice fields
| Field | Type | Description |
|---|---|---|
id | string | Invoice ID |
type | string | Invoice type: "subscription" or "credit_pack" |
description | string | Human-readable description |
amountCents | number | Amount charged in cents (e.g. 1900 = $19.00) |
currency | string | ISO 4217 currency code (e.g. "usd") |
status | string | Payment status: "paid", "open", "void", "uncollectible" |
workspaceId | string | null | Set if this invoice belongs to a workspace |
stripeInvoiceUrl | string | null | Link to the Stripe-hosted invoice page |
stripeReceiptUrl | string | null | Link to the Stripe receipt |
metadata | object | Additional data (e.g. creditAmount, creditPack for pack purchases) |
createdAt | string | ISO 8601 timestamp |
Error responses
| Status | Code | Description |
|---|---|---|
401 | UNAUTHORIZED | Not authenticated |
Get invoice
/api/invoices/:idGet a single invoice by ID.
Returns full invoice details including Stripe payment intent and session IDs. Only returns invoices belonging to the authenticated user.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The invoice ID. |
Example request
curl https://api.askverdict.ai/api/invoices/inv_abc123 \
-H "Authorization: Bearer <token>"Response
The single-invoice response includes additional Stripe identifiers not present in the list response:
| Extra field | Type | Description |
|---|---|---|
stripePaymentIntentId | string | null | Stripe PaymentIntent ID (pi_...) |
stripeSessionId | string | null | Stripe Checkout Session ID (cs_...) |
stripeInvoiceId | string | null | Stripe Invoice ID (in_...) |
Error responses
| Status | Code | Description |
|---|---|---|
401 | UNAUTHORIZED | Not authenticated |
404 | NOT_FOUND | Invoice not found or does not belong to this user |
Plan feature matrix
| Feature | Free | Pro | BYOK | BYOK Pro | Enterprise |
|---|---|---|---|---|---|
| Credits / debates | 10 on signup | 500/mo | Unlimited (own keys) | Unlimited (own keys) | Custom |
| All debate modes | Yes | Yes | Yes | Yes | Yes |
| Quick Take | Yes | Yes | Yes | Yes | Yes |
| Verdict Compare | Yes | Yes | Yes | Yes | Yes |
| API access | No | Yes | Yes | Yes | Yes |
| CLI & SDK | No | Yes | Yes | Yes | Yes |
| Evidence engine | No | Yes | No | Yes | Yes |
| Decision matrix | No | Yes | No | Yes | Yes |
| Convergence scores | No | Yes | No | Yes | Yes |
| Argument graph heatmap | No | Yes | No | Yes | Yes |
| File upload + storage | No | Yes | No | Yes | Yes |
| Advanced audit logs | No | Yes | No | Yes | Yes |
| Team seats | 1 | Up to 25 | Up to 5 | Up to 10 | Unlimited |
| SSO / SAML | No | No | No | No | Yes |
| Custom SLA | No | No | No | No | Yes |
Enterprise
For enterprise pricing, custom SLAs, dedicated support, and on-premise options, contact support@askverdict.ai.
Was this page helpful?