Take donations without publishing your donors

Supporters give in USDC. Their names stay off the public chain.

Watch the demo
donation address
inbound
visibility
supporter.eth
donation
50.00 USDC
PUBLIC
0x91a2…e4f0
monthly donor
25.00 USDC
PUBLIC
foundation.eth
major gift
25,000.00 USDC
PUBLIC
via Curvy
donor not linked
hidden
SHIELDED
Rows 1–3: anyone can read them. Row 4: nobody can.
The problem

How a donor ends up listed

  1. your website
    • Support our work
    • Donate: 0x5d8e…

    01 Your address is on your site.

  2. block explorer
    • supporter.eth 50 USDC
    • foundation.eth 25,000 USDC

    02 Every gift is public.

  3. someone’s list
    • Donors to this cause:
    • supporter.eth
    • foundation.eth

    03 Donors get listed, and targeted.

On the public record

What a donation address leaks

All of it is readable from one public address, by anyone, for as long as the chain exists.

  • Who gives

    Donor wallets, often tied to names.

  • How much

    Major donors, easy to spot.

  • Your runway

    Income and balance, for anyone.

  • Donor safety

    For some causes, being listed is a risk.

Customer side

What your donor sees

Three screens. No account and no browser extension. The private part happens on your side.

Example screens
  1. your site

    Donation

    50.00 USDC

    Pay by card Pay with USDC or USDT

    01 One more button at checkout

  2. hosted checkout

    Amount due

    50.00 USDC

    NetworkArbitrum
    Pay withUSDC
    Pay from wallet

    02 Pay from the wallet they have

  3. confirmation

    Payment received

    gift #2291

    03 Done. No account, no extension

An example of what your customer sees. Not a live checkout.

Payment flow

How it works

  1. Payment request Created
    ref
    gift #2291
    amount
    50.00 USDC

    01

    Donor picks amount

    Your page creates a request

  2. Payment request Paid
    ref
    gift #2291
    amount
    50.00 USDC
    from
    customer wallet

    02

    Donor pays

    From the wallet they have

  3. Payment request Shielded
    ref
    gift #2291
    amount
    50.00 USDC
    from
    customer wallet
    to
    hidden

    03

    Shielded on arrival

    Fresh address, every time

  4. Payment request Confirmed
    ref
    gift #2291
    amount
    50.00 USDC
    from
    customer wallet
    to
    hidden

    04

    Recorded

    Ready for receipts

  • No customer account
  • Hosted checkout
  • USDC + USDT on Arbitrum
  • From $0.50
Visibility

Who sees what

The donor’s own transfer is always public.

who The donation That they gave to you Total raised
The public Can see Hidden Hidden
Other donors Can see Hidden Hidden
You Can see Can see Can see
sees it hidden only if you share the key
Fit check

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
Practicalities

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.
Trust

Built to be checked

Backed by Ethereum FoundationStarknet FoundationArbitrum FoundationLI.FI
FAQ

Questions

Can donors stay off a public list?

Yes. Donations land on fresh addresses that aren’t linked to you. You still see every one through your viewing key.

Can I issue receipts?

Yes. Each donation carries a reference, and your viewing key gives the full history. Receipts come from your own system.

Can I publish a total if I want?

Yes, by publishing it yourself. You decide what goes public.

Which stablecoins are supported?

USDC and USDT, settled on Arbitrum. The minimum payment is $0.50, and fees are taken from the payment.

Let supporters give without being listed.

Tell us how you take payments today, and we’ll show you where Curvy fits.

Watch the demo
On a call, we go through
  • Your payment flow, step by step
  • What stays visible, and to whom
  • How the SDK fits your stack
  • Your compliance questions