Usage and billing
There are no plans and no tiers. You start free, and then either bring your own key and pay us nothing, or deposit stablecoins and pay each model what it costs.
Starting free
A new wallet gets a real go at the product, not a demo: conversation with no message limit, plus app and landing-page builds, and token launches.
We pay for it, from a shared pool. There is no card, no hold on your wallet and no per-wallet build counter. It lasts while the pool does.
Two things are worth being exact about:
- The free start covers inference — the models doing the thinking. A token launch still costs its own launch fee and gas, which come from your own wallet, because those are on-chain payments Horai never touches.
- It is a shared pool, so it is not a personal allowance and not a promise about any particular day. When it is empty, the product tells you plainly and you choose how to continue.
Bring your own key
Add a provider key in Settings → Keys and your routes run on it. Nothing here is debited — not for chat, not for builds, not for the gateway. Your provider bills you at their rate.
This is the cheapest way to use Horai if you already pay a provider, and it works identically in the hosted app and the self-hosted runtime.
See Models and keys for how keys are stored.
Deposit stablecoins
The other route is a balance. Horai moves stablecoins only, and each chain accepts exactly one of them.
Settings → Deposit shows a deposit address per chain:
| Chain | Asset | Credited when | Typically |
|---|---|---|---|
| Base | USDC (0x8335…2913) |
12 blocks deep | ~25 seconds |
| Solana | USDC (EPjF…TDt1v) |
the transaction is finalized |
under a minute |
| Robinhood Chain | USDG (0x5fc5…d168) |
the block is finalized |
about 20 minutes |
Send the asset named for that chain, from any wallet, to that chain's address. The three addresses are not interchangeable: they are different addresses, and each is watched for one asset on one chain. USDG sent to the Base address, or USDC to the Robinhood Chain address, is not credited.
1 USDC and 1 USDG are each credited as $1.00. There is no exchange rate anywhere in this and no spread.
The watcher credits your balance once the deposit is at the depth above. Those depths are what make a credit safe against a reorg; a shallower confirmation is not treated as money. They differ because the chains do:
- Base uses a count of twelve blocks, the soft depth this path has always used.
- Solana waits for
finalizedcommitment. - Robinhood Chain waits for the chain's own
finalizedtag rather than a block count. It produces a block roughly every 0.1 seconds, so twelve blocks there would be 1.2 seconds — not a confirmation depth. Its finalized head trails the tip by around 18 to 23 minutes, and that is the wait a USDG top-up actually has. We ask the chain where finality is instead of guessing at a number, so this is the honest figure rather than a target.
The transaction hash is the idempotency key, so a deposit is credited exactly once no matter how many times it is seen.
Deposits are credits: final and non-withdrawable. They buy usage on Horai and cannot be sent back out to a wallet. That is the whole arrangement, stated plainly before you send anything — if you want an arrangement where funds stay yours and withdrawable, bring your own key instead.
Unused budget held for a job that ends up costing less is released back to your balance automatically.
What you are charged
Model usage is debited at the provider's cost, per request, with nothing added on top. The amount is computed from the tokens the call actually used and the published price for that model.
Nothing is charged before a call: a completion's price is not knowable until it exists, so you are never charged for more than you used.
The usage dashboard
Usage shows spend in two columns — this wallet, and your gateway keys — with every line itemised: the model, what it was for, and what it cost. Gateway calls appear as gateway.inference.
Every cost line in a job stream carries the same numbers as it happens:
▸ inference deepseek-v4-flash · $0.0002
A route that ran on your own key shows the model with on your key instead of an amount, because there was nothing to debit.
Receipts
Every job has a receipt page listing what it did and what each part cost: the inference lines, and — if the job launched a token — the deploy lines. It is the itemised version of the job you watched, and it stays available after the thread moves on.
Next
Deploy a token covers the one flow that spends money from your own wallet rather than your balance.