Building blocks
Pricing & billing
Subscription tiers, the single extraction meter, flat overage, pay-on-200, and rollover.
ARCNM is a subscription API with a single meter — extractions. You pick a tier, get a monthly (or annual) included quota, and any usage beyond it bills at a flat per-extraction overage rate. There is no prepaid wallet, no credit packs, and no per-call price to budget. The rules:
- One meter. 1 part in 1 environment = 1 extraction. A
single-component file (3D CAD or 2D drawing, ≤ 10 MB) costs exactly
one extraction. No multipliers, no file-size brackets. A
multi-environment run meters one extraction per
(part × environment) cell — 7 parts compared across 4 environments
is 28 extractions, and the Run button / batch response tells you the
cell count before anything is charged. A grid the remaining quota
can't cover never runs in part:
/calculations/batchrejects it whole (402 quota_exceededwithcells_requested/cells_available), while/quoteand/upload-and-quotesave the grid's cells parkedblockedfirst — their 402'sdetailsalso carrybatch_idandparked_cells, so after a top-up you resume that batch (/calculations/bulk-retryor per-cell/run) instead of paying to submit it again. - Billed on success. Failed runs,
4xx/5xxresponses, and idempotent cache hits cost nothing — they never draw down your included quota or trigger overage. - Flat overage, no surprise upgrades. Run past your included quota and the extras bill at your tier's flat per-extraction rate on the automated invoice. You're never force-upgraded mid-cycle.
- Rollover. Unused included extractions roll one month forward, then expire. Rollover applies only while the subscription is active — rolled extractions are forfeited on cancellation (and the cancel flow tells you so before you confirm).
- No double billing (dedup). Re-running the identical part in
the same environment with the same configuration within the same
billing month is served from the first succeeded result —
instant, and never billed again. A different environment, a changed
configuration, or a rate/fleet edit to the environment makes it a
genuinely new (billable) calculation. This applies per cell in a
multi-environment run: re-submitting an identical grid answers every
unchanged, already-succeeded cell from cache for free
(
served_from_cachein the batch response), and a fully cached grid is served even when you're over quota — cached answers never need allowance. Cells still running aren't cached yet, so retry an in-flight grid with anIdempotency-Key, not by re-submitting it.
For current rates, see arcnm.io/pricing. The tiers below are the canonical summary (EUR).
| Tier | Base | Included | Overage / extraction | Seats | Environments / fleets | Calibration runs | API keys | Rate limit | Audience |
|---|---|---|---|---|---|---|---|---|---|
| Free | €0/mo | 35 / mo | €0.99 (prepaid) | 1 | 2 / 2 | 1 / mo | 1 | 60 / min | dev testing, MVP builds |
| Pro | €199/mo | 500 / mo | €0.49 | 5 | 5 / 5 | 10 / mo | 5 | 300 / min | job shops, quoting desks |
| Scale | €1,199/mo | 5,000 / mo | €0.32 | 25 | 30 / 30 | unlimited + nightly auto-recalibrate | unlimited | 600 / min | platforms & ERPs |
| Enterprise | custom terms¹ | custom¹ | custom¹ | custom¹ | custom¹ | custom¹ | custom¹ | ~1,200 / min | OEM procurement, supply chains |
¹ Enterprise is a per-tenant contract — volume, overage rate, base
price, limits and payment terms are negotiated, annual and prepaid.
There is no list price: talk to sales for a
quote. Once your agreement is active, your in-app billing page and
GET /billing/v3/overview (contract) always show your contracted
numbers (volume, overage rate, base price, PO) — the public catalogue
never carries them.
- Free is pay-as-you-go. The 35 monthly extractions are free and need no card. Past them, extractions are saved but paused until you add a payment method and top up a balance; they then run at €0.99 each and pause again when the balance is spent. Nothing is ever lost, and you are never billed beyond what you have paid in — the balance is the ceiling.
- Self-serve overage is prepaid; Enterprise is invoiced. Free, Pro and Scale draw overage from your prepaid balance, so there is no surprise invoice. Enterprise overage is billed in arrears on your contracted terms.
- Annual billing saves ~10%. Pro is €2,149.20/yr and Scale is €12,949.20/yr on annual. Enterprise is annual/prepaid by default and sales-led.
- Scale and Enterprise bundle the Calibration+ and Compliance packs (below) at no extra charge — that's what makes their calibration runs and API keys unlimited.
New accounts start free. Every new organisation lands on the Free tier — 35 extractions per month, no card required. Free obeys the same rules below: a failed run never burns one. Once the included 35 are used, further extractions are saved and park as
blockeduntil you add a card and top up; thecoverageblock on the response says which, and where to fix it.
The single meter, and what's free
Every extraction request hits one meter. What counts, and what's free:
| Outcome | Counts against quota / overage? |
|---|---|
Extraction succeeds (200 OK, valid result) |
Yes — 1 extraction |
| Extraction fails / cancelled / timed out | No |
4xx (bad input, auth, rate-limit) |
No |
5xx (our fault) |
No |
| Idempotent cache hit (identical content within the cache window) | No |
This is pay-on-200: you're only metered when we return a valid
extraction. A leaked parts:read key can never spend — only
parts:write runs an extraction. Behind the meter, the engine selects
the right analysis for each input automatically; it never changes what
you're charged.
Add-on packs
À-la-carte on any plan (Scale bundles Calibration+ and Compliance; Enterprise bundles all four). Descriptions are deliberately numeral-free — each pack lifts your plan's included allowance, whatever that is:
| Pack | Price | Adds |
|---|---|---|
| Seats+ | €9/mo | Additional user seats above your plan's included seats |
| Compliance | €49/mo | RBAC + audit log + immutable lineage + role inheritance + unlimited API keys on any plan |
| Environments+ | €29/mo | Unlimited costing environments and machine fleets, above your plan's included allowance |
| Calibration+ | €99/mo | Unlimited calibration runs + nightly auto-recalibrate, on any plan |
Layer-3 data products
The cost-intelligence benchmark, sold separately from extraction usage:
| Plan | Price | Contents |
|---|---|---|
| Analyst | €299/mo | Benchmark queries via the dashboard |
| Intelligence | €1,500/mo | Benchmark API, category dashboards, supplier-quote comparison |
| Data Feed | €50k–250k/yr | Bulk API / data feed, procurement benchmarking (contact sales) |
Plan limits
Beyond the extraction meter, each tier carries resource limits — seats, costing environments, machine fleets, calibration runs per month, and API keys (see the tier table above). Limits gate creation only: hitting one blocks creating more of that resource; everything you already created keeps working, and nothing is ever deleted — including after a downgrade.
A creation request over the limit returns 402 Payment Required
with the code entitlement_exceeded and a machine-readable payload:
{
"error": {
"code": "entitlement_exceeded",
"message": "Seat limit reached (5/5). Upgrade your plan or add Seats+ to invite more teammates.",
"details": {
"feature": "seats",
"used": 5,
"limit": 5,
"upgrade_url": "/settings/billing"
}
}
}
details.feature is one of seats, environments, fleets,
calibration_runs, api_keys. details.limit is your plan's effective
ceiling (tier + add-on packs + any enterprise agreement); upgrade_url
is a same-origin path to the billing page. The dashboard renders these
as an upgrade prompt; API clients should surface the message and treat
the condition as permanent until the plan changes (or, for
calibration_runs, until the monthly window resets).
Current usage against every limit is available in the billing overview
(GET /billing/v3/overview, limits[]) and on Settings → Billing.
Quota, overage, and rollover in practice
A Pro account includes 500 extractions/month at €199. Run 600 and the extra 100 bill at €0.49 each — +€49 on that month's automated invoice. No upgrade prompt, no work blocked.
Unused extractions roll one month forward. A Pro account that uses 300 of 500 in March carries 200 into April (on top of April's 500), then anything still unused after April expires. Cancel mid-cycle and any rolled balance is forfeited — the cancellation flow states this before you confirm.
Raw uploaded files are stored free and purged on a rolling GDPR window (12 months on paid tiers, 30 days on Free). The small derived cost labels are kept for the life of the account.
Reading your usage
Read your tier, included quota, current-period usage, and overage with a
key carrying the wallet:read scope via the billing/wallet API. The
dashboard (Settings → Billing) renders the same — meter usage,
rollover balance, overage to date, plus invoices and receipts.
Invoices, receipts, tax
Subscriptions, overage, invoices, and the Customer Portal are handled through our billing provider. The org owner sees invoices and receipts in the dashboard (Settings → Billing). Sales tax / VAT is collected per the customer's billing country where applicable.
See also
- Errors —
quota_exceeded, and the pay-on-200 status codes. - Calculations — where the extraction meter is incremented.
- Rate limits — request limits (separate from billing).