Billing & credits
Tuned Tensor uses prepaid credits — you top up an amount, and we debit from your balance as you fine-tune. There are no subscriptions, tiers, or monthly run limits. Inference and evals are currently free; only fine-tuning runs and auto-tune iterations consume credits.
Starting balance
New accounts start at a zero balance. Add prepaid credits before starting a run or auto-tune session.
How a run is priced
Cost is calculated from three inputs: number of training epochs, the number of training tokens reported by the underlying provider, and the per-model rate from the rate card.
cost_cents = ceil(epochs × training_tokens × model_rate_per_mtok / 1_000_000)We charge once per run, on successful completion only, using the provider-reported token count for accuracy. Failed and cancelled runs are free. The dashboard and CLI show an estimated cost before you start a run, computed from your dataset character count.
Holds & settlement
When you start a run we place a credit hold for the estimated cost so concurrent runs cannot overspend the same balance. Your spendable balance is available_cents = balance_cents − reserved_cents; the balance API returns all three. Holds resolve in one of three ways:
- Successful run — the held amount is settled at the provider-reported actual cost.
- Failed or cancelled run — the entire hold is released back to your spendable balance.
- Provider-cost overage — when actual training tokens exceed the estimate, we settle the held amount and post the difference as a separate
adjustmententry. This can temporarily take your balance below zero; top up to bring it back and start a new run. We never silently skip billing for a run the provider already executed.
Auto-tune
Auto-tune sessions hold the worst-case cost (max iterations × per-iter estimate) for the duration of the session. Each completed iteration settles its actual cost out of that hold; if auto-tune converges early, hits its iteration cap, fails, or is cancelled, the unused remainder is released immediately.
Rate card
Per 1M training tokens, per epoch.
| Model | Size | Price |
|---|---|---|
meta-llama/Llama-3.2-3B-Instruct | 3B | $0.60 |
Qwen/Qwen3.5-4B | 4B | $0.80 |
meta-llama/Meta-Llama-3.1-8B-Instruct-Reference | 8B | $1.40 |
Qwen/Qwen3.5-9B | 9B | $1.60 |
google/gemma-3-12b-it | 12B | $2.20 |
Qwen/Qwen3.5-35B-A3B | 35B-A3B (MoE) | $2.40 |
deepseek-ai/DeepSeek-R1-Distill-Qwen-14B | 14B | $2.40 |
mistralai/Mixtral-8x7B-Instruct-v0.1 | 8x7B (MoE) | $3.20 |
meta-llama/Llama-4-Scout-17B-16E-Instruct | 17Bx16E (MoE) | $3.60 |
google/gemma-3-27b-it | 27B | $3.80 |
Qwen/Qwen3.5-122B-A10B | 122B-A10B (MoE) | $4.80 |
meta-llama/Llama-3.3-70B-Instruct-Reference | 70B | $8.00 |
Adding credits
Top up via Stripe Checkout — there's no card on file and no auto-recharge. Min $5.00, max $10000 per transaction. Quick-pick amounts:
- $10.00
- $25.00
- $50.00
- $100
You can also enter a custom amount.
From the dashboard
Go to Dashboard → Billing and click a preset tile or enter a custom amount.
From the CLI
tt topup --amount 25 # opens Stripe Checkout in your browser
tt balance # check your current balance + ledgerAPI endpoints
Programmatic access for self-serve integrations. All endpoints require an API key (Authorization: Bearer tt_...).
GET /v1/billing/balance
{
"data": {
"balance_cents": 1342,
"reserved_cents": 200,
"available_cents": 1142,
"lifetime_topup_cents": 5000
}
}balance_cents is the total prepaid balance. reserved_cents is the sum of credit holds taken by active runs and auto-tune sessions. available_cents is what new runs can spend. API clients should use available_cents for start-run preflight checks and low balance warnings, not balance_cents; a user can have a positive total balance while active reservations leave too little available balance for another run.
GET /v1/billing/transactions
Paginated ledger (top-ups, run debits, refunds, adjustments). Supports page and per_page.
POST /v1/billing/topup
Returns a Stripe Checkout URL. The client should redirect the user to the URL; on success the user is sent back to /dashboard/billing.
curl -X POST https://api.tunedtensor.com/v1/billing/topup \
-H "Authorization: Bearer tt_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "amount_cents": 2500 }'
# {
# "data": {
# "checkout_url": "https://checkout.stripe.com/c/pay/cs_test_...",
# "session_id": "cs_test_..."
# }
# }Insufficient credits (402)
Starting a run or auto-tune session with too little available balance returns 402 insufficient_credits. This can happen even when balance_cents is positive because active runs may have reserved those credits:
{
"error": {
"code": "insufficient_credits",
"message": "This run is estimated at $0.42 but you have $0.10 available.",
"details": {
"required_cents": 42,
"available_cents": 10,
"topup_url": "/dashboard/billing"
}
}
}Top up and retry. The estimate uses your dataset size pre-flight; the final charge uses real provider token counts at completion.
Refunds & expiration
- Credits never expire while your account is active.
- Failed and cancelled runs are not charged.
- Unused credits are refundable to the original payment method within 30 days of top-up — email support@tunedtensor.com with your account email.
See also
- Pricing page — the public rate card and FAQ
- Runs reference — run lifecycle and the 402 response
ttCLI —tt balanceandtt topup