Keep your MRR off the public chain

Customers pay invoices in USDC. Competitors can’t chart your growth.

Watch the demo
saas billing address
inbound
visibility
02 Oct
starter plan
49.00 USDC
PUBLIC
02 Oct
team plan
299.00 USDC
PUBLIC
03 Oct
enterprise, negotiated
18,000.00 USDC
PUBLIC
03 Oct
via Curvy
hidden
SHIELDED
Rows 1–3: anyone can read them. Row 4: nobody can.
On the public record

What your billing address leaks

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

  1. 01 MRR Your revenue chart, updated every block.
  2. 02 Growth and churn Who starts paying, and who stops.
  3. 03 Pricing What each enterprise deal is really worth.
  4. 04 Customer list Known company wallets name your customers.
The problem

What a competitor can chart today

MRR, one billing address public today
Jan Feb Mar Apr May Jun

USDC, thousands per month

MRR, one billing address with Curvy

Nothing to chart

The payments aren’t linkable to you.

Your growth curve, drawn from public transfers. Values are illustrative.

Payment flow

How it works

  1. Payment request Created
    ref
    invoice INV-2207
    amount
    299.00 USDC

    01

    Invoice due

    Billing creates a request

  2. Payment request Paid
    ref
    invoice INV-2207
    amount
    299.00 USDC
    from
    customer wallet

    02

    Customer pays

    From the wallet they have

  3. Payment request Shielded
    ref
    invoice INV-2207
    amount
    299.00 USDC
    from
    customer wallet
    to
    hidden

    03

    Shielded on arrival

    Fresh address, every time

  4. Payment request Confirmed
    ref
    invoice INV-2207
    amount
    299.00 USDC
    from
    customer wallet
    to
    hidden

    04

    Invoice closed

    Matched by reference

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

What your customer sees

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

Example screens
  1. your site

    Team plan, monthly

    299.00 USDC

    Pay by card Pay with USDC or USDT

    01 One more button at checkout

  2. hosted checkout

    Amount due

    299.00 USDC

    NetworkArbitrum
    Pay withUSDC
    Pay from wallet

    02 Pay from the wallet they have

  3. confirmation

    Payment received

    invoice INV-2207

    03 Done. No account, no extension

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

Visibility

Who sees what

The payer’s own transfer is always public.

who The payment Who got paid Your MRR
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
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

Private, not unaccountable. How the compliance model works

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
Screened at the door Global Ledger checks incoming funds
Non-custodial You hold the keys. Always.
Viewing keys Your accountant sees everything
Settled onchain USDC and USDT on Arbitrum
Backed by Ethereum FoundationStarknet FoundationArbitrum FoundationLI.FI
FAQ

Questions

Does it handle recurring billing?

Each renewal is its own payment request. Your billing system creates it when an invoice is due. There are no pull payments.

Do we need to change our billing system?

No. It stays the source of truth. It calls the Payments SDK when payment is due, and your backend closes the invoice by reference.

Can our accountant see revenue?

Yes. A viewing key gives read-only access to every payment. It can’t move funds.

Which stablecoins are supported?

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

Grow without publishing the chart.

Watch the demo