Skip to content

Escrow & Settlement

Payments on VirtEngine are usage-driven: tenants fund an escrow account up front, but money only moves to providers after signed usage records survive a dispute window and settle on-chain.

Tenant x/escrow x/settlement Provider 1 · deposit funds into escrow account 2 · signed usage record 24 h dispute window tenant may dispute; corrections create referenced new records 3 · settle undisputed usage 4 · settlement policy (x/take) 0% marketplace commission 5 · payout to provider (payment − take)
The settlement sequence. Funds rest in escrow until usage is reported, the dispute window passes, and x/settlement authorizes transfer of the agreed amount with no marketplace commission.

When a tenant creates a deployment, they deposit funds into an escrow account managed by x/escrow. The escrow account:

  • backs every lease formed under the deployment,
  • is drawn down only by settled usage, and
  • can be topped up at any time; when it empties, the lease closes.

This protects both sides: providers know funded capacity is real, and tenants never grant a provider direct pull access to their wallet.

The provider daemon runs a settlement pipeline that connects metered usage to on-chain billing. Its cadence is configurable; the defaults are:

SettingDefaultMeaning
settlement_interval1 hourHow often pending usage is processed into settlements
dispute_window24 hoursTime tenants have to dispute a usage record
reconciliation_interval6 hoursCross-validation against platform metrics
max_pending_records100Backlog size that triggers early settlement

Usage records are submitted on-chain in signed batches (MsgRecordUsage), then settled by x/settlement into billable line items once the dispute window has elapsed and no dispute is open.

A tenant who believes a record is wrong can dispute it inside the window:

Terminal window
virtengine tx settlement dispute-usage \
--usage-id usage-1234567890 \
--reason "CPU usage appears inflated" \
--expected-cpu-hours 10 \
--from customer

Dispute lifecycle: Created → Pending → Reviewing → Resolved / Rejected / Expired. Key guarantees:

  • usage cannot be settled while a dispute on it is open;
  • accepted disputes produce corrections — new usage records that reference the original rather than silently rewriting history;
  • dispute evidence is immutable once recorded.

Settled usage is cross-checked against independent platform metrics (the reconciler compares provider container/volume/GPU metrics with platform-side component usage). Discrepancies escalate by size:

DifferenceSeverityAction
0–5%LowLog only
5–10%MediumAlert generated
10–25%HighAlert + review
>25%CriticalSettlement blocked

At payout, the proposed x/take settlement policy is 0% marketplace commission, so x/escrow transfers the agreed amount to the provider. Validator transaction fees apply separately to on-chain messages and are proposed at approximately 90% below standard network transaction fees. The issuance and fee-policy model is covered in Settlement Policy & Issuance.

Terminal window
# Force settlement for an order
virtengine tx settlement settle-order --order-id order-1234567890 --from provider
# Check reconciliation status
virtengine query settlement reconciliation-status --allocation-id alloc-1234567890
# List active disputes
virtengine query settlement disputes --status pending --provider provider-address