Accounts, quota & billing
vrtmv bills one price per distinct instance, per year. A seat is claimed by a real migration, a signed verify, or a lightweight license (the vrtmv license/enroll verb); analysis and feasibility checks are free, and re-running any kind against the same VM never bills twice.
On-Demand is $799 per instance a year, Pro $599 (bought 10 at a time) and Fleet $399 (100 at a time). Each price covers the migration, its signed parity attestation, and ongoing monitoring. There is no separate one-time fee.
What is billable
A usage event is billable-eligible only when all hold:
- its
kindis a billable seat kind —migration,verify, orlicense(preflight and readiness are always free;cve_scananddriftare license-gated and never metered —driftis refused on a VM not already seated by a migration, verify, or license, whilecve_scanauto-claims a lightweightlicenseseat when the account has capacity (VRTMV-620) and is refused only when capacity is genuinely exhausted); - the target is not a free target (
api.free_target, which is currently empty — every target bills); - the account is not on an unlimited plan.
Billing counts distinct VMs by fingerprint, so re-migrating the same VM does not bill twice.
The waterfall
Each account's position is computed as a waterfall:
- Free quota — a number of billable instances included at no charge (10 by default).
- Annual subscription — beyond the free quota, each instance is billed at the account's tier rate, per year, as a single subscription whose quantity tracks the instance count.
GET /v1/account returns this summary — free quota, billable instances, paid instances, the
per-instance annual rate and the annual total — which is what an account page renders.
Prepaid credits were retired on 2026-08-07 along with the one-time migration fee, since a credit pre-bought a per-migration charge that no longer exists. The
credits_*fields remain in the API response for compatibility and report zero. The ledger is preserved and closed: no new grants can be created. To comp an account, its free quota is raised instead.
Licensing became first-class with
vrtmv license/enroll(POST /v1/enroll). Until then the only way to seat a VM was as a byproduct of a full migrate or verify — minutes of translation and attestation. Enrolment claims the same per-instance seat from just a fingerprint, so spare seats can be lit up directly and a VM can be licensed before it is ever migrated (which is what letscve-scan/driftrun on it). It changes how a seat is claimed, not what a seat costs: the price, the per-fingerprint dedup, and the 402 capacity gate are all unchanged.
Seeing your seats and terms
GET /v1/account/capacity shows what the account holds and through when. Alongside the pooled
totals (licensed_seats and the active license_valid_from/valid_until), it returns a
terms array with one entry per active term — each licence term (grouped by window, source and
note) and each active POV, with its own seat count and dates. An account whose seats run through
different dates therefore shows each term rather than a single pooled figure collapsed to the
longest one. The gate enforces each term per grant; terms is how a customer verifies that
breakdown. /v1/account/entitlements and /v1/account/terms are aliases of the same payload.
The same response also carries free_quota (the free allowance) and billable_vms_used (how
many VMs are seated), so free_quota + licensed_seats + active_pov_seats reads as provisioned
capacity against billable_vms_used consumed, without a second call.
See Endpoints for the response shape.
GET /v1/account/vms lists those seated VMs one by one: each VM's fingerprint, when it first
became billable (its "licensed since" date), its last activity, and the operation kinds it has
run. It answers "which hosts are licensed, and since when" — the per-host view. Because seats and
POV are account-level pools with no per-VM assignment, it reports per-VM licensed status, not a
per-VM seat type. See Endpoints.
Enforcement
- A non-paying account whose free quota is exhausted is refused a new billable seat (migration or verify) with 402 Payment Required.
- A paying account soft-overages into invoiced on-demand usage rather than being blocked.
- An absolute hard cap applies to every non-unlimited account: once it reaches the per-account VM limit, further billable seat events are hard-blocked with 402 until the limit is raised. Unlimited accounts (negotiated large estates) are exempt.
Feasibility checks (preflight, readiness) are never gated.
Data boundary
Metering carries only a one-way VM fingerprint and the release pair — never host identity or workload data. See Security posture.