> For AI agents: the documentation index is at https://sdk.nimbusprivacy.xyz/llms.txt, and every page is available as Markdown at its URL with .md appended.

# Nimbus SDK (/)

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](https://sdk.nimbusprivacy.xyz/explainers/private-balance) and
[Umbra 101](https://docs.nimbusprivacy.xyz/introduction/umbra-101).

## Choose your path

- [Quickstart](https://sdk.nimbusprivacy.xyz/getting-started/quickstart): Follow Alice and Bob through setup, a deposit, Private Send and a withdrawal.
- [API reference](https://sdk.nimbusprivacy.xyz/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.

- [Fintech & neobanks](https://sdk.nimbusprivacy.xyz/helpers/balances): Offer private balances and payments in consumer finance apps, without publishing individual account balances or the amounts customers send.
- [Cross-border payments](https://sdk.nimbusprivacy.xyz/transfer): Build stablecoin remittance flows that keep senders, recipients and payment amounts off the public transaction record.
- [Payroll & payouts](https://sdk.nimbusprivacy.xyz/transfer#options): Pay employees and contractors individually with Private Send, keeping recipients and payment amounts out of the public transaction record.
- [Merchant payments](https://sdk.nimbusprivacy.xyz/transfer#follow-it-to-the-end): Accept customer payments without publishing the buyer, merchant or payment amount on the public transaction record.
- [B2B payments](https://sdk.nimbusprivacy.xyz/transfer): Settle supplier invoices and partner payments while keeping counterparties and individual payment amounts private on the public chain.
- [Corporate treasury](https://sdk.nimbusprivacy.xyz/helpers/balances): Manage private operating balances and move funds between registered accounts without publishing each account's holdings or internal payment amounts.

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

Add [payment history](https://sdk.nimbusprivacy.xyz/helpers/history) and [progress feedback](https://sdk.nimbusprivacy.xyz/api-design/progress) as you build out the experience.

## How it works

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.

- [Alice’s wallet](https://sdk.nimbusprivacy.xyz/deposit)
- [Alice’s private balance](https://sdk.nimbusprivacy.xyz/explainers/private-balance)
- [Bob’s private balance](https://sdk.nimbusprivacy.xyz/transfer)
- [Solana address](https://sdk.nimbusprivacy.xyz/withdraw)

**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](https://sdk.nimbusprivacy.xyz/getting-started/setup#turn-on-cross-origin-isolation) pages.
- **The SDK's files.** It ships WebAssembly and a worker script that your app
  [serves from its own site](https://sdk.nimbusprivacy.xyz/getting-started/setup#serve-the-sdks-files).
- **A gateway token for mainnet.** It lets your app use Nimbus's services. To get one, email
  [dev@umbraprivacy.com](mailto:dev@umbraprivacy.com) or reach out to any Umbra team member.
  [The mainnet gateway token](https://sdk.nimbusprivacy.xyz/getting-started/setup#the-mainnet-gateway-token) shows how to pass it.

Check [browser support](https://sdk.nimbusprivacy.xyz/production/browser-support) before choosing the browsers your app supports.
The [quickstart](https://sdk.nimbusprivacy.xyz/getting-started/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](https://docs.nimbusprivacy.xyz/privacy/visibility),
[privacy risks](https://docs.nimbusprivacy.xyz/privacy/leaks) and the
[production checklist](https://sdk.nimbusprivacy.xyz/production/checklist).

Use [troubleshooting](https://sdk.nimbusprivacy.xyz/production/troubleshooting) when an integration fails, and check the
[changelog](https://sdk.nimbusprivacy.xyz/resources/changelog) before upgrading.


Last updated 21 October 2026
