> For the complete documentation index, see [llms.txt](https://tsunammi.gitbook.io/tsunammi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tsunammi.gitbook.io/tsunammi/wallet-management/anonymous-top-ups.md).

# Anonymous top-ups

**Anonymous Top-ups** lets you fund your wallet pools from a single source (master) wallet **without creating a visible on-chain link** between them. Normally, sending SOL directly from one wallet to many others lets clustering tools connect them on a **bubble map** as clearly related. This feature routes the funds through a privacy swap engine so the destination wallets receive SOL with no direct trail back to the source.

On-page this tool is titled **Anonymous wallet top-ups**.

## How It Works

Under the hood, Anonymous Top-ups is powered by [**HoudiniSwap**](https://houdiniswap.com/) — a non-custodial, privacy-first cross-chain swap engine. The goal is simple: break the on-chain connection between your **master wallet** (the source of funds) and your **pool wallets** (the destinations).

Here is the full technical flow when you confirm a top-up:

{% stepper %}
{% step %}

#### Intake

Your SOL leaves your master wallet into the routing engine (a smart-contract intake step). Your funds are never custodied by Tsunammi.
{% endstep %}

{% step %}

#### Dual-exchange routing

HoudiniSwap uses two distinct, unrelated exchanges for each transfer — an **intake exchange** that receives your asset and an **outtake exchange** that delivers the final asset. The two exchanges are never directly linked.
{% endstep %}

{% step %}

#### Randomized intermediary chain

Between the two exchanges, value is moved across a **randomly selected intermediary Layer-1 network** (a privacy hop). Because an independent, randomized chain sits in the middle, neither the exchanges nor an outside observer can reconstruct the full path from sender to receiver — each party only sees the single hop it handled.
{% endstep %}

{% step %}

#### Delivery to pool wallets

The outtake exchange delivers SOL to each destination wallet in your pool. Each wallet is funded with a **randomized amount** between the **Min** and **Max** you set, so the deposits don't share one identical, fingerprintable value.
{% endstep %}

{% step %}

#### Result

On a bubble map, your pool wallets appear to be funded by unrelated exchange withdrawals rather than by your master wallet — the direct link is broken.
{% endstep %}
{% endstepper %}

<figure><img src="/files/556t0DxwqcH8oQFjrCK4" alt=""><figcaption></figcaption></figure>

### Timing, fees, and failures

* Because funds cross several exchanges and bridges across multiple networks, a top-up can take **up to \~10 minutes** to complete.
* If any step fails, your funds are **returned to your master wallet**.
* Routing and network fees for all internal transfers and bridges may total **up to \~2%** of the amount. This is included in the commission shown before you pay.

{% hint style="info" %}
This is a privacy-routing tool, not a mixer/tumbler. HoudiniSwap is non-custodial and pulls the most cost-effective route in real time; it does not exempt anyone from the laws that apply to them.
{% endhint %}

## Step-by-Step Guide

{% stepper %}
{% step %}

#### Select the destination pool

* **Wallet Pool** — choose the pool whose wallets will receive the funds. **Total wallets: N** shows how many wallets the pool contains.
  {% endstep %}

{% step %}

#### Choose how many wallets to fund

* **Q-ty of wallets** — enter how many wallets in the pool to top up. Use the **half** / **all** shortcuts to quickly select half of the pool or every wallet.
  {% endstep %}

{% step %}

#### Set the per-wallet amount range

* **Min deposit per wallet** — the minimum SOL each wallet receives. A hard minimum is enforced and shown in the field (e.g. `Min: 0.354 SOL`).
* **Max deposit per wallet** — the maximum SOL each wallet receives.

Each selected wallet is funded with a **random amount within this range**. Using a range (rather than one fixed value) is what keeps the deposits from looking identical and easy to cluster.
{% endstep %}

{% step %}

#### Review the total

The **Sum for deposit** box shows:

* **Sum for deposit** — the total SOL that will be distributed to the wallets.
* **Total (Including Commission)** — the full amount you'll pay, including the routing/network commission (up to \~2%).
  {% endstep %}

{% step %}

#### Pay

Click **Top up and pay** to start the process. Funds leave your master wallet and are routed as described above; the wallets are credited once routing completes (up to \~10 minutes).
{% endstep %}
{% endstepper %}

## History

The **History** section below the form logs your anonymous top-ups. Until you run one, it shows an empty state — **"No top-up history yet"** — and completed transactions appear here afterward.

## Tips

* **Use a range, not a fixed amount** — set different Min and Max values so each wallet gets a unique deposit; equal amounts are easier to cluster on a bubble map.
* **Fund your master wallet first** — make sure it holds enough SOL to cover the total including commission before paying.
* **Be patient** — routing across multiple exchanges and networks can take up to \~10 minutes; a pending top-up is normal.
* **Failed top-ups auto-refund** — if routing fails at any step, funds return to your master wallet, so you won't lose them.
* **Plan for fees** — budget up to \~2% for routing and network costs on top of the amount you distribute.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://tsunammi.gitbook.io/tsunammi/wallet-management/anonymous-top-ups.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
