ar.io Logoar.io Documentation

Paying for Uploads

Data storage on Arweave is paid for in Arweave's native AR token, divisible to the "Winston" (10¹² per AR). Turbo makes paying for data storage on Arweave faster and even simpler via Turbo Credits.

No account, no subscription. Credits are bought up front, by any wallet, and spent per upload; nothing renews. An agent or a script can fund itself and upload without a human opening an account, which is what the just-in-time and x402 paths are for.

What are Turbo Credits?

Turbo Credits are the payment medium used by Turbo's upload service, providing a 1:1 representation of upload power on the Arweave network, and enabling precise pricing for uploads of any size.

Unlike traditional crypto tokens, Turbo Credits cannot be traded or exchanged on secondary markets - they exist solely for uploading data to Arweave. However, credit holders can share their credits with other wallets, enabling organizational and collaborative use cases.

Important: Turbo Credits are non-refundable and cannot be withdrawn or exchanged for other cryptocurrencies.

How to Purchase Credits

There are two important choices to make when purchasing credits:

  1. Pay in either fiat via Stripe or via crypto tokens on a supported network
  2. The address of a supported crypto wallet type to make the primary holder of the credits

When paying in fiat or crypto, the destination wallet address can be one from any supported crypto wallet. It is optional, however, when paying in crypto; the payer wallet is simply used as the default choice in its absence.

Payment Methods

Add credits to your wallet and they will be deducted automatically on each upload. For faster payment networks, it's possible to pay just-in-time with each upload.

Fiat Payments

Top up any address of a supported wallet type by paying with a credit or debit card via Stripe.

Crypto Tokens

Top up any address of a supported wallet type by paying in any of these supported crypto tokens:

NetworkTokens
ArweaveAR
SolanaARIO, SOL, USDC
BaseETH, USDC
EthereumETH, USDC
PolygonPOL

ARIO has a lower cap per top up in the ar.io Console than other tokens. When you sign in with a Solana wallet, Buy Credits offers ARIO (from Console 4.10.0), up to $100 per top up at the day's ARIO rate (from 4.11.0). In the Console's name checkout, ARIO also pays for an ArNS name directly, which never touches credits.

Supported Payment Wallets

Network TypeSignature TypesSupported Wallets
ArweaveRSAJWK Keyfile, Wander, Beacon
EVMECDSA (secp256k1)JSON Keystore File, MetaMask, Rainbow, Brave, WalletConnect, Privy
SolanaED25519JSON Keypair File, Phantom, Solflare, MetaMask (its Solana account)

Purchasing Interfaces

Console App

Visit console.ar.io/topup to purchase credits with fiat or crypto using a connected wallet.

ArDrive App

Visit app.ardrive.io to purchase credits with fiat for Arweave wallets.

Turbo Typescript SDK

import { TurboFactory, USDCToTokenAmount } from "@ardrive/turbo-sdk";

const turbo = TurboFactory.authenticated({ signer, token: "base-usdc" });

// Top up with crypto
const result = await turbo.topUpWithTokens({
  tokenAmount: USDCToTokenAmount(1),
  destinationAddress: "optional-different-wallet-address",
});

// Check balance
const { winc } = await turbo.getBalance();

// Check remaining free-tier allowance (bytes). null = unlimited, 0 = free tier off.
const { bytesRemaining } = await turbo.getFreeStatus();

// Review your own top-up history (crypto + fiat), newest first, paginated
const { payments, hasMore, cursor } = await turbo.getPaymentHistory({ limit: 25 });

See the Turbo SDK documentation and GitHub repository for complete examples.

Turbo CLI

# Top up with crypto
turbo top-up --token base-usdc --amount 1

# Check balance
turbo balance

# Check remaining free-tier upload allowance
turbo free-status

# Review your own top-up (payment) history
turbo payment-history --limit 25

See the Turbo Node.js CLI documentation for installation and usage.

HTTP API

Direct API integration is available at payment.ardrive.io/api-docs for custom implementations.

Payment Interfaces By Token

Payment MethodTurbo SDKTurbo CLITurbo APIConsole AppArDrive Appx402
Fiat (credit/debit card)✅✅✅✅✅❌
AR✅✅✅✅❌❌
ETH (L1)✅✅✅✅❌❌
ETH (Base)✅✅✅✅❌❌
SOL✅✅✅✅❌❌
POL✅✅✅✅❌❌
ARIO (Solana)✅✅✅✅ (Solana sign-in, up to $100 per top up)❌❌
USDC (L1)✅✅✅✅❌❌
USDC (Base)✅✅✅✅❌✅
USDC (Solana)✅✅✅✅❌❌

Just-in-Time Payments

Just-in-time (JIT) payments allow you to pay for uploads at the moment of upload rather than pre-funding a credit balance. This is ideal for agentic workflows, automated pipelines, and systems that prefer pay-per-upload over balance management.

JIT payments are available via the Turbo SDK, CLI, or direct HTTP API integration for tokens with sufficiently fast confirmation times:

Token / CurrencyNetworkJIT Supported
ARIOSolana✅
SOLSolana✅
USDCSolana✅
ETHBase✅
USDCBase✅
POLPolygon✅
ARArweave❌
ETHL1❌
FiatStripe❌

x402 Protocol

x402 is a protocolized approach to JIT payments that leverages the HTTP 402 "Payment Required" status code. Turbo currently supports x402 payments made in USDC on Base. The following Turbo features can utilize x402:

Note: x402 facilitator fees may be applicable for each x402 payment.

  • Uploads: pay for storage at the time of upload
  • Top up: useful when x402 is the preferred payment medium, but facilitator fees on individual uploads are undesirable

Example SDK usage:

import { TurboFactory, X402Funding } from "@ardrive/turbo-sdk";

const turbo = TurboFactory.authenticated({ signer, token: "base-usdc" });

const result = await turbo.uploadFile({
  fileStreamFactory: () => fs.createReadStream("./myfile.jpg"),
  fileSizeFactory: () => fs.statSync("./myfile.jpg").size,
  fundingMode: new X402Funding({ maxMUSDCAmount: 1_000_000 }), // Max 1 USDC
});

See the Turbo SDK documentation and HTTP API docs for complete integration details.

Credit Sharing

Turbo Credits can be shared with other users to fund their uploads while maintaining total control over who may spend them, how many they may spend, and for how long they can do so. This is perfect for organizations, collaborations, and teams.

Credits can be shared via the Console App at console.ar.io/share or programmatically via the Turbo CLI, SDK, or API.

How Credit Sharing Works

  • Authorize Users: Grant specific wallets access to your credits
  • Set Limits: Control how much each user can spend
  • Time Limits: Set expiration dates for access
  • Revoke Anytime: Regain control of shared credits instantly

Use Cases

  • Organizational Funds: Central wallet shares credits with employees
  • Onboarding: Give new users free upload power for trials
  • Collaboration: Share credits with project contributors
  • Educational Programs: Provide students with controlled access

Using Credits to Buy ArNS Names

Turbo Credits are not only for uploads: they are also the payment medium for buying, extending and upgrading ArNS names. This draws on the same credit balance as uploads, so no separate top-up is needed if you already hold credits.

Buying a name mints the ANT (a Solana asset) that the name resolves to and registers the name against it, in one purchase. You own that ANT from the moment it exists. Turbo pays the Solana fees and rent but never takes custody, and your Solana balance can stay at zero throughout.

Buying is the one action that needs the owner's signature, once, ever:

import { TurboFactory, solanaOwnerSigner } from "@ardrive/turbo-sdk";

const turbo = TurboFactory.authenticated({ privateKey: payerKey });

// The Solana wallet that will own the ANT. It signs once and never needs SOL.
const owner = solanaOwnerSigner(bs58SolanaSecretKey);

// Price it first: quote wincTotal, not winc
const price = await turbo.getArNSPriceForName({
  intent: "Buy-Name",
  name: "my-name",
  type: "lease",
  years: 1,
});

const { antId, messageId } = await turbo.buyArNSName({
  name: "my-name",
  owner,
  type: "lease",
  years: 1,
});

Requires @ardrive/turbo-sdk 2.1.0 or newer. The samples above were type-checked against 2.1.0 from a clean install.

Extending, upgrading and adding undernames need no signature at all. See the dedicated ArNS Names guide for the full action lifecycle, pricing, record management and transfers.

Pricing & Fees

Three charges, and nothing else: the storage rate for the bytes, a per-item fee for each item uploaded, and the infrastructure fee taken out of each top up. The ar.io Console shows all three live, with the same names.

Infrastructure fee

It is taken out of what you pay, not added on top. At a 35% fee, for example, a 100topupbuyscreditsworth100 top up buys credits worth 65, rather than costing $135. It covers the costs of managing infrastructure and, for crypto top ups, token liquidity. Spending credits carries no percentage fee: this one applies on the way in.

Turbo sets the fee for each currency, and it can change. Read it live rather than from these docs:

  • The ar.io Console Settings page shows the fee on card top ups.
  • Every top up quote from the payment service, GET /v1/price/:currency/:amount, lists the fee it applied in its fees array.

Storage rate and per-item fee

  • The storage rate is priced per byte and quoted per GiB. Credits maintain a 1:1 peg of storage purchasing power as Arweave's data storage rates and token price fluctuate.
  • The per-item fee is a flat charge for each data item, one per file, on top of the byte cost, covering per-item processing overhead. It is pegged in dollars at 0.00002peritem∗∗,i.e.∗∗0.00002 per item**, i.e. **0.02 per 1,000, valued at AR's market price. The credits figure moves as AR does, so read it live from perDataItemFeeWinc in /v1/rates, which is what the Console displays, and what every cost estimate there adds per file.
  • Small uploads can be free. Items up to 105 KiB are eligible for the free tier, subject to a 10 MiB lifetime allowance tracked per-wallet and per-subnet. An upload must fit under both, and the allowance never resets. Check a wallet's remaining free allowance with turbo.getFreeStatus() (below).

Getting Started

Ready to start using Turbo Credits? Choose your path:

Next Steps

How is this guide?