Billing
Faces uses a credit-based billing system. Chat completions are billed against your credit balance in real time. Compile quota is allocated per plan and shared across all your faces.Check your balance
Subscription plans
| Plan | Price | Faces | OAuth routing |
|---|---|---|---|
| Free | $0 | Unlimited | — |
| Connect | $17/mo | Unlimited | OpenAI (chat + compile) |
Get current subscription
Subscribe to Connect
checkout_url to redirect the user to Stripe. After payment, the subscription is activated automatically.
Cancel subscription
Adding a payment method
Set up a saved card via Stripe Checkout:checkout_url. After completing the setup flow, your card is saved for automatic top-ups.
Top up credits
Charge saved card
Manual / test payment
Pass apayment_ref to record a pre-authorized payment:
Compile quota
Compile quota tracks tokens consumed during face compilation. It is separate from chat token usage.LLM pricing
Usage history
start_date/end_date— filter by date rangegroup_by— group results byllm_model,api_key_id, ormodel_username(face alias)
Invoices
Compile overflow
Allow compilation to continue past the quota limit, billing excess tokens to your credit balance:How chat costs are calculated
Each chat completion deducts from your credit balance:Credit account states
| State | Effect |
|---|---|
balance > 0 | Normal operation |
balance = 0 | Chat requests return 402 Payment Required |
is_frozen = true | All requests return 402 regardless of balance |
Compile thread billing errors
When starting or continuing an interview thread, a402 is returned if no payment source is available. The response body includes structured fields to help the UI display the right action:
| Field | Meaning |
|---|---|
needs_oauth | User should link their OpenAI account (Connect plan only) |
needs_credits | User should top up their credit balance |
plan | The user’s current plan |
502 is returned if the upstream LLM provider fails. This replaces the previous behavior where LLM failures were silently returned as a fake assistant message with status 200.