No transaction fee · Non-custodial · Flat plans

A flat price, never a
cut of your sales

ZettaPay is never in the flow of funds — payments go straight from the payer to your wallet — so it cannot and does not take a percentage. Self-hosting the open-source listener is free forever. Cloud is a flat monthly plan sized by how many invoices you create. Your customer pays only the normal network fee of the chain.

No transaction fee
Never a percentage
Non-custodial
Payer→your wallet, direct
Free to self-host
Open source, MIT
Self-hosted · open source

$0

Free forever. No limits.

Install @zettapay/listener from npm and run it on your own infrastructure. MIT-licensed, no invoice caps, no account with us, nothing to pay. You operate it; the funds land directly in your wallet.

Network fee (paid by the payer, not to us)
  • Bitcoin Bitcoin network fee
  • USDC on Base Base gas
  • USDT on Base Base gas

The network fee is whatever the chain charges for a normal transfer. It goes to the network, never to ZettaPay — on any plan.

Cloud · managed

We run the listener. You keep the keys.

The same listener core, hosted for you, with an API and hosted checkout links. A flat monthly subscription by invoice volume — invoices created per calendar month. Still non-custodial, still no transaction fee.

Early-access pricing — subject to change
Free
$0
Up to 50 invoices / month

Enough to launch and take your first payments. No card needed.

Starter
$19 / month
Up to 500 invoices / month

For a shop with steady orders. Same features, a higher monthly cap.

Pro
$49 / month
Up to 5,000 invoices / month

For higher volume. Above 5,000 invoices a month, contact us.

  • The price does not depend on how much you sell. A plan counts invoices created in the calendar month, not their value. There is no percentage on any plan.
  • When you reach the monthly cap, creating new invoices is paused until the next month or until you upgrade. Invoices you already created keep being watched, confirmed and delivered to your webhook.
  • Paying for a plan: upgrade from your dashboard at /app. Pay in crypto — a normal ZettaPay invoice that activates the plan for 30 days once it confirms; renew by paying again — or by card, as a subscription that renews monthly on a page hosted by Stripe.
  • Every account starts on Free. Create one at /app in a minute. A paid plan that is not renewed falls back to Free.
Create account early access · self-serve signup
Confirmation listener
We watch the chain for you

Bitcoin and Base are watched for the addresses derived from your public key, so your backend doesn’t have to.

Signed webhooks
HMAC-signed confirmations

When a payment confirms on-chain, your endpoint receives a signed webhook with the amount, asset, chain and transaction hash.

API + checkout links
Create invoices, share a link

Create invoices through the API under /api/v1, or send your customer a hosted checkout link.

Comparison

ZettaPay vs card processors

ZettaPay is not a card processor. It watches the chain and tells your backend when an on-chain payment to your own wallet has confirmed. Different model, different properties.

Property
Self-hosted ZettaPay · open source
Cloud ZettaPay · managed
Card processors In general
Fee per transaction
None
None
A percentage of each sale
What you pay ZettaPay
$0 — you run it
Flat monthly plan, from $0
—
Invoice limit
None
Per plan, per calendar month
—
Network fee
Paid by the payer, to the chain
Paid by the payer, to the chain
Not applicable
Custody of funds
✓ Non-custodial
✓ Non-custodial
✗ Processor holds funds until payout
Where the money lands
Your own wallet, on-chain
Your own wallet, on-chain
Your bank account, after payout
Settlement time
Depends on the chain
Depends on the chain
Depends on the payout schedule
Chargebacks
✓ None — on-chain payments are final
✓ None — on-chain payments are final
✗ Part of the card system
Who runs the listener
You
We do
—
Confirmation webhooks
✓ HMAC-signed
✓ HMAC-signed
✓ Yes
Identity checks for the merchant
✓ None — no account at all
✓ None — e-mail and a public key
Business verification required
Wallet connection or private key
✓ Never asked
✓ Never asked
Not applicable
What you can accept
BTC · USDC and USDT on Base
BTC · USDC and USDT on Base
Cards, in fiat currencies

The trade-offs run both ways. ZettaPay does not convert or settle in fiat, and it has no refund button: an on-chain payment is final, so if you want to refund a customer you send it yourself from your own wallet.

Built to trust

No surprises in the small print

No take rate
We can’t skim what we never touch

ZettaPay only ever holds public key material. The payment moves from the payer to your wallet without passing through us, so there is nothing to take a percentage of.

No lock-in
Open source, MIT

Cloud runs the same listener core you can run yourself. Move from Cloud to self-hosted whenever you like — your keys and your funds never lived here.

At the cap
Nothing in flight is dropped

Hitting a plan’s monthly cap only pauses the creation of new invoices. Every invoice already created is still watched, confirmed and sent to your webhook.

FAQ

Quick answers

The questions merchants ask before integrating.

How do I get started?
Pick one of two routes:
  1. Self-hosted. Run npm install -g @zettapay/listener, point it at your public key and start it on your own infrastructure. The walkthrough is in /docs/quickstart.
  2. Cloud. Create an account at /app with an e-mail, a shop name and your public key (a BIP-84 xpub for Bitcoin; an xpub or a fixed receive address for Base); a webhook URL is optional. Your API key is shown once — paste it to sign in to the dashboard. Cloud is in early access, so features may change.

Either way you only ever hand over public material. No wallet connection, no private key.

If there’s no transaction fee, how does ZettaPay make money?
From the Cloud subscription. ZettaPay is never in the flow of funds — the payment goes straight from the payer to your wallet — so there is no way for us to take a cut, and we don’t want one. What costs us money is running the listener for you, so that is what the flat monthly plan pays for.

If you would rather not pay anything, self-host: the listener is open source under MIT, free forever and has no limits.

What counts as an invoice, and what happens at the cap?
Plans count the invoices you create in a calendar month: 50 on Free, 500 on Starter, 5,000 on Pro.

When you reach the cap, creating new invoices is paused until the next month begins or until you upgrade. Invoices already created are not affected — they keep being watched, confirmed and delivered to your webhook.

Need more than 5,000 a month? Contact us.

How do I pay for a plan or upgrade?
Sign in to your dashboard at /app and pick a plan. There are two ways to pay:
  • In crypto. You get a normal ZettaPay invoice. Once it confirms, the plan is active for 30 days; to renew, pay again.
  • By card. A subscription that renews monthly. The card page is hosted by Stripe — ZettaPay never sees card data.

A paid plan that is not renewed falls back to Free. There is still no per-transaction fee. These are early-access prices and may change.

Do you run identity checks?
No. ZettaPay is identity-free. Self-hosting needs no account at all. Cloud asks for an e-mail, a shop name, your public key or receive address and a webhook URL — no identity documents and no wallet connection.

ZettaPay is non-custodial: funds move directly from the payer to you on-chain and we never hold them. You remain responsible for your own legal and tax obligations where you operate.

Bring a public key.
We’ll watch the chain.

No transaction fee on any plan. Start free on Cloud, or self-host the open-source listener and pay nothing at all. Either way, the funds go straight to your wallet.