Skip to content

Balance and billing

Kyvalt is prepaid. You deposit USDC, and each request is charged from that balance at the price of the offer that served it. There is no subscription, no monthly minimum and no card on file.

Adding funds

  • Your account has its own deposit address on Billing. Send USDC on the Base network only. Other tokens, or USDC on another network, cannot be credited.
  • A deposit is credited once it has the number of network confirmations shown on the Billing page. It then appears under Deposits and in the ledger.

What a request costs

You pay for the tokens the request used, at the per-1M-token price of the offer that served it:

formula
cost = input_tokens        × input price
     + cached_input_tokens × cached input price
     + output_tokens       × output price

Prices are the ones on Models and pricing, which already include Kyvalt's fee. Reasoning or thinking tokens count as output tokens. The exact charge for every request is in Usage logs.

Holds

Before a request is sent to a seller, Kyvalt holds the most it could cost: your input, estimated from its length, plus the output limit you set. When the request finishes, the hold is replaced by the real cost and the rest returns to your available balance.

  • Set max_tokens (or max_output_tokens on Responses). Without it, the hold assumes 1,024 output tokens.
  • If your available balance is lower than the hold, the request returns 402 insufficient_credit before anything is sent.
  • Money held for requests in flight is shown as Held on Billing and returns automatically.

When you are not charged

  • The request fails, times out or is cancelled, including attempts on a seller that failed before Kyvalt retried another.
  • The request is rejected before routing: invalid key, no offer meeting your floor or cap, unknown model, or a prompt blocked by the content guard.