Add micropayment paywalls to any website with two lines of code.
Users click once to unlock content. AI agents pay automatically via x402. No accounts, no forms, no card numbers. Just value exchange at the speed of the web.
Click the pay button to unlock the article. This is exactly what your users will see.
Traditional blockchains force every transaction through a single chain, creating inherent throughput limitations. Block-lattice architecture takes a fundamentally different approach: each account maintains its own blockchain, enabling parallel transaction processing without global consensus bottlenecks.
Three steps. No signups, no redirects, no waiting.
Two lines of HTML. Set the price and your Z address. The widget renders automatically — blurred content, pay button, and receipt.
One click sends the Z payment. No account creation, no card entry, no email. The transaction confirms in under 500ms.
Payment is verified on-chain. The paywall drops, content is revealed, and a receipt is shown. Session tokens cache access for return visits.
The same paywall works for browser users and AI agents. Different paths, same settlement.
HTTP 402 + payment detailsCopy-paste integration for any framework. Static HTML, Express, FastAPI, or MCP.
<!-- 1. Add the widget script --> <script src="https://pay.zzero.net/widget.js"></script> <!-- 2. Wrap paywalled content --> <div data-z-pay="5" data-z-to="zr_a1b2c3d4e5f6..." data-z-label="Unlock this article"> <!-- Your premium content here --> <p>This content is only visible after payment.</p> </div> <!-- Optional: customize appearance --> <div data-z-pay="10" data-z-to="zr_a1b2c3d4e5f6..." data-z-button="Read Full Report" data-z-session="24h" data-z-preview="3"> <!-- Shows first 3 paragraphs, blurs the rest --> </div>
const express = require('express'); const { zeroPay } = require('@zero-network/express'); const app = express(); // Protect any route with a Z paywall app.get('/premium-article', zeroPay({ amount: 5, // 5 Z ($0.05) to: 'zr_your_address', session: '24h', // Cache access for 24 hours }), (req, res) => { // Only runs after payment is confirmed res.json({ title: 'Premium Article', content: 'The full article content...', receipt: req.zeroReceipt }); }); // x402: agents auto-pay, no widget needed app.get('/api/data', zeroPay({ amount: 1, to: 'zr_your_address', x402: true, // Enable HTTP 402 for agents }), (req, res) => { res.json({ data: 'premium API data' }); }); app.listen(3000);
from fastapi import FastAPI from zero_sdk import ZeroPaywall app = FastAPI() paywall = ZeroPaywall(to="zr_your_address") @app.get("/premium") @paywall(amount=5, session="24h") async def premium_content(request): return { "title": "Premium Analysis", "content": "Full content here...", "receipt": request.state.zero_receipt } # API paywall with x402 for agents @app.get("/api/v1/data") @paywall(amount=1, x402=True) async def api_data(request): return {"data": "premium data"} # Tiered pricing @app.get("/api/v1/report") @paywall(amount=25, x402=True) # 25 Z ($0.25) — max tx async def full_report(request): return {"report": "comprehensive analysis..."}
from mcp.server import FastMCP from zero_sdk import require_payment, verify_payment server = FastMCP("My Paid Tools") @server.tool() async def web_search(query: str, payment_proof: str = None): """Search the web. Costs 0.10 Z ($0.001) per query.""" # Check payment if not payment_proof: return require_payment( amount=0.10, to="zr_your_address", description="Web search query" ) # Verify and execute if not verify_payment(payment_proof, amount=0.10): return {"error": "Invalid payment"} results = await do_search(query) return {"results": results} # Agent auto-pays via spending policy: # { "max_per_call": "1 Z", "max_per_session": "25 Z" }
Configure pricing, sessions, appearance, and callbacks via data attributes.
Traditional payment processors weren't built for $0.05 transactions.
| Feature | Zero Pay | Stripe | Lightning | Solana Pay |
|---|---|---|---|---|
| Min viable payment | $0.0002 (0.02 Z) | $0.50 (fees eat it) | $0.001 | $0.01 |
| Fee on $0.05 tx | $0.0001 (0.2%) | $0.32 (640%) | ~$0.001 (2%) | $0.002 (4%) |
| Settlement time | <500ms | 2-7 days | ~1 second | ~400ms |
| User account required | No | Yes (card + email) | Wallet required | Wallet required |
| AI agent compatible | Native (x402) | No | Partial | Partial |
| Price stability | 1 Z = $0.01 (fixed) | USD | BTC (volatile) | SOL (volatile) |
| Integration effort | 2 lines of HTML | Backend + frontend | Lightning node | SDK + wallet adapter |
| Chargebacks | Impossible | Yes (costly) | No | No |
See what micropayments could earn you.
Everything you need to know about accepting Zero payments.
data-z-session), the content is automatically unlocked without re-payment. The token is cryptographically signed so it can't be forged or transferred.data-z-fallback="open" to show content for free during outages, or data-z-fallback="closed" to keep it locked. Session tokens still work offline since they're verified locally.