Sell digital goods without a public sales counter
Buyers pay in USDC. Nobody can count your sales but you.
What a competitor can chart today
sales per hour
Nothing to chart
The payments aren’t linkable to you.
Your launch, watched live from one address. Values are illustrative.
What a store address leaks
All of it is readable from one public address, by anyone, for as long as the chain exists.
- 01 Sales per product Fixed prices map each transfer to an item.
- 02 Launch results Watch a launch work, live.
- 03 Pricing tests Every discount shows the moment it’s used.
- 04 Your buyers Every wallet that bought from you.
What your buyer sees
Three screens. No account and no browser extension. The private part happens on your side.
-
your site
Course: Design systems
149.00 USDC
Pay by card Pay with USDC or USDT01 One more button at checkout
-
hosted checkout
Amount due
149.00 USDC
Pay from walletNetworkArbitrumPay withUSDC02 Pay from the wallet they have
-
confirmation
Payment received
order #5520
03 Done. No account, no extension
An example of what your customer sees. Not a live checkout.
How it works
- Payment request Created
- ref
- order #5520
- amount
- 149.00 USDC
01
Buyer checks out
Your server creates a request
- Payment request Paid
- ref
- order #5520
- amount
- 149.00 USDC
- from
- customer wallet
02
Buyer pays
From the wallet they have
- Payment request Shielded
- ref
- order #5520
- amount
- 149.00 USDC
- from
- customer wallet
- to
- hidden
03
Shielded on arrival
Fresh address, every time
- Payment request Confirmed
- ref
- order #5520
- amount
- 149.00 USDC
- from
- customer wallet
- to
- hidden
04
Delivered
Download or key released
- No customer account
- Hosted checkout
- USDC + USDT on Arbitrum
- From $0.50
Who sees what
The payer’s own transfer is always public.
| who | The payment | That they bought | Sales per product |
|---|---|---|---|
| The public | Can see | Hidden | Hidden |
| You | Can see | Can see | Can see |
| Your accountant | Can see | Only if you share your viewing key | Only if you share your viewing key |
But what about…
- Refunds
- A new payment back to the customer, from your own process.
- Tax and accounting
- Your accountant reads every payment with the viewing key.
- Compliance
- Incoming funds are screened before they’re shielded.
- Custody
- You hold the keys. Curvy can’t move your funds.
- Chargebacks
- None. Onchain payments are final.
- Customers without USDC
- Keep your other methods. This is one more option.
Is it right for you?
Good fit if
- Your customers pay, or ask to pay, in USDC or USDT
- Your revenue or customer list is sensitive
- You’re happy to receive stablecoins, not fiat
- You can add a server-side call to checkout
Not yet if
- You need fiat paid into your bank automatically
- You need chains other than Arbitrum
- Your customers pay in Bitcoin or other coins
- You need a no-code store plugin today
Built to be checked
- Audited by Ethernal Full report public on GitHub
- Open-source contracts github.com/0xCurvy
- Published research Stealth address protocols
- 10+ years together Two PhDs in ZK and cryptography
Questions
Can I sell low-priced items?
Yes. The minimum payment is $0.50, and fees come out of the payment.
When do I deliver?
When your backend confirms the payment against the order reference. Then release the download or licence key.
Is the buyer’s payment hidden?
No. Their transfer is public. It doesn’t show that it went to your store.
Which stablecoins are supported?
USDC and USDT, settled on Arbitrum. The minimum payment is $0.50, and fees are taken from the payment.
Keep your sales numbers yours.
Tell us how you take payments today, and we’ll show you where Curvy fits.
Watch the demo- Your payment flow, step by step
- What stays visible, and to whom
- How the SDK fits your stack
- Your compliance questions