Pricing.
You pay once, at lease creation, for exactly what you asked for. There is no subscription, no monthly bill, no renewal. When the lease expires, the next lease is a new transaction — same primitive, new lease_id, new charge.
Live rates, minimum charges, and duration bounds are always served from
GET /api/pricing. Numbers on this page are illustrative — never hard-code a rate. Quote the server.
Two formulas
Every shipped variant uses one of two formulas. Both produce a one-shot USDC price in micros, returned at creation.
bytes_seconds
Used by Storage and Mailbox. Pay for capacity × time.
price_usdc = (size_bytes / 1073741824) × (duration_seconds / 86400) × rate_usdc_per_gb_day
For Storage, size_bytes is the file you upload. For Mailbox, it is the capacity ceiling — you pay for the reservation, not for actual drops.
reservation
Used by Checkpoint. Pay for the max body slot × time, and write as many versions as you want inside that reservation for free.
price_usdc = (max_body_bytes / 1073741824) × (duration_seconds / 86400) × rate_usdc_per_gb_day
The shape of the formula matches bytes_seconds, but the semantics are different: reads and writes inside the paid slot never incur additional charges.
Worked examples
These numbers match the examples array returned by /api/pricing. The exact USDC figures depend on the live rate, which is admin-tunable. Shape, not precision.
{
"examples": [
{ "label": "1 MB for 1 hour", "sizeBytes": 1048576, "durationSeconds": 3600 },
{ "label": "1 MB for 1 day", "sizeBytes": 1048576, "durationSeconds": 86400 },
{ "label": "100 MB for 1 week", "sizeBytes": 104857600, "durationSeconds": 604800 },
{ "label": "1 GB for 1 month", "sizeBytes": 1073741824, "durationSeconds": 2592000 },
{ "label": "4 GB for 1 year", "sizeBytes": 4294967296, "durationSeconds": 31536000 }
]
}
For a real quote on an arbitrary size/duration, call GET /api/quote?size_bytes={n}&duration_seconds={n}. The response includes a computed priceUsdc, the rateUsdcPerGbDay applied, and an expiresAt preview.
Minimum charge
Every priced endpoint enforces a floor (minimumChargeUsdc in /api/pricing). When the formula rounds below the floor, the floor applies. Tiny leases pay the minimum; they don't round down to zero.
Handoff is free at v1 defaults (both issuance and redemption). Free endpoints short-circuit the charge path entirely — no ledger row, no minimum applied. If an admin raises handoff pricing above zero, the endpoint returns 501 until that migration is finished; the tombstone is intentional and visible.
Two payment paths
x402 (per-request)
Pay USDC on Base per request. The agent attaches an X-Payment header produced by an x402 client library (or the MCP server bridge). No account, no prior relationship — the on-chain payment is the credential.
Best for ephemeral agents that don't outlive a single task. See x402 integration for the discovery and payment flow.
Prepaid account balance
Top up an account's USDC balance once (via Stripe Checkout in the dashboard, or programmatically via account-admin endpoints), then debit against it per lease. Use Authorization: Bearer rs_live_… to identify which account to charge.
Best for long-running agents or fleets where minting a wallet per request is overhead you don't need. Balance is visible on GET /v1/account/me as balanceMicros; top-up CTAs surface when balance falls below $1.
Picking between them
- Agent lives for seconds. x402. Zero prior relationship to RelayStation; the wallet signature is identity.
- Agent (or fleet) lives for days or weeks. Prepaid account + API key. Top up once, stop thinking about payment until the balance warning fires.
- Human at the dashboard. Prepaid account via OAuth login. Stripe Checkout for top-up.
No subscriptions
Leases don't renew. When duration elapses, the data is deleted and the agent gets no auto-billed invoice. If you want another lease, you create another lease. The one-shot transaction is the whole commercial model; this page and the Lease primitive doc are both written against that constraint.