Subscriptions
Plans, paying with USDC, renewing, downgrading, cancelling. Everything is on-chain — your subscription is a Sui object you own, not a database row on someone else's server.
The four plans
1 GB storage. No SEAL encryption. Basic transforms. Best for: trying Waldrop, single-blob hobby use.
40 GB storage. SEAL encryption enabled. Full transform pipeline. Best for: personal projects, small teams.
200 GB storage. Priority publisher access. Loyalty points multiplier. Best for: paid products that move data into Walrus.
Custom. Reach out via the Plans page for volume pricing and SLA.
Live prices and exact limits live at Pricing — they're
read from the on-chain PlanRegistry, so the dapp always shows current
values.
Paying in USDC
Waldrop accepts payment in testnet USDC (testnet) or mainnet USDC (mainnet). Two reasons:
- Stable — your monthly bill doesn't swing with SUI's price
- On-chain native — the payment lives on Sui, no off-chain payment processor
Getting USDC
| Network | Where |
|---|---|
| Testnet | Sui testnet USDC faucet (linked from the Plans page) |
| Mainnet | Any Sui DEX (Cetus, Aftermath, etc.). Bridge from Ethereum / Solana also works. |
The dapp shows your USDC balance in the top-right when you're connected, alongside SUI.
Subscribing
From Plans:
The card flips to show the price for one billing period and a confirm button.
One wallet popup. The transaction transfers the right amount of USDC
from your wallet to the Waldrop treasury and mints a Subscription
object into your wallet.
Plans page now shows the active subscription with an expiry epoch. Storage cap and feature flags update immediately — try uploading.
Free is the default. If you upload before subscribing, you're on Free.
Renewing
Subscriptions don't auto-renew (contract doesn't store the flag — that's intentional, no recurring charges without explicit consent). Two ways to renew:
| Status | What "Renew" does |
|---|---|
| Active with epochs left | Adds another billing period to the current expiry. Same plan, same price. |
| Expired | Reactivates the subscription at the current price, starting from now. |
| Grace period | Same as expired — reactivates immediately. |
From Plans, click Renew on your active subscription card. One transaction, same shape as the initial subscribe.
Upgrading
Click Upgrade on a higher tier card. The dapp shows the pro-rata cost — you only pay for the price difference times the epochs remaining.
One transaction. Plan switches immediately; new storage cap and features kick in on the next render.
Downgrading
Downgrading takes effect at the end of the current billing period, not immediately. This is to avoid the "I paid for Pro, why is my quota Starter?" surprise.
The flow:
Click the lower-tier card → "Request Downgrade." The downgrade_to
field gets set on your subscription.
The current-plan card now shows "Downgrade to Starter on renewal." You can cancel this request before expiry.
When you click Renew (or your old subscription expires and you renew), the new tier kicks in at the lower price.
To cancel a pending downgrade, click the "✕ Cancel downgrade" button on the current-plan card.
Cancelling
Click Cancel Plan on your active card. The subscription moves to the Cancelled status:
| Cancelled means | What |
|---|---|
| You can still upload until expiry | Yes |
| Your stored blobs stay readable | Yes — Walrus storage is independent |
| Auto-renew | None to disable; nothing recurring exists |
| Refunds | None — pre-paid for current period |
To reactivate, click Renew any time before or after expiry.
What if I run out of storage?
Three options:
| Option | What |
|---|---|
| Upgrade | Pro-rata to a bigger tier. Atomic, immediate. |
| Delete some blobs | Free up bytes from your existing storage. See Recover or delete. |
| Wait for blob expiry | Storage auto-frees as old blobs expire. Slow but free. |
The dapp blocks new uploads when you'd go over quota, but never silently truncates. You'll see a clear error before signing.