# Billing

> How MobileValidate billing works: a prepaid USD balance topped up by card in the dashboard, a $20 minimum top-up, reserve, settle and release, free inconclusive results, invoices and credit that does not expire.

Canonical: https://mobilevalidate.com/docs/billing · Last updated: 2026-10-18

MobileValidate is prepaid. You top up a balance in US dollars, and each conclusive answer is paid from it at the price of the check. Inconclusive answers are free. There is no subscription and no monthly fee. Test keys are always free and never touch your balance.

## How do I add credit?

Top up by card in the [dashboard](/docs/dashboard) under **Billing › Top up by card**. You pay on our payment provider's secure page, and the credit is added to your balance as soon as the provider confirms the payment.

- **Minimum top-up: $20.** The maximum per top-up is $10,000; contact us for larger amounts.
- **Who can pay:** an owner of the organization, once live access is approved. Until then, use test keys, which are free.
- **First top-up:** you give your company details once, and accept the current Terms if you have not yet done so.
- **Payment issues:** while a card dispute or another payment issue is open, top-ups and live checks are paused (`402 payment_hold`); test keys keep working. Contact support to resolve it.

## How do I get an invoice or receipt?

Every card top-up gets an invoice with your billing details and tax ID. Open it from **Billing › Card payments** in the dashboard, where each payment is listed with its date, amount, status and any refund. **Billing › Balance history** shows top-ups, refunds, adjustments and the checks charged per day (UTC). Prices exclude taxes; where we must collect a tax, it is added to the amount payable.

## What is charged?

You are charged per check (one number or e-mail address × one service) and only for a **conclusive** answer, at the price shown on the [pricing page](/pricing) and in `GET /v1/services`. These are never charged:

- `unknown` answers, including timeouts and "no data" for data services such as the carrier lookup;
- `unsupported_country` answers, including countries a check does not cover;
- invalid, duplicate and suppressed numbers or addresses, which are never checked;
- answers served from your own account's cache (`cached: true`, `billed: false`);
- requests refused with an error.

Each result says whether it was billed (`billed: true` or `false`), and each response has a `billing` object with the units billed, their cost and your balance afterwards. For some data services a "nothing found" answer is conclusive and billed, for example `no_reports` from spam reputation; [services](/docs/services) says where this applies.

## How do reserve, settle and release work?

Before a request runs, the API **reserves** its maximum possible cost: every check that could be billed, at its price. If your balance can't cover it, the request is refused with `402 insufficient_balance` and nothing is stored. If it is higher than the `max_cost` you sent, you get `402 cost_limit_exceeded`.

As answers arrive, each conclusive check is **settled** (charged). Everything else is **released** back to your balance: inconclusive answers, cache hits and unused minimums. So the final charge is often lower than the reservation. `GET /v1/account` shows `balance` (available) and `reserved` (held for running requests). For a bulk job, `cost` shows `estimated_max`, `reserved`, `charged` and `released`, and the free `POST /v1/jobs/estimate` shows the reservation before you start.

Cancelling a running job releases the checks not yet sent for processing. Checks already in progress finish and are billed if conclusive, because they can't be recalled.

## Are there minimum charges?

Only for checks offered in **bulk only** (no real-time price, for example `rcs`, `signal` or `imessage`). In a bulk job each country is billed at least the price of 500 checks of that service when it returns at least one answer; a country with no answers is free. The estimate shows these as `country_minimum` lines and includes them in `max_cost`. WhatsApp checks have a related rule for small groups (real-time price below 132 numbers per country). Both are explained in [bulk jobs](/docs/bulk-jobs#is-there-a-minimum-per-country-for-bulk-only-checks).

## Can prices change?

Yes, with at least 14 days' notice by e-mail or in the dashboard. Credit is spent at the prices in force when each request or job is accepted, not at the prices in force when you bought it. The job's `cost.breakdown` records the prices fixed at creation.

## Does credit expire or get refunded?

Credit does **not expire** while your account is active. If an account has had no check, top-up or sign-in for 24 months, we may close it after giving at least 30 days' notice by e-mail. Credit is non-refundable except where the law requires it or we close your account for convenience. The full rules are in the [Terms of service](/legal/terms), sections 9 and 10.

## Frequently asked questions

### Am I charged for unknown results?

No. Only conclusive answers are charged. Unknown, unsupported country, timeouts, invalid and duplicate entries are never billed, and neither are answers served from your own account's cache.

### What is the minimum top-up?

$20. A single top-up can be up to $10,000; contact us for larger amounts.

### Does my balance expire?

No. Credit does not expire while your account is active. An account with no check, top-up or sign-in for 24 months may be closed after 30 days' notice by e-mail (Terms, section 10.3).

### Where do I get an invoice?

Every card top-up gets an invoice with your billing details and tax ID. Open it from Billing › Card payments in the dashboard.
