Tuned Tensor

Billing & credits

Tuned Tensor includes a free monthly fine-tuning quota, a Pro subscription with included compute credits, and prepaid credits when you need more. Inference, evals, model downloads, and local serving are currently free; only successful paid fine-tuning runs and auto-tune iterations consume credits.

Free plan

New accounts start on Free with 10 small fine-tuning runs each calendar month, no card required. A run can use free quota when it uses a free-eligible small base model, has at most 5,000 dataset rows, and is estimated below 2M training tokens.

Free quota is for direct fine-tuning runs. Auto-tune sessions, teacher labeling jobs, oversized datasets, and larger models are outside the free quota.

Pro plan

Pro is $9.00/month and grants $25.00 in monthly compute credits when Stripe confirms the subscription invoice. These credits live in the same balance as prepaid top-ups and are consumed by larger paid runs. Auto-tune is Pro-only because multi-iteration training cost is harder to control.

How a run is priced

Successful run 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 paid runs are free. The dashboard and CLI show whether a run will use Free quota or credits before you start it.

Typical costs

  • Small smoke tests are usually under $2.
  • Serious small-model pilots are often $10-$30.
  • Auto-tune sessions estimate the worst-case cost upfront and only charge completed successful iterations.

Settlement

When you start a run, Tuned Tensor internally protects the estimated cost so concurrent runs cannot overspend the same credit balance. Settlement resolves in one of three ways:

  • Successful run — the charge is settled at the provider-reported actual cost.
  • Failed or cancelled run — no charge is posted.
  • Provider-cost overage — when actual training tokens exceed the estimate, we post the difference as a separate adjustment entry. 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 requires Pro. Sessions estimate the worst-case cost (max iterations × per-iter estimate) before they start. Each completed iteration settles its actual cost; if auto-tune converges early, hits its iteration cap, fails, or is cancelled, unstarted iterations are not charged.

Rate card

Per 1M training tokens, per epoch.

ModelSizePrice
google/gemma-4-E2B-itE2B$0.45
Qwen/Qwen3.5-2B2B$0.45
ibm-granite/granite-3.3-2b-instruct2B$0.45
Qwen/Qwen3-VL-2B-Instruct2B VL$0.55
meta-llama/Llama-3.2-3B-Instruct3B$0.55
bigcode/starcoder2-3b3B$0.55
google/gemma-4-E4B-itE4B$0.70
Qwen/Qwen3.5-4B4B$0.70
microsoft/Phi-4-mini-instruct3.8B$0.70

Adding more credits

When you need more than your free quota or included Pro credits, top up via Stripe Checkout. There's 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 + ledger

API endpoints

Programmatic access for self-serve integrations. All endpoints require an API key (Authorization: Bearer <api-key>).

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. Product surfaces should show this as the user's credit balance.reserved_cents and available_cents are returned for clients that need operational billing details, but most UI should not show that split.

The response also includes the current plan and free-run usage:

{
  "data": {
    "plan": { "plan": "free", "status": "active" },
    "free_runs": {
      "used_count": 3,
      "remaining_count": 7,
      "monthly_limit": 10,
      "period_start": "2026-06-01"
    }
  }
}

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://tunedtensor.com/api/v1/billing/topup \
  -H "Authorization: Bearer <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 credit balance returns 402 insufficient_credits:

{
  "error": {
    "code": "insufficient_credits",
    "message": "This run is estimated at $0.42 but you have $0.10 available.",
    "required_cents": 42,
    "available_cents": 10,
    "topup_url": "/dashboard/billing"
  }
}

POST /v1/billing/subscribe

Returns a Stripe Checkout URL for Pro. The client should redirect the user to the URL; on success the user is sent back to /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