Skip to main content

How billing works

EcoLink has a single credit balance per account. You top it up, it goes down as you use the platform, you top it up again. No per-resource invoices, no monthly subscription — just one wallet.

Adding credit

There are three ways to put money in the wallet:

PathWhen to useMore info
Manual top-upAnytime, $1–$1,000 per transactionAdding credit
Auto-recharge"Never let me run out" — saved card charged automatically when balance dips below a thresholdAuto-recharge
Enterprise contractNET-30 invoice, wire / ACH, custom SLAs, $X,XXX+/month commitmentsEnterprise

For most teams the manual top-up + auto-recharge combo is the right setup.

What the credit pays for

The wallet balance is spent against:

  • API calls to platform models (per-token, per-image, per-second of audio / video)
  • API calls to your model instances (per-request to instances you've launched)
  • GPU instances and clusters you've launched (per-GPU-hour × duration held)
  • Model instances (per-GPU-hour, 24h holds, auto-renewing)
  • Storage (per-GB-day, daily charge)

Your current balance is always visible on the Billing page.

Three billing patterns

EcoLink uses three different billing patterns depending on resource type — each fits the resource's lifecycle.

Pattern 1: Per-request (API calls)

Applies to: platform model inference, user inference instance API calls.

When you call /v1/chat/completions (or any API endpoint), EcoLink charges the request's cost immediately against your balance:

  • LLM / embeddings / reranker: per-token
  • Image generation: per-image
  • Audio: per-second (TTS: text-length → audio duration; STT: input audio duration)
  • Video: per-second of generated video

You see a api_usage row on the Billing page per request (or aggregated for bulk visibility).

Pattern 2: Prepaid hold (GPU instances, clusters, inference)

Applies to: GPU instances (1h+ hold for estimated duration), GPU clusters (same), user inference instances (24h hold, auto-renewing).

The hold is reserved upfront — a gpu_usage -$X row appears as soon as you launch. When the resource stops (or every 24h for inference), the hold is settled:

  • If actual uptime < hold window: refund the unused portion (refund +$X row)
  • If actual uptime > hold window: rare — the cycle already re-held before this case, see User inference cost and lifecycle

See Balance and transactions for what the ledger looks like.

Pattern 3: Daily charge (storage)

Applies to: cloud drives and shared filesystems.

Once a day (midnight UTC), EcoLink charges size_gb × daily_rate per storage resource. Charge appears as a storage_billing -$X ledger row with a description naming the drive/filesystem.

Storage charges continue as long as the resource exists, whether attached to a running instance or idle. Delete storage you don't need.

When balance runs low

Progressive warnings

As your aggregate burn rate (sum of hourly costs across running resources) approaches your remaining balance, EcoLink sends notifications at: 60 min, 30 min, 20 min, 10 min, 5 min, 3 min, 1 min remaining.

Notifications appear as a red dot on the bell icon in the console top bar and on the Messages page.

At $0 balance

  • GPU instances / clusters: terminated immediately, termination_reason='credit_depleted'
  • User inference instances: terminated on the next 24h cycle boundary (balance = $0 means we can't create a new hold, so we stop instead)
  • API calls: return 402 Payment Required
  • Storage: suspended. Data is not deleted; storage is just disconnected from running instances. Top up and the storage becomes usable again.

Prepaid wallet — the model

EcoLink is prepaid at the balance level, but on-demand at the resource level. You add credit upfront, then spend it as you go. No long-term commitment, no per-month subscription for individual resources. Scale up, scale to zero — you only spend what you actually use.

For predictable monthly billing tied to a procurement cycle, enterprise contracts let you switch from card payments to NET-30 invoicing without changing the underlying credit model — the wallet still funds usage; the contract just changes how the wallet gets topped up.

Refunds

  • Automatic for any unused portion of a hold (when instances stop early)
  • Automatic when an admin issues a refund from the Stripe dashboard — appears as a negative refund row in your ledger within a few seconds
  • Manual on billing errors that don't fit the above: ping the #ecolink-support Slack channel with the transaction ID

We don't refund general account credit on request — once on your balance, credit is for EcoLink resources, with no cash-back. Refunds against specific charges (a billing error, a duplicate top-up) are handled case-by-case.

Next steps