---
title: Billing
description: The organization wallet, a top-up through a payment provider, the pinned rate, what a charge is built from, and what a call answers on an empty wallet.
keywords: billing, wallet, balance, top-up, rate, charge, money movements, 402
group: account
---

## Top up the wallet {#top-up keywords="top-up, payment, card, sbp, roubles"}

:::steps
- **Open the balance in the console** — The wallet lives beside the keys.
- **Choose a payment method** — Card, SBP or crypto; which of the three are offered is decided by the provider's account. The choice of provider itself appears only when more than one is offered.
- **Name an amount in roubles** — Any amount above zero; there is no minimum.
- **Check both figures and pay** — The console shows what you receive and what you will be charged before it sends you to the payment page.
:::

Until you go to the payment page, nothing has been charged. Closing the window costs nothing: the payment stays in the history and waits until it is paid, canceled or expires.

## The wallet {#wallet keywords="wallet, balance, available, held, organization"}

The wallet belongs to the **organization** rather than to a user, and a key that spends from the balance spends that wallet. The accounting unit is one — the US dollar — and it does not move with the display-currency control in settings.

The wallet's balance is not one number but several, and confusing them is expensive.

:::deflist
| Figure | What it is |
| --- | --- |
| Available to spend | **The settled balance minus both holds.** This is the figure a call passes or fails against. |
| Held by requests in flight | Money held against calls that have not finished. |
| Held for a refund | Money held against refunds still in progress. |
| Credited all-time | Everything ever credited. |
| Debited all-time | Everything settlement has ever taken. |
:::

A hold is not a charge. A call first reserves an estimate of what it will cost, and on finishing settlement replaces that estimate with the fact; if the call cost less than it held, the difference comes back as a movement of its own.

## How a payment runs {#payment keywords="provider, payment method, payment page, cancel, status"}

The payment is created at the chosen provider and takes you to its hosted payment page. The list of providers is published by the platform: their names are set by the operator, and which methods each one's account accepts is a property of that account rather than of you.

The payment page closes on a clock, and the console says when. The payment meanwhile has a life of its own, visible in the payment history:

- **waiting to be paid** — created, nothing touched;
- **paid, being credited** — the money arrived and crediting is under way; usually under a minute;
- **credited** — the balance is topped up;
- **canceled**, **declined by the bank**, **expired** — there was no charge;
- **under review** — nothing is credited until it ends;
- **reversed** — the payment was returned, so nothing is credited.

An unpaid payment can be canceled by you. A payment the provider has already collected cannot be — that case goes to support.

:::note
Replaying one and the same creation attempt does not create a second payment and cannot charge twice: the platform answers with the very same payment. That is exactly why a provider that did not answer is met by repeating, not by starting over.
:::

## The rate {#rate keywords="rate, roubles, dollars, margin, central bank"}

There are two rates and they are not interchangeable.

- **The payment's rate** is pinned at the instant the payment is created and belongs only to it. It decides how many roubles you are charged for the dollar value you are buying, and it carries the checkout margin. Both figures are shown before you go to pay.
- **The accounting rate** is the Bank of Russia rate, and it is for display alone. It carries no margin and no payment is computed from it: it is what the console restates the balance with when you ask to see it in roubles.

Payment is processed in roubles either way, and what sits on the wallet is dollars.

## What a charge is built from {#charging keywords="rate, charge, dimensions, tokens, images, price list"}

Every call is charged, and it is computed by **dimensions** — by what the call actually consumed. There are five, and the vocabulary is closed:

- input tokens at the uncached rate;
- input tokens served from cache;
- input tokens written to cache;
- output tokens;
- image units.

For the wallet each dimension carries a **price per unit** in the published price list. A dimension may be free, or not applicable to that model at all — and then it carries no price whatsoever. Those are two different things, not two ways of writing zero.

A charge is computed from the price list **in force at the time of the request**. The price-list version shown beside a purchase in the console is immutable audit lineage, not the price you will later be counted at.

The prices themselves do not live here: the [price list](https://kumorouter.com/en/pricing) publishes them, and the gateway names its model identifiers itself at `https://api.kumorouter.com/v1/models`.

> [Packages instead of the wallet →](/en/packages) [Where to see your spend →](/en/usage)

## When there is nothing to pay with {#refusals keywords="402, empty wallet, refusal, spend limit, frozen"}

A wallet that cannot fund a call answers **`402`** with the code `insufficient_wallet_balance`. The refusal is decided before any provider is called, so nobody upstream saw the call and it cost nothing.

Tell it apart from its neighbors — they carry different statuses and different cures.

:::matrix
| Refusal | Status | What cures it |
| --- | --- | --- |
| The wallet cannot pay | `402` | a top-up |
| Daily or monthly spend ceiling | `429` | time |
| Lifetime or per-request spend ceiling | `429` | a conversation with support |
| The organization is frozen | `403` | a conversation with support |
:::

A `402` differs from a spend ceiling in that the ceiling strikes while the money is there: a ceiling is a limit you set for yourself, not an absence of funds.

> [Every gateway status →](/en/errors) [The rate ceilings →](/en/limits)

## Money movements {#ledger keywords="movements, history, credit, debit, held, ledger"}

"Money movements" in the console is the organization's immutable history of money, newest first. Every movement is recorded **in the unit it actually happened in**: wallet movements in dollars, package movements in package tokens. They are two separate columns, because they are two separate units and neither converts into the other.

Movements run over three balances, and each is reproduced by summing its own part alone.

| Balance | What is in it |
| --- | --- |
| `Spendable` | What can be spent. Moves by credit and debit. |
| `Debt` | A liability. Sums with the opposite sign. |
| `Held` | Reserves against calls and refunds. Moves by hold and release. |

Every movement names its cause in words: payment credited, call settled, refund, debt taken on or recovered, call finished for less than it held. A hold and its later release are two movements of one fact rather than one.

Filters narrow the list by balance, direction and cause. A shorter version of the same table sits on the balance screen, and the CSV export is there with it.

The window is bounded: one request covers at most 366 days. Movements are retained for **five years**, so an older period is read by moving the window back rather than widening it.

> [What each key spent →](/en/usage) [What happens when funds run out →](/en/errors)
