> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom Rings for Enterprises

> Add private stablecoin payments and balances on Solana via the Private Wallet API, with programmable policy and compliance controls for institutions.

This guide is for fintechs, issuers, payroll platforms, remittance companies, neobanks, and enterprises that want private payment accounts combined with the benefits of blockchain.

## Overview

Your business will be able to:

1. Create private wallets for customer, merchant, or treasury accounts

2. Deposit stablecoins from public to private wallets

3. Send private payments between private wallets

4. Withdraw to public Solana addresses and wallets

5. View private balances and history through API

6. Define dedicated Custom Rings with your own compliance, auditing, and business rules.
   You can either bring your own compliance, or use Helius' managed KYC and sanction screening solution.

7. Configure who can view, approve, freeze, or move funds inside a ring

8. Track private payment status through polling or webhooks

<Accordion title="Terms">
  | Term               | Meaning                                                                                                                                                                                                |
  | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | Enterprise         | The company integrating Helius Privacy                                                                                                                                                                 |
  | Private Wallet     | A payment account with encrypted onchain balances and transfers                                                                                                                                        |
  | Wallet Provider    | The system that manages user accounts, signers, smart accounts, or treasury wallets and holds non-exportable privacy keys. Examples include Turnkey, Privy, Squads, Rain, or an internal custody stack |
  | Owner              | The Solana public key, smart account, or provider-backed signer that authorizes Private Wallet actions                                                                                                 |
  | Inbox              | The Solana public key used as the public receive address for a Private Wallet                                                                                                                          |
  | Ring               | A group of private wallets with balances in the Default Ring or a Custom Ring                                                                                                                          |
  | Default Ring       | The permissionless confidential Ring; asset and amount are private while sender and recipient remain public. No custom policy, authority, or auditor                                                   |
  | Custom Ring        | A configured ring with custom rules, visibility, and authorities                                                                                                                                       |
  | Auditor            | A configured viewer for a Custom Ring. Auditors can read ring data but cannot spend                                                                                                                    |
  | Co-signer          | An optionally configured signer that must approve selected transfers                                                                                                                                   |
  | Freeze Authority   | A configured authority that can freeze or thaw balances when policy allows                                                                                                                             |
  | Permanent Delegate | A configured authority that can move balances inside a ring when policy allows                                                                                                                         |
  | Privacy API        | Helius API for creating Private Wallets, reading balances/history, preparing transfers, generating proofs, and submitting transactions                                                                 |
</Accordion>

## How It Works

A Private Wallet is the core API object you interact with. You can map a Private Wallet to, for example, a customer account, merchant account, employee account, treasury account, or smart account.

Balances and private transfers are encrypted onchain. RPC providers such as Helius index encrypted state, generate proofs, build transactions, and submit them to Solana on demand.

For most enterprise use cases, Private Wallets live inside a dedicated Custom Ring. The ring defines the rules for transfers, visibility, and compliance.

Here is how Helius Privacy fits into your stack:

<img src="https://mintcdn.com/helius/nNv9k5eJvwuxAzBn/images/privacy/trust-model.svg?fit=max&auto=format&n=nNv9k5eJvwuxAzBn&q=85&s=dcff5c66eaee4ec8d534c2c61c30841f" alt="Trust model. The Enterprise App submits intent to the Privacy API / RPC Provider, which calls the Wallet Provider for key operations and submits transactions to Solana." width="1444" height="566" data-path="images/privacy/trust-model.svg" />

### Trust Model

| Component                  | Responsibility                                                                                                                             |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Enterprise App             | Product UI, customer authentication, business workflows                                                                                    |
| Wallet Provider            | Account custody, signers, approval policy, and non-exportable privacy keys with policy-controlled key operations                           |
| Privacy API / RPC Provider | Private Wallet API, sync, state, proving, transaction construction, optionally auditing, and submitting transactions to the Solana network |
| Custom Ring                | Business rules, compliance rules, visibility rules, optional authorities, specified via custom program instructions onchain                |
| Solana                     | Execution and settlement                                                                                                                   |

Private payments require authorization by the private wallet and must comply with the respective ring policy.

Confidential rings (the Default Ring and confidential Custom Rings) support local and delegated decryption. Anonymous Custom Rings support only delegated decryption.
In delegated decryption mode, the wallet and selected RPC provider share a viewing key.
The provider can serve balances and history but cannot authorize spending.
This is distinct from an auditor, whose visibility is defined by Ring policy.

You can run the infrastructure (RPC, indexer, auditor server, or co-signer) yourself, or use an RPC provider such as Helius to run it for you.
We run the infrastructure through our global fleet of high-performance RPCs, and optionally via a dedicated setup customizable to your requirements.
Dedicated infrastructure does not imply a separate onchain state tree.
Custom Rings and the permissionless Default Ring share one Merkle tree.

### Rings

Rings make privacy on Solana programmable, similar to Token-2022.

The Default Ring is permissionless and has no custom policy. A Custom Ring is governed by its own policy ruleset.
One Private Wallet can hold balances in multiple Rings at the same time. Which Ring a balance belongs to is not a property of the wallet. It is a property of each UTXO, stored in its `policy_program_id` field.

* The default ring is confidential and permissionless without any policy, auditors, or authorities. Confidential rings encrypt asset and amount.
* Custom rings can be configured with custom policy and compliance controls and be confidential or anonymous (encrypted asset, amount, sender, recipient).

<img src="https://mintcdn.com/helius/iNBk0QZ3vdaUiFW5/images/privacy/privacy-network.svg?fit=max&auto=format&n=iNBk0QZ3vdaUiFW5&q=85&s=af61b324d07f1184da1f3912d9f050fb" alt="Private Balances shown as a dashed onchain zone holding two rings. The Default Ring is confidential, self-custodial, and permissionless. The Custom Ring is confidential or anonymous, self-custodial, and adds custom policy and custom compliance. A private transfer connects the rings, and each deposits into and withdraws from a Solana Public Balances layer below." width="850" height="540" data-path="images/privacy/privacy-network.svg" />

A private wallet can withdraw from a Custom Ring to a public token account, to the confidential and permissionless Default Ring, or to another
Custom Ring if the source ring policy permits it.

#### Custom Rings Are Programmable

A Custom Ring can define fully custom rules for transfers and visibility/auditing.

<Tip>
  If you want to set up your own Custom Ring, [contact us](https://www.helius.dev/contact) and we will get you set up.
  You can either bring your own compliance, or use Helius’ managed KYC and sanction screening solution.
</Tip>

Rings are programmable. Common examples of rules include:

| Policy                | Example                                                               |
| --------------------- | --------------------------------------------------------------------- |
| Allowed assets        | Only USDC or a specific issued stablecoin                             |
| Transfer limits       | Require extra approval above a threshold                              |
| Co-signing            | Require compliance approval for selected payments                     |
| Allowlists            | Only allow transfers to approved accounts, merchants, or rings        |
| Blocklists            | Block sanctioned or risky destinations                                |
| Freeze/thaw           | Freeze a balance while an investigation is pending                    |
| Permanent delegate    | Allow a configured authority to move funds under policy               |
| Auditor visibility    | Let compliance, accounting, or regulators view ring activity          |
| Cross-ring rules      | Allow or block movement between specific rings                        |
| Withdrawal rules      | Restrict public withdrawals or require approval                       |
| Smart account support | Allow native use with smart accounts such as Squads                   |
| Account recovery      | Allow a configured authority or fallback identity to recover accounts |

Such custom rulesets are programmed as a dedicated Solana program that verifies each applicable transfer's state transition before it atomically settles onchain through the Solana Privacy Protocol (TSPP).

## Ring Administration

### Ring Reporting

Use ring reporting for treasury, accounting, compliance, or your own visibility ruleset.

```bash theme={"system"}
curl "https://privacy.helius.xyz/v1/rings/ring_acme_usdc/transactions?limit=100" \
  -H "Authorization: Bearer $HELIUS_API_KEY"
```

Example response:

```json theme={"system"}
{
  "ringId": "ring_acme_usdc",
  "transactions": [
    {
      "kind": "private_transfer",
      "fromPrivateWalletId": "pw_2W6Qk...",
      "toPrivateWalletId": "pw_8Se1...",
      "mint": "EPjFWdd5AufqSSqeM2q...",
      "amount": "25000000",
      "status": "confirmed",
      "signature": "3jd...",
      "slot": 291044120,
      "metadata": {
        "invoiceId": "inv_123",
        "purpose": "vendor_payment"
      }
    }
  ]
}
```

<Note>
  Auditor access is read-only. An auditor can view the data configured by the ring policy, but cannot sign, spend, freeze, or move funds unless separately configured as an authority.
</Note>

### Freeze or Thaw a Private Wallet

If the Custom Ring has a freeze authority, you can freeze or thaw a Private Wallet according to policy.

```mermaid theme={"system"}
%%{init: {
  'theme': 'base',
  'themeVariables': {
    'lineColor':           '#FF6B35',
    'primaryTextColor':    '#737373',
    'primaryBorderColor':  '#9CA3AF',
    'actorBkg':            '#FFFFFF',
    'actorBorder':         '#9CA3AF',
    'actorTextColor':      '#737373',
    'signalColor':         '#FF6B35',
    'signalTextColor':     '#737373',
    'labelBoxBkgColor':    '#FF6B351F',
    'labelBoxBorderColor': '#FF6B35',
    'noteBkgColor':        '#F5F5F5',
    'noteTextColor':       '#737373',
    'noteBorderColor':     '#9CA3AF'
  }
}}%%
sequenceDiagram
    participant Auth as Ring Authority
    participant API as Privacy API
    participant SOL as Solana
    Auth->>API: POST /freeze or /thaw (walletId, authority signature)
    Note over API: Verify Custom Ring freeze authority
    API->>SOL: Apply freeze or thaw via policy program
    SOL-->>API: Wallet status updated
```

```bash theme={"system"}
curl -X POST https://privacy.helius.xyz/v1/private-wallets/pw_2W6Qk.../freeze \
  -H "Authorization: Bearer $HELIUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "compliance_review",
    "authorization": {
      "type": "solana_signature",
      "message": "BASE64_ENCODED_FREEZE_MESSAGE",
      "signature": "BASE58_SIGNATURE"
    }
  }'
```

Example response:

```json theme={"system"}
{
  "id": "pw_2W6Qk...",
  "status": "frozen",
  "reason": "compliance_review"
}
```

Thaw:

```bash theme={"system"}
curl -X POST https://privacy.helius.xyz/v1/private-wallets/pw_2W6Qk.../thaw \
  -H "Authorization: Bearer $HELIUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "authorization": {
      "type": "solana_signature",
      "message": "BASE64_ENCODED_THAW_MESSAGE",
      "signature": "BASE58_SIGNATURE"
    }
  }'
```

## Monitoring via Webhooks

Use webhooks for transfer lifecycle updates.

```bash theme={"system"}
curl -X POST https://privacy.helius.xyz/v1/webhooks \
  -H "Authorization: Bearer $HELIUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "events": [
      "private_wallet.created",
      "private_wallet.balance_updated",
      "private_wallet.transaction_confirmed",
      "policy.action_required"
    ],
    "url": "https://example.com/helius/privacy/webhook"
  }'
```

Example event:

```json theme={"system"}
{
  "type": "private_wallet.transaction_confirmed",
  "ringId": "ring_acme_usdc",
  "owner": "9xQeWvG816bUx9EPf...",
  "privateWalletId": "pw_2W6Qk...",
  "signature": "3jd...",
  "slot": 291044120
}
```

## Security and Privacy Properties

* Helius API keys authenticate enterprise projects. They do not authorize spending. Spending authorization requires a wallet signature, alternative authorization through the underlying key management service (such as Privy or Turnkey), or, if configured, ring policy.
* Private key material is held in Wallet Provider-managed secure infrastructure.
* Helius does not receive or export private spending keys.
* In delegated decryption mode, the wallet and provider share a viewing key. The provider can read balances and history but cannot authorize spending.
* Custom Ring auditors can view configured ring activity but cannot spend.
* Transactions to or within a Custom Ring publicly invoke its policy program.
* Co-signers approve selected transfers but cannot spend alone unless policy allows it.
* Freeze authorities can freeze or thaw balances only if the ring policy allows it.
* Permanent delegates can move balances only if explicitly configured in the ring policy.
* Private transfers inside a ring do not reveal asset or amount onchain. A confidential ring reveals sender and recipient; an anonymous ring uses a relayer and does not reveal either party. Ring policy may specify additional visibility.
* Withdrawals reveal destination, asset, and amount.
* Public crypto deposits reveal source, asset, and amount. On-ramp from a fiat balance keeps asset and amount private (encrypted onchain).
* Public transfers reveal sender, recipient, asset, and amount.

## Didn't find what you were looking for?

<Callout type="info">
  Reach out! [Telegram](https://t.me/tilo_light) | [E-Mail](mailto:sales@helius.xyz) | [Contact](https://www.helius.dev/contact)
</Callout>
