Devnet beta is open. Try it

Private balances for Solana

Your balance is nobody’s business.

Nocta gives any Solana wallet a private balance. Hold, send and get paid in USDC without your amounts, balance or counterparties landing on a public explorer.

Private balance Only you
18,240.52 USDC

Private transfer

Confirmed · slot 455,210,394

To
Mira · design retainer
Amount
2,400.00 USDC
From
Your private balance
Memo
October, invoice #31

Decrypted locally with your viewing key.

01 · Wallet

A private balance in your browser

Deposit USDC, pay any Nocta address and withdraw to any wallet. Your keys come from your wallet signature, and nobody at Nocta can move your funds.

Launch app

02 · Program

One small Solana program

A vault, a Merkle tree of commitments and a nullifier set, checked by a Groth16 verifier on chain. No admin key can withdraw.

How it's secured

03 · SDK · coming soon

Private payments in your product

The same TypeScript the app runs, packaged for wallets, payroll tools and agents. Proofs are always made client-side, never on a server.

Developers

The problem

Solana is fast, cheap and completely see-through.

Paste a wallet into any explorer and you get its whole financial life: salary, rent, suppliers, savings and everyone it pays. Nocta keeps settlement on Solana and takes the details off the page.

A normal USDC transfer, as anyone sees it

PayrollSPL transfer

6,200.00 USDC

7Hx2…kP4q 9aBq…Qe1L

RentSPL transfer

2,150.00 USDC

4mNe…Zr8s Gt7w…2pXa

SupplierSPL transfer

18,940.00 USDC

Cq3V…uM9d 8kLr…Hn2T

FreelanceSPL transfer

1,275.00 USDC

Rz9k…3wYb 5pFd…aQ7m

FamilySPL transfer

400.00 USDC

2xWe…Lk6h Jm4s…Vc1r

API callsSPL transfer

0.42 USDC

Bv8n…Tq5e 6yHu…Pd3k

TreasurySPL transfer

125,000.00 USDC

Ns5g…Ej2w 3cKa…Wm8z

The same payments through Nocta

PrivateNocta transfer

commitment 3fa9e1…c07b

PrivateNocta transfer

commitment b81d44…9a2e

PrivateNocta transfer

commitment 0e7c3a…f415

PrivateNocta transfer

commitment d2a690…13cc

PrivateNocta transfer

commitment 5c11fe…7b80

PrivateNocta transfer

commitment 91e0b7…e6d2

PrivateNocta transfer

commitment a47f2c…08f9

Live demo · runs in your browser

Use it, then look at what the chain saw.

Every action below builds real SHA-256 commitments, a Merkle root and nullifiers, exactly like the on-chain program. Keep an eye on the right-hand side: that's all an explorer ever gets.

Move USDC from your wallet into the vault.

$USDC
Wallet: 0

Deposits are public: the chain sees your wallet put money in. Everything after this step is not.

What you see

Only you

Private balance

0USDC

Public wallet: 0 USDC

Your notes

  • None yet.

Activity

  • Nothing yet.

What the explorer sees

Anyone

Merkle root

00000000

Leaves · nullifiers

0 · 0

Nothing on chain yet. Shield some USDC to create the first public record.

Simulated devnet. Hashes are real, the zero-knowledge proof is mocked.

Where the secret lives

The proof is built on your device. Not on ours.

Some privacy tools send your transaction to a server or a committee that sees everything before hiding it. That server becomes the thing to hack. Nocta builds every proof locally, so there is no central place your history can leak from.

  1. 01

    Your device

    Knows the amount, recipient and your balance

    secret stays here
  2. 02

    Proof

    A few hundred bytes that reveal none of it

  3. 03

    Relayer

    Pays the SOL fee and submits. Learns nothing.

  4. 04

    Solana

    Checks the proof, records hashes, settles

Server-side proving

A service sees your payment, then hides it.

Convenient, until that service is breached, subpoenaed or simply logs too much. Then every user’s past is exposed at once.

Nocta · client-side proving

Only your device ever sees the numbers.

Each transfer is proven in your browser in a few seconds. If one phone is compromised, one person is affected. There is no honeypot.

Who it's for

For money that has a person behind it.

Stablecoins made onchain dollars useful. The missing piece was discretion, for the people, teams and software that actually move them.

Salaries

Pay a team in USDC without publishing a spreadsheet of who earns what.

Freelance income

Bill every client in stablecoins. None of them can look up what the others pay you.

Company treasury

Pay vendors and move reserves without broadcasting your burn rate to competitors.

AI agents

Give an agent a spending budget it can use per request, without exposing the wallet behind it.

Everyday money

Save, split rent and send to family without strangers tracking your net worth.

Creators and tips

Accept support from your audience without turning your income into a public leaderboard.

Payroll · coming soon · try the preview

Payday, without the public spreadsheet.

Drop in a list of people and amounts. Nocta pays each of them from your private treasury through the relayer, so neither the salaries nor the company wallet show up on chain.

Upload a CSV
name, Nocta address, amount
Preview the public view
No names, no amounts
Run it
~1 second per person

November payroll

5 people · USDC

Ready
  • AB

    Ayo Bakare

    nocta1ay0q…zn8g

    6,200

    Queued
  • MT

    Mei Tanaka

    nocta1me7t…5za9

    5,400

    Queued
  • LO

    Lucía Ortega

    nocta1lu5c…7k4d

    4,850

    Queued
  • SW

    Sam Whitfield

    nocta1s4mw…5e2n

    4,100

    Queued
  • PR

    Priya Raman

    nocta1pr7y…2c9h

    3,600

    Queued
Treasury wallet hidden0 of 24,150 USDC

Agents · coming soon

Give your agent a budget, not your treasury.

Agents that pay per request leave a trail that maps your whole stack: which APIs you use, how often, and how much is in the wallet funding them. Nocta lets them pay from a capped private balance instead.

  • Per-call payments over x402, paid from a private balance
  • Daily and per-request caps enforced before a proof is built
  • The wallet that funds the agent never appears on chain
  • An MCP server so any model can pay, inside your limits
research-agentbudget 5.00 USDC / day

For developers · SDK coming soon

Private payments in three calls.

We’re packaging the same code the app runs into an SDK for wallets, apps and agents. This is the API we’re building toward; it isn’t on npm yet.

import { Nocta } from "@nocta/sdk";const nocta = await Nocta.connect({ connection, wallet });// Wallet -> private balance. The deposit is public, the rest isn't.await nocta.shield({ mint: USDC, amount: 250_000_000n });// Proof is built on this device, then handed to the relayer.const { signature } = await nocta.send({  to: "nocta1m7qz4x0d8kfr2c5h9wn3tj6y…",  amount: 120_000_000n,});
Preview API · subject to change

Trust the code,
not us.

Read the risks

No one can take the money

The vault program has no admin withdrawal. Funds move only with a valid proof from the note's owner.

Withdrawals can't be paused

The admin can pause or cap new deposits during the beta. Sending and withdrawing always work.

Capped while in beta

Nocta hasn't been audited yet, so deposits are limited per transaction and in total until it is.

FAQ

Fair questions.

What exactly is public?

Deposits and withdrawals: the wallet, the amount and the time, because tokens cross the vault boundary. Transfers inside Nocta reveal only that a valid transfer happened: two nullifiers, two new commitments, a relayer fee and a proof.

Who pays the SOL network fee?

For private transfers and withdrawals, a relayer signs and pays so your wallet never appears. It takes a small flat fee in USDC from the transfer itself. Deposits are signed by your own wallet.

Where do my keys come from?

You sign one message with your wallet. Nocta derives your private keys from that signature in your browser, so the same wallet gets the same keys on any device and nothing is stored on a server. Only sign that message on usenocta.lol.

Which tokens are supported?

USDC only for now. Each token gets its own pool so amounts can't be mixed across assets.

What are the risks?

Nocta is beta software and hasn't been audited yet. A bug in the circuit or program could lose funds, which is why deposits are capped. Use amounts you can afford to lose until an audit is published.

Can Nocta freeze my money?

No. The program has no admin withdrawal, and the admin switch only pauses new deposits. Sending and withdrawing keep working.

Your next payment doesn’t need an audience.

Shield some devnet USDC and send a private transfer. It takes about a minute.