Credit types & wallets
Credit types define what a “credit” means in your system. Wallets hold a customer’s credit balance. You need both before you can grant credits through a pricing plan.
Credit types
A credit type is the unit of account for credits in your system. Before you can create a wallet or grant credits to a customer, you need at least one credit type defined.
Go to Product Catalog in the sidebar, then open Credits & Wallets and select the Credits tab. Click Add credit type.

Fill in the following fields:

Click Save and activate to make the credit type available immediately, or Save as draft if you want to complete the configuration in a second moment.
Wallets
A wallet holds a customer’s balance for a given credit type. When credits are granted through a subscription, they are deposited into the matching wallet. When a customer consumes a usage-based product priced in credits, the balance is drawn down.
In Credits & Wallets, open the Wallets tab and click Add wallet.

Fill in the following fields:

A wallet is a template-level definition. The actual per-customer balance is tracked when a customer subscribes to a pricing plan that grants credits into this wallet.
Once a wallet exists, see Wallet top-ups for how credits get into it after the initial grant, including customer-driven purchases and automatic top-ups when the balance runs low.
Wallet types
A wallet holds either credits or money, set by the wallet type:
The wallet type is a template. Each customer who subscribes to a plan that grants into it gets their own wallet, and each grant into that wallet is tracked separately.
A CREDIT wallet type funded with an amount (credit.amount_grant) carries a tax_category and a default_currency. Both are the declared spending scope of the wallet type: money funded under one tax category must not become spendable under another. Once wallets exist for the wallet type, neither can be changed or removed; an attempt is rejected with a validation error on credit.amount_grant.tax_category or credit.amount_grant.default_currency. Changing either is still allowed on a wallet type that has no wallets yet.
Wallets follow the standard resource lifecycle. A newly created wallet is in DRAFT until you activate it with POST /v{version}/wallets/{resourceIdOrReference}/activate, and can later be deactivated, deprecated, or archived.
An amount-denominated wallet pays for the invoice
A CREDIT wallet type funded with an amount holds money rather than credits, so it does not reduce a volume the way credits do. It reduces the charge. A funded wallet pays for the invoice lines it is allowed to pay for, and the customer is invoiced for the rest.
The wallet holds a net amount. Tax was already charged on the top-up that funded it: a top-up of 12.10 EUR including 21% VAT puts 10.00 EUR in the wallet. So the money comes off the net side of the line, and the covered part is not taxed a second time:
Coverage is always split, never skipped. A balance that does not cover the whole line covers part of it, and the remainder is charged and taxed as normal. A wallet with nothing in it produces no wallet block on the line at all.
Which lines it may pay for. Only lines whose product tax category matches the wallet type’s credit.amount_grant.tax_category. That is what the tax category on the wallet type declares: money funded under one tax category must not become spendable under another. Lines outside it are untouched.
When it is applied. Last. The deduction runs after included volume, after credits, after discounts and after minimum commitment, on the net amount those leave behind, and therefore before tax is calculated.
The order matters in both directions. The wallet is the only reduction denominated in money, so anything applied after it would change the figure the wallet was measured against. And anything applied after tax would leave the deduction taxed.
A customer holding both kinds of wallet spends credits first. Credits reduce the volume being priced; the money wallet reduces what that pricing came to.
What each wallet paid. The charge reports one entry per wallet that paid, in wallet_balances:
used_balance is what the charge took out, available_balance is what it could have drawn on, and left_balance is what remains of that for further usage in the same period. A wallet holding credits reports the same three fields with a credits value instead of an amount.
wallet_balance_details, with used_wallet_credits, left_wallet_credits and available_wallet_credits, is deprecated in favour of wallet_balances. It holds one wallet at a time, so a charge paid by a credits wallet and a money wallet reports the figures of whichever paid last, and it can only express credits. It keeps working for backwards compatibility.
Granting into the wallet. A grant has to be in the wallet’s own currency, since there is no conversion between one currency and another on the way in. A fixed grant in another currency is rejected with wallet type <reference> is denominated in EUR, but the grant is in USD. A grant that takes a percentage of pricing in another currency is rejected for the same reason, and the error names the two ways out: grant a fixed amount in the wallet’s currency, or grant into a wallet type denominated in the pricing currency.
A wallet type created before default_currency became mandatory has none. Nothing can be granted into it until it is given one.
Spend on an amount-denominated wallet books out at final
A CREDIT wallet type funded with an amount keeps its ledger in a currency. Usage covered by such a wallet is held as a reservation while the invoice is not yet final: the available balance already reflects the reservation, so a second invoice cannot spend the same money, but the money has not yet left the wallet.
When the invoice goes FINAL, the covered amount leaves the wallet, oldest-expiring grant first. Solvimon recognises it as revenue with no tax, because tax was already charged on the top-up that funded the balance.
Voiding or recalculating the invoice before it is final releases the reservation, and the balance becomes spendable again. Re-running a final invoice does not book the spend twice.
Read a wallet with its type and top-up rules
GET /v1/wallets and GET /v1/wallets/{id} accept expand[], which saves resolving a wallet’s denomination and its funding rules through separate calls:
The same expansions apply when a wallet is reached through the customer balance call, using the nested key:
Rendering a wallet with its denomination and its top-up rules took three calls before these expansions. See Expanding responses for how expand[] behaves generally.
See whose usage reserved the balance
A wallet balance shared by several child customers, or spent through several subscriptions, reports one reserved figure with no way to see where it came from. Pass include_customer_details on a balance call to get the reserved balance split per customer:
Each entry in the returned customer_details carries customer_id and that customer’s share of the reserved balance. The split is recorded when an invoice is built or refreshed, so it reflects usage that has actually been drafted against the wallet, not a live estimate. It only covers credit wallets: a BALANCE wallet returns an empty customer_details, since the attribution is recorded per credit type on the invoice line. The same flag works on POST /v1/customers/{id}/wallets/balance. It defaults to false, so existing integrations are unaffected. See Seat-based credits for a worked example on a seat-scaled pool.
Credit pools and commitments
Two things are commonly mistaken for credit pools. Neither is one:
- A wallet is not shared across customers. Every wallet balance belongs to a single customer. A parent company and its children each hold their own wallets; there is no cross-customer pool that several customers draw from, and there is no pooling across a customer’s own wallets. Consumption priced in a given credit type draws only from the wallet holding that credit type.
- A minimum-spend commitment is not a credit balance. A commitment sets a floor on what a customer is invoiced over a period. If actual charges fall short, the shortfall is invoiced as a true-up. Nothing is prepaid, nothing is granted into a wallet, and nothing expires. See Schedule configurations.
Use a wallet when the customer pays up front and draws down. Use a commitment when the customer promises a spend level and you bill against it. The two can coexist on one subscription: a committed annual spend that is delivered as monthly credit grants.