Payments the chain can't read.
Escudo is a crypto payment gateway that never holds your money. Your customer pays on any of 9 networks, the payment passes through a zk shielded pool, and it settles straight into your own wallet with no public link back to the payer.
You always know who paid which invoice. The chain never does.
A payment gateway with nothing to hand over.
With an ordinary crypto gateway your receiving address is a public income statement, and every customer who pays you is permanently linked to your business. Escudo never takes custody, never stores customer data, and never writes that link on-chain. Everything else works the way you already expect from a payment provider.
{
"id": "evt_31c9a7",
"type": "invoice.paid",
"invoice": "inv_8f2a…c41d",
"amount": "1200.00",
"currency": "USDC",
"network": "base",
"confirmations": 12,
"metadata": { "order_id": "ORD-1234" }
}
How the privacy works
Escudo routes every payment through a zk shielded pool: a smart contract that holds deposits as cryptographic commitments and releases them with zero-knowledge proofs. Nobody, including us, can connect a deposit to the settlement it funds.
Customer pays the invoice
They send the exact amount to a one-time deposit address on the network they chose. From their side it's an ordinary transfer from any wallet or exchange. No account, no email, no KYC.
The deposit becomes a commitment
The pool records a cryptographic commitment instead of your address. Thousands of deposits across the network share the same anonymity set, so a single one cannot be singled out.
A zero-knowledge proof releases the funds
A zk-proof generated with your keys shows the contract that a valid unspent deposit exists and that your wallet is entitled to it, without revealing which deposit. A nullifier ensures it can never be spent twice. The proof is generated in your browser, so nothing about the payment leaves your device, and no step requires Escudo's approval.
Settlement lands in your wallet
Escudo covers the gas for the settlement transaction, so your wallet needs nothing to receive it. The pool pays your address directly, minus 0.3%. On-chain, the settlement shares no link with the deposit. Off-chain, your dashboard matches it to the right invoice and customer.
What changes with a privacy gateway
| Ordinary crypto gateway | Escudo | |
|---|---|---|
| Who holds the funds | Usually the provider, until you withdraw | You. Settlement goes straight to your wallet |
| Who paid you, on-chain | Visible. Every payer is permanently linked to your address | Hidden. Settlements arrive from the Escudo pool; no payer ever appears next to your address |
| What your address reveals | Everything. Each customer, amount and date, forever | Only settlements from the pool. No customer list, no invoice, no link to any deposit |
| Customer data stored | Email, IP, wallet, often KYC | Only the metadata you attach to an invoice |
| Can the provider freeze a payment | Yes, funds sit in the provider's account | No. Once a deposit enters the zk shielded pool it is locked by cryptography, not by us. Escudo has no admin key and no custody |
| Your own records | Whatever the provider exports | Full transaction history in your dashboard, exportable any time |
| Fee | Usually a percentage plus a monthly plan | 0.3%, nothing else |
Choose how you want to use Escudo
Both run on the same zk shielded pool. The gateway is for getting paid; the pool app is for moving your own funds without leaving a trail.
Payment Gateway
Accept payments from customers on 9 networks with the same privacy as the pool. Every invoice is paid into the zk shielded pool and settled to your wallet, so no customer is ever linked to your business on-chain.
- Every payment routed through the zk shielded pool, not just a plain transfer
- Your wallet shows settlements from the pool only; no payer, no customer list
- Customer pays from any wallet or exchange, no account, no KYC
- Invoices, hosted checkout, API and signed webhooks
- Escudo never holds the funds. Flat 0.3% per payment
Shielded Pool
Move your own crypto privately. Deposit from your wallet, keep it as a private balance or a secret note, then send to any address or swap inside the pool.
- Zero-knowledge proof generated in your browser; nothing leaves your device
- Send to one or many addresses, or swap coins without leaving the pool
- No account, no email, no KYC. Unlock with your wallet, or keep a secret note
- Open source, served from ENS and IPFS with no central server
Built for businesses where who-paid-whom is nobody's business
Agencies and freelancers
Invoice international clients in USDT or USDC without publishing your client list and your rates to the whole chain.
invoices · retainersPrivacy-sensitive services
Clinics, legal practices, counselling, security researchers. Your clients' decision to pay you shouldn't be a public record.
one-off · recurringDigital goods and SaaS
Hosted checkout and webhooks drop into any stack. Customers pay in seconds with no account and no card, on the network they already use.
checkout · APIHigh-value B2B
Settle large invoices without broadcasting your treasury address or letting counterparties read your other deals.
settlements · OTCIntegrates in an afternoon.
One request creates an invoice and returns a hosted checkout page. One webhook tells you it's paid. Plain REST and JSON, so it works from PHP, Node, Python, Go, Ruby, Java or anything else that can make an HTTPS call. Test keys run against a sandbox pool with no real funds.
Open the documentation# Create an invoice for 100 USDT on Polygon curl -X POST https://api.escudo.cash/v1/invoices \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -d '{ "amount": "100.00", "currency": "USDT", "network": "polygon", "webhook_url": "https://yoursite.com/escudo", "metadata": { "order_id": "ORD-1234" } }' # 201 Created { "id": "inv_8f2a…c41d", "checkout_url": "https://pay.escudo.cash/8f2a" }
import Escudo from "@escudo/node"; const escudo = new Escudo(process.env.ESCUDO_KEY); const invoice = await escudo.invoices.create({ amount: "100.00", currency: "USDT", network: "polygon", webhookUrl: "https://yoursite.com/escudo", metadata: { orderId: "ORD-1234" }, }); res.redirect(invoice.checkoutUrl);
$ch = curl_init("https://api.escudo.cash/v1/invoices"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode([ "amount" => "100.00", "currency" => "USDT", "network" => "polygon", "webhook_url" => "https://yoursite.com/escudo", "metadata" => ["order_id" => "ORD-1234"], ]), CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("ESCUDO_KEY"), "Content-Type: application/json"], CURLOPT_RETURNTRANSFER => true, ]); $invoice = json_decode(curl_exec($ch), true); header("Location: " . $invoice["checkout_url"]);
import escudo client = escudo.Client(api_key=os.environ["ESCUDO_KEY"]) invoice = client.invoices.create( amount="100.00", currency="USDT", network="polygon", webhook_url="https://yoursite.com/escudo", metadata={"order_id": "ORD-1234"}, ) return redirect(invoice.checkout_url)
Of each confirmed payment, deducted on-chain at settlement and itemised on every receipt. There is no other number.
No plans to compare
You only pay when you get paid. No monthly fee, no setup fee, no minimum volume, no card to start.
- Networks
- All 11 included
- Invoices and API calls
- Unlimited
- Webhooks
- Included, HMAC-signed
- Transaction history and exports
- Included
- Sandbox
- Free, unlimited
- Settlement
- Direct to your wallet, 0.3% deducted on-chain
Common questions
No. Escudo is a payment gateway, not a wallet or an exchange. A payment moves from your customer into the zk shielded pool and from the pool directly into the wallet address you set. At no point is there a balance sitting with Escudo, so there is nothing to withdraw, nothing to wait for and nothing we could freeze.
USDT and USDC on every supported network, plus each network's native token (ETH, BNB, MATIC, AVAX, TRX, SOL and so on). You choose what to accept per invoice or set a default.
At the speed of the network. Settlement happens in the same flow as confirmation, so there is no withdrawal step and no holding period. Seconds on L2s and Solana, under a minute on Ethereum mainnet.
The customer pays the gas for their deposit, as with any on-chain transfer. The settlement to your wallet is covered by the 0.3% fee, so you never need to hold gas tokens on any network just to get paid.
Yes. A payment in USDC on Base settles to your wallet as USDC on Base; a payment in SOL settles as SOL. Escudo does not convert or bridge funds, which keeps settlement final and keeps us out of custody.
No, and not because of a policy. Escudo is a payment gateway, not a custodian: a payment goes from your customer into the zk shielded pool and from the pool to your wallet. Once a deposit is in the pool it can only be released by a valid zero-knowledge proof tied to your keys. There is no admin key, no pause switch and no account of yours on our side, so there is nothing we could freeze even if we were asked to. Settlements are final the moment they reach your wallet; refunds, if you offer them, are sent by you from your own wallet.
Escudo is payment infrastructure, and you remain responsible for the laws that apply to your business and jurisdiction, exactly as with any payment provider. Privacy from the public is not the same as hiding from your obligations: your dashboard keeps your complete transaction history, and you can export it for your accountant or for tax whenever you need to.
The link between a deposit and a settlement is broken cryptographically inside the pool, not by a database we promise not to look at. Your transaction history is encrypted with keys that stay with you; we hold the invoice metadata you attach and nothing about the payer's wallet.
Nothing beyond the metadata you attach to an invoice. Your transaction history lives in your dashboard, exportable for accounting and tax, and is never written to the chain.
Not to use it. From your side it behaves like any payment gateway: an invoice, a checkout link, a webhook. The documentation includes a plain-language explanation and the contract addresses if you want to audit it.
Your revenue is nobody else's business.
Get paid through the gateway, or move your own funds through the pool. Either way, nothing about it is written on-chain for others to read.