Skip to content

Nimbus SDK

Add private balances and payments to your Solana app.

Nimbus lets you add private balances and payments to a Solana web app. Users deposit from their wallet, pay other users and withdraw to a Solana address.

The SDK builds proofs, stores and syncs private balances, and submits payments in the browser. Spending keys stay on the user's device. Your app connects the wallet and shows each payment's progress and result.

New to Nimbus? Start with private balances and Umbra 101.

Choose your path

Quickstart

Follow Alice and Bob through setup, a deposit, Private Send and a withdrawal.

API reference

Find the functions, types, options and results your integration needs.

Use cases

Private balances and payments are building blocks for financial products. Private Send settles between registered Nimbus users.

Your app provides business workflows and any fiat or payment-service integrations.

Add payment history and progress feedback as you build out the experience.

How it works

Alice’s walletAlice’s privatebalanceBob’s privatebalanceSolana addressDepositPrivate SendWithdrawPublic depositPublic destination
Deposit into a private balance, then send to a registered user or withdraw. Deposits and withdrawals have public records.Private Sends and withdrawals use a relayer. Spending keys stay on the device; the pool program controls deposited tokens.

Open an account. Signing the wallet's unlock message opens the private account on this device. It moves no money and costs nothing.

Deposit. Deposits increase the private balance by the deposited amount, less the protocol fee.

Pay or withdraw. A relayer submits Private Sends and withdrawals. The connected wallet does not sign those transactions or pay their Solana network fee.

Keep control. The pool program controls deposited tokens; spending a private balance requires its owner's keys.

What your app needs

  • A web app. Next.js, Vite or any bundler works. The SDK runs in the browser, not on a server.
  • Two response headers. The proofs use shared memory, which browsers allow only on cross-origin isolated pages.
  • The SDK's files. It ships WebAssembly and a worker script that your app serves from its own site.
  • A gateway token for mainnet. It lets your app use Nimbus's services. To get one, email dev@umbraprivacy.com or reach out to any Umbra team member. The mainnet gateway token shows how to pass it.

Check browser support before choosing the browsers your app supports. The quickstart uses mainnet and moves real USDC. Its code examples are checked against the SDK when the site builds.

Before you launch

Deposits publish the funding wallet, token and amount, but not whose private balance receives them. Withdrawals publish the destination, token and amount, but not which private balance paid.

Private Send does not publish the sender, recipient, payment token or amount. The relayer transaction and any paid tip remain public. A tip paid in the payment token makes that token visible. Matching amounts and nearby transaction times can still narrow privacy.

Review privacy boundaries, privacy risks and the production checklist.

Use troubleshooting when an integration fails, and check the changelog before upgrading.

Last updated