Skip to content

Billing

clearance.rest is pay per use. You top up a team’s USD balance and each paid operation draws from it. There is no subscription.

For current prices see Pricing.

  • The balance belongs to the team and is shared by all of its projects.
  • Add balance in the console under Billing. The minimum top-up is $10; checkout opens with $20 selected. Payment happens on a secure checkout page run by our payment provider, which acts as merchant of record. Sales tax or VAT may be added on top depending on your location; the balance is credited with the full amount you chose.
  • Your email address must be verified before you can add balance.
  • The balance never goes negative.

GET /account/balance returns what you can spend now:

{
"success": true,
"balance": 12.0,
"held": 0.5,
"currency": "USD",
"project": { "spent_today": 1.25, "spent_this_month": 1.25, "daily_limit": 5, "monthly_limit": null },
"mcp_token": null
}

balance already has the amounts held for requests in flight deducted. project shows the calling project’s spending in the current UTC day and month, and its limits; null means no limit.

  1. Before a paid operation starts, its price (or the highest it could cost) is held. If the balance or a spend limit cannot cover it, the request fails at once with 402 insufficient_balance or 402 spend_limit_exceeded, and nothing has happened.
  2. The operation runs.
  3. If it succeeds, the hold becomes a charge for the actual price and any remainder returns to the balance. If it fails, the hold is released.

Paid responses include the price charged and the new balance, so you can track spending without a second call. Each charge is also recorded in the Transactions list in the console.

Operation When you are charged
Captcha solving Only when the captcha is solved (status: "solved"). Failures and timeouts are free. The price depends on the captcha type.
temporary number When you rent it. You are refunded if it never receives an SMS.
monthly number When you rent it (the first month), every month on renewal, and for each SMS it receives.
device number When you connect it (the first month), every month on renewal, and for each SMS it forwards.
Email For each email delivered to you, through GET /emails/wait or an email.received webhook.

Free: catalog lookups, listing and reading your resources, metadata, releasing a number, mailbox connection, authorization links, webhook management and the balance call.

Each captcha type has one price per solution, listed per 1,000 solutions on Pricing and in GET /captchas/types (price_per_1000). You pay only for a solution. A request that ends failed or timeout is not charged, and neither is one rejected before it starts. Read Solving captchas.

The catalog price (GET /numbers/catalog/prices) is the price of a rental that finds stock at the first attempt. If nothing is in stock at that price, the rental steps up through a few higher prices, up to a cap:

  • With max_price, the cap is that value. A max_price below the catalog price is rejected with 409 max_price_too_low, before anything is held.
  • Without it, the cap is about twice the catalog price.

The balance is held up to the cap, you are charged the price that was actually reached, and the rest is released. Passing the catalog price as max_price therefore guarantees you never pay more than listed, at the risk of 409 no_numbers_available when there is no stock at that price.

You are refunded automatically when a temporary number is released, or expires, before any SMS arrived. After an SMS has arrived the rental stays charged. Details: Temporary numbers.

The first month is charged when you rent or connect the number, and it renews every month on the same day. Each received SMS is charged on arrival.

On the renewal day we charge the renewal. If the balance is short:

  • a monthly number is released immediately and cannot be recovered;
  • a device number is disconnected: its SMS stop being forwarded, and connecting it again charges the first month again.

Both emit a number.renewal_failed event. If a spend limit, not the balance, is what blocks the renewal, it is retried for up to 3 days before this happens, so you have time to raise the limit. 3 days before a renewal that the balance cannot cover, the team’s owners get a warning email. Keep the balance topped up.

Every email delivered to you is charged, whether it comes back from GET /emails/wait or is announced by an email.received webhook. The same email is never charged twice. If the balance or a limit cannot cover the charge, GET /emails/wait fails with 402 and the email is not consumed: it is still there once you have topped up. Connecting a mailbox and creating authorization links are free.

Spend limits cap how much a single project or MCP token can spend per UTC day and per UTC month. Set them in the console: project limits under the project’s Settings, token limits when you create or edit an MCP token.

A request that would take spending past a limit, counting money already spent in the period, amounts held for other requests in flight and the new price, is rejected with 402 spend_limit_exceeded. error.details names the scope (project or mcp_token), the period (daily or monthly), the limit, what was spent and held, and the amount requested.

Limits are independent of the balance: they are a guard against runaway automation, not a budget you must reserve.

In Billing an owner can set a low balance threshold. When the balance drops below it, the team’s owners get an email and a balance.low webhook event is sent to every endpoint of the team’s projects that subscribes to it. The alert fires once and re-arms when the balance is back at or above the threshold.

An owner can ask for the unspent balance back in Billing, up to the amount that is still refundable. We review every request. The refund goes back to the original payments, newest first, and the payment provider’s fee on the refunded part is deducted from what you receive. One request can be open at a time.

Amounts you already spent are not refundable, except where an operation refunds itself, such as a temporary number that received no SMS.