---
title: Pricing & billing
description: Billed-on-success, the prepaid wallet, hold-then-capture, and how to read usage.
---

# Pricing & billing

ARCNM bills only on success — failed runs, 4xx/5xx responses, and
idempotent replays cost €0 — and holds billable work against a prepaid
wallet, capturing it when the run succeeds. The rules:

1. **Billed on success.** Failed runs, 4xx/5xx responses, and idempotent
   replays cost €0.
2. **Prepaid wallet.** You top up a balance; billable work is held
   against it and captured on success.
3. **You stay in control.** The wallet is prepaid — we never auto-charge
   a saved card without an explicit auto-refill rule you set.

For current rates, see [arcnm.io/pricing](https://arcnm.io/pricing).

> **New accounts start free.** Every new organisation is granted a one-time
> welcome credit worth its first **5 successful runs** — no card required.
> It's an ordinary wallet credit, so it follows the same rules below: a
> failed run never burns one, and once it's used up a run returns
> `402 insufficient_funds` until you top up.

---

## Hold, then capture

When you run a calculation
([`/run`](./api/calculations.md#run-calculation) — also reached
via `/quote` and `/upload-and-quote`), ARCNM pre-authorises a **wallet
hold** for the cost of the run *before* any work starts:

- If the wallet can't cover it, the run returns `402 insufficient_funds`
  synchronously — no work is performed.
- If the run **succeeds**, the hold is captured.
- If the run **fails**, the hold is released — you aren't charged.

This is why a leaked `parts:read` key can never spend money: only
`parts:write` can place a hold.

| Outcome | Billed? |
|---|---|
| Calculation succeeds | Yes |
| Calculation fails / cancelled / timed out | No (hold released) |
| `4xx` / `5xx` before work | No |
| Idempotent replay | No |

---

## Pay-as-you-go vs subscriptions

| Model | Bills | Best for |
|---|---|---|
| **PAYG (wallet)** | Top up a balance, captured per successful run | Spiky workloads, prototyping, agencies |
| **Subscription** | Monthly committed spend; overage auto-PAYG against the same wallet | Steady workloads, line-itemed invoices |
| **Enterprise** | Annual committed spend with custom SLA | Production, regulated workloads |

Switch any time from the dashboard.

### Wallet top-ups

Top up from the dashboard (**Settings → Billing**) or the Customer
Portal. The wallet is **prepaid**; set an "auto-refill at €X" rule if you
want hands-off topping up.

---

## Reading your balance and usage

Read your wallet balance and period usage with a key carrying the
`wallet:read` scope via the `billing/wallet` API. Detailed transaction and
hold history are available on the same surface, and the dashboard
(**Settings → Billing**) renders all of it alongside invoices and receipts.

---

## Invoices, receipts, tax

Subscriptions, invoices, and the Customer Portal are handled through our
billing provider. The org owner sees invoices and receipts in the
dashboard (**Settings → Billing**). VAT is collected per the customer's
billing country where applicable.

---

## See also

- [Errors](./errors.md) — `insufficient_funds`, `quota_exceeded`, `wallet_locked`.
- [Calculations](./api/calculations.md) — where the wallet hold is placed.
- [Rate limits](./rate-limits.md) — request limits (separate from billing).
