Skip to content

Payments

OpenTusk has three ways to pay for storage:

  • Free — the default tier when you sign up. 100 MB of hot-cache storage, 10 MB max per file, no Walrus durability, no credit card required.
  • Subscriptions — monthly plans (Developer / Scale / Enterprise) with higher storage, larger file sizes, and Walrus durability included.
  • Pay per Upload (PPU) — opt into per-file billing in WAL on Sui for any single upload, on top of your existing plan. Available on Free (turn on the “Pay per upload” toggle in the upload dialog); paid plans include storage so PPU isn’t exposed there.

This guide explains how the three interact, what drives the cost of a PPU upload, and answers the questions most people have.

Every file stored on OpenTusk has real infrastructure costs. Understanding these costs makes pricing transparent.

When you upload a file, OpenTusk pays for five things:

ComponentWhat it coversScales with
Walrus storageStoring your file on the decentralized Walrus networkFile size + storage duration
Walrus uploadOne-time cost to publish the file to WalrusFile size
Hot cacheFast-access storage on DigitalOcean Spaces while the file is hotFile size + storage duration
EgressBandwidth for downloading/serving your fileFile size + storage duration
Sui gasBlockchain transaction fee for the WAL paymentFlat per upload (~0.005 SUI)
Subtotal = Walrus storage + Walrus upload + Hot cache + Egress + Sui gas
Platform fee = Subtotal × 20%
Total = Subtotal + Platform fee

OpenTusk takes a 20% platform fee on top of infrastructure costs. That’s it — no hidden markups. The platform fee covers the API, worker infrastructure, SEAL key servers, and ongoing development.

There’s also a price floor of 1.0 WAL per GB per month that kicks in if WAL token prices rise high enough that the calculated cost would fall below it. This ensures the platform remains sustainable regardless of token price swings.

For a 10 MB file stored for 30 days (at WAL ≈ $0.08):

ComponentCostNotes
Walrus storage~0.0033 WAL11,000 FROST/MB/epoch × 10 MB × 30 epochs
Walrus upload~0.0002 WAL20,000 FROST/MB × 10 MB (one-time)
Hot cache~0.000003 WAL$0.023/GB/month converted to WAL
Egress~0.000001 WAL$0.010/GB/month converted to WAL
Sui gas~0.0006 WAL0.005 SUI converted to WAL
Subtotal~0.0041 WAL
Platform fee (20%)~0.0008 WAL
Total~0.0049 WAL≈ $0.0004

For small files, Walrus storage dominates the cost. Sui gas is a flat fee that matters more for tiny files.

Before uploading, you can check the cost:

GET /api/pricing/estimate?sizeBytes=10485760&epochs=30

The response includes a full itemized breakdown with each component in WAL MIST (1 WAL = 1,000,000,000 MIST), formatted totals, and the current WAL/USD price.

Two dynamic prices affect the calculation:

InputSourceRefresh rateFallback
WAL/USDCoinGeckoEvery 6 hours$0.079
SUI/USDCoinGeckoEvery 6 hours$0.0935

WAL and SUI prices are fetched automatically and cached. Hot cache and egress costs are fixed in USD and converted to WAL at the current rate.

PPU is a per-file billing mode that’s available on plans where it’s enabled. Today it’s enabled on the Free tier (so Free users can pay-per-file for anything over the 10 MB plan cap, up to 100 MB, with Walrus durability included). Paid plans don’t expose PPU because storage is already included in the monthly price — if you need more headroom on a paid plan, upgrade.

From the CLI it’s --ppu; on the API it’s paymentType: 'ppu' on the upload body; in the web app it’s the “Pay per upload” toggle in the upload dialog.

PPU files are independent of your plan:

  • They do not count against the plan’s storage quota.
  • Their hot-cache lifetime is tied to the paid epochs, not the plan’s hot-retention setting.
  • The 10 MB file-size cap on Free is raised to 100 MB when you toggle PPU on.
  • Walrus durability is included on a PPU file even on Free, where the underlying plan is hot-only.
  • Upgrading or downgrading a plan doesn’t affect already-paid PPU files — they live for the epochs they were paid for.
  1. You request an upload with paymentType: 'ppu' (CLI: --ppu)
  2. The API returns a 402 Payment Required with the cost quote
  3. You sign a WAL transfer on the Sui blockchain
  4. You retry the upload with the payment proof (quoteId + txDigest)
  5. The API verifies the on-chain payment and returns the presigned URL
  6. You upload the file

The CLI handles this entire flow automatically. With --yes, it auto-approves payment for scripts and automation.

Terminal window
# Free plan — small files (≤ 10 MB) use your plan quota by default
opentusk upload notes.txt --vault "My Vault"
# Free plan — opt a larger file into PPU (up to 100 MB)
opentusk upload report.pdf --vault "My Vault" --ppu --epochs 30
# → Cost: 0.0049 WAL (~$0.0004) for 30 epochs
# → Approve? (y/n)
opentusk upload report.pdf --vault "My Vault" --ppu --yes # auto-approve
  • You need to upload something bigger than 10 MB. Free caps single files at 10 MB; PPU bumps the cap to 100 MB for that upload.
  • You need Walrus durability for a specific file. Free is hot-only — files live on hot cache as long as you have them, but they’re not on the decentralized Walrus network. A PPU upload is Walrus-durable for the epochs you pay for.
  • Pinning a file past a plan downgrade. If you ever drop back to Free from a paid plan, anything you previously uploaded via PPU remains durable for its paid epochs regardless of plan state.
  • Agents with their own wallet. An agent API key can have its own Sui address and fund storage from its own wallet, independent of the owner’s plan.

When you upload 2+ files in the web uploader, a “Bundle files” toggle lets you pack them into a single Walrus blob (a Bundle, backed by a Walrus Quilt). You get one aggregated 402 quote, one Sui payment, and one Walrus write instead of one of each per file — gas drops dramatically. See the Bundles guide for constraints and API shape.

PPU files are stored for a number of epochs (each ≈ 24 hours). You choose the duration at upload:

DurationEpochs
1 month30
3 months90
6 months180
1 year365
2 years730 (maximum)

The minimum duration is 30 epochs. Longer durations cost proportionally more.

You can add more epochs to a PPU file at any time before it expires. Extensions follow the same on-chain 402 payment flow as the initial upload:

Terminal window
opentusk file extend <file-id> --epochs 30
POST /api/files/:fileId/extend → 402 + quote (first call)
POST /api/files/:fileId/extend → 202 Accepted (with quoteId + txDigest)

On the 202 response, the API records the payment and enqueues a ppu-extend worker job. The worker calls Walrus extendBlob, advances ppuEpochEnd and hotUntil by the additional epochs (each ≈ 24 h), and updates walrusEpochEnd. The extension stacks onto the file’s current expiry — not from today. Cost uses the same all-in formula as the initial upload.

Only files with paymentType: 'ppu' that are already synced to Walrus (have a walrusBlobObjectId) and have not yet expired can be extended.

PPU files have auto-renewal enabled by default. When a file is within 7 days of expiring, OpenTusk automatically extends the Walrus lease if your wallet has sufficient WAL balance.

Terminal window
# Toggle per file
opentusk file auto-renew <file-id> --on
opentusk file auto-renew <file-id> --off

PPU files stay in the hot cache for as long as storage is paid for — independent of the plan’s hotRetentionDays. Their hotUntil always tracks ppuEpochEnd, so a subscription user with PPU-paid files keeps them hot for the full paid window even if the underlying plan would have evicted them sooner. When you extend storage, both ppuEpochEnd and hotUntil advance. Files only become cold after the paid period expires and they’re confirmed on Walrus.

PPU requires a Sui wallet with:

  • WAL tokens — for storage fees
  • SUI tokens — for blockchain gas (~0.005 SUI per upload)

Set up via opentusk setup or opentusk account setup-sui. Fund your wallet with WAL from a Sui DEX.

Subscription plans include storage in the monthly price — no per-file charges, no 402 flow. Uploads go straight to the presigned URL.

FreeDeveloperScaleEnterprise
Price$0/mo$9/mo$49/mo$499/mo
Storage100 MB1 GB10 GB1 TB
Max file size10 MB (100 MB via PPU)100 MB1 GB10 GB
Egress1 GB/mo10 GB/mo100 GB/mo1 TB/mo
Max vaults1010100Unlimited
Max API keys5520Unlimited
Max members/vault101050Unlimited
Hot retention (plan files)30 days30 days90 daysUnlimited
Hot retention (PPU files)While paidn/an/an/a
Upload rate10/min30/min100/min300/min
Download rate30/min100/min500/min2,000/min
CDNNoNoYesYes
Walrus durabilityPPU files onlyYesYesYes
Shared vaultsYesYesYesYes
WebhooksNoYesYesYes
Pay per uploadYes (toggle)

Subscription plans automatically batch small files (< 10 MB) into Walrus Quilts behind the scenes. The batch flushes when total pending size ≥ 100 MB or the oldest file is > 1 hour old. There’s no user-facing cost change — the savings stay with the platform — but it’s why Walrus sync may take a little longer to show synced for small files on subscription plans. See Bundles.

Upgrade from the dashboard or via the billing API. Changes take effect immediately — storage limits, rate limits, and hot retention update right away.

If a subscription is cancelled, the account reverts to the Free plan. Subscription-paid files stay in hot cache and continue to be renewed on Walrus for a 90-day grace period after cancellation. After the grace period, files become cold-only (still downloadable via rehydration from Walrus) and the platform stops paying for further Walrus epoch renewals — single-file blobs will eventually expire on Walrus. Smaller files batched into shared bundles (see Bundles) often persist longer as a side effect of sharing a Walrus blob with other active users, but that’s not a contractual promise. New uploads after cancellation fit under the Free plan’s 100 MB / 10 MB caps, or use PPU per-upload for individual larger files.

Enterprise customers can get custom plan configurations with tailored limits and dedicated Stripe pricing. Contact support for details.

All plans enforce storage quotas on subscription uploads. PPU uploads (paymentType: 'ppu') are billed directly on-chain and are not counted against the plan’s storageLimitBytes. Per-file size caps still apply to PPU uploads. Quota is calculated from plaintext file size — you’re not penalized for encryption overhead on shared vault files.

CheckResponseApplies to
Aggregate storage exceeded403 Storage quota exceededSubscription uploads
File too large for plan413 File size limit exceededAll uploads
Too many vaults403 Vault limit exceededAll uploads

Deleted files (in trash) still count toward quota until permanently removed after the 7-day grace period.

Terminal window
# Check your current usage
opentusk account usage
# See plan limits
opentusk account plan

Hot retention determines how long files stay in the fast cache after syncing to Walrus. It depends on how the file was paid for, not just the plan tier:

Plan / file typeRetention
Free, plan-quota file30 days after upload (hot-only — no Walrus sync)
Free, PPU fileWhile storage is paid for (until ppuEpochEnd)
Developer, plan file30 days after sync
Scale, plan file90 days after sync
Enterprise, plan fileNever evicted
Cancelled subscription, plan file90 days after cancellation, then evicted (and Walrus epoch renewals stop)

After retention expires, files become cold — stored only on Walrus. Downloading a cold file triggers automatic rehydration.

When you exceed your plan’s rate limit, the API returns 429 Too Many Requests. Limits reset every minute.

Additional limits apply regardless of plan:

EndpointLimit
Login10/min per IP
Register5/min per IP
Public endpoints60/min per IP
Financial operations5/min per user

Why do I need WAL tokens and not just a credit card? PPU payments happen on the Sui blockchain because Walrus storage is paid for in WAL. The on-chain payment also gives you a verifiable receipt — the transaction digest is your proof of storage. Subscription plans use Stripe (credit card) and cover Walrus costs on your behalf.

What happens if WAL price changes after I upload? Nothing. You paid for a fixed number of epochs at the quoted price. Price changes only affect future uploads. Extensions are priced at the rate when you extend.

What if my file is only a few KB? Small files are dominated by the flat Sui gas fee (~0.005 SUI). For very small files, the price floor (1.0 WAL/GB/month) may also apply. In practice, tiny files cost a fraction of a cent.

Do I pay for failed uploads? No. Payment is only collected after the API returns a presigned URL. If the upload or confirmation step fails, no charge. The quote expires after 5 minutes if unused.

How does encryption affect pricing? It doesn’t. Quota and pricing are based on plaintext size. SEAL encryption adds minimal overhead (~16 bytes for IV + tag) that isn’t charged.

Can I switch from Free to a subscription? Yes. Upgrade from the dashboard at any time. Any PPU files you uploaded on Free continue to follow their paid epoch schedule, and your existing Free-plan files get the new plan’s hot retention. New uploads are subscription-billed (all storage included).

Can I do PPU on a subscription plan? No — paid plans don’t expose the PPU toggle because storage is already included in the monthly price. PPU is only enabled on plans where ppuEnabled = true (currently just Free). If you need more storage or larger files on a paid plan, upgrade to the next tier.

What happens when my subscription expires? Your account reverts to the Free plan. Subscription-paid files stay hot for 90 days post-cancellation and continue to be renewed on Walrus during that window. After the grace, files become cold-only (still downloadable via rehydration), the platform stops paying for further Walrus renewals, and new uploads have to fit under the Free 100 MB / 10 MB caps — or use PPU per-upload for individual larger files. Small files batched into shared Walrus bundles often outlive the 90-day grace as a side effect of shared storage, but that’s not a guarantee.

Why is there a 20% platform fee? The fee covers the API infrastructure, background workers, SEAL key servers, hot cache management, webhook delivery, and ongoing development. The base costs are passed through at cost — you can verify them against Walrus and DigitalOcean published rates.

How do I check what I’ve spent? Each upload’s cost breakdown is shown at payment time. Use opentusk account usage to see aggregate storage. On-chain WAL transfers are visible in any Sui explorer.