> For the complete documentation index, see [llms.txt](https://zerc20.gitbook.io/zerc20/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zerc20.gitbook.io/zerc20/for-users/getting-started/private-transfer.md).

# Private Transfer

This guide explains how to send and receive private transfers using the zERC20 web application.

## Sending a Private Payment

### To a Known Address

If you know the recipient's address:

1. Visit the [Frontend](https://app.zerc20.io/)
2. Click the "Private Send" tab
3. Select the recipient chain from the dropdown
4. Enter the recipient's address or ENS name (.eth, .base.eth)
5. Enter the amount of zERC20 to send
6. Click "Send Privately"

<figure><img src="https://4045326033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPzVlZxykzlnrD14epWVc%2Fuploads%2Fgit-blob-e35bb88273a8af8cf7846ff7e1120785d7c81f91%2Fprivate-send-form.png?alt=media" alt="Private Send Form" width="480"><figcaption><p>Private Send Form</p></figcaption></figure>

> **OFAC sanctions pre-check:** After you enter a recipient address, the frontend checks it against the on-chain [Blocklist](/zerc20/for-developers/specs/contract-spec.md#blocklist) before allowing submission. If the recipient is sanctioned, an inline error is shown and the Send button stays disabled. If the check itself fails (e.g. RPC error), the frontend fails closed and also blocks submission until the check succeeds — this prevents a degraded RPC from silently bypassing the sanctions check. See [FAQ — Compliance](/zerc20/for-users/faq.md#compliance) for what the blocklist covers.

<figure><img src="https://4045326033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPzVlZxykzlnrD14epWVc%2Fuploads%2Fgit-blob-1126ab0d6af23b60787c4e7e8ba10a42c1fd8646%2Fprivate-send-blocklist-error.png?alt=media" alt="Private Send Blocklist Error" width="640"><figcaption><p>Recipient on the OFAC blocklist — submission is blocked</p></figcaption></figure>

The transfer will process in three steps:

1. **Generate**: The system generates a burn address and encrypted announcement
2. **Store**: The encrypted announcement is stored on-chain or off-chain for the recipient to scan later
3. **Transfer**: Your tokens are sent to the burn address

<figure><img src="https://4045326033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPzVlZxykzlnrD14epWVc%2Fuploads%2Fgit-blob-88c3814b4378a50f4d05335d834f26f1ad6975c1%2Ftransfer-progress.png?alt=media" alt="Transfer Progress" width="480"><figcaption><p>Transfer Progress</p></figcaption></figure>

Once completed, you'll see a success message:

<figure><img src="https://4045326033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPzVlZxykzlnrD14epWVc%2Fuploads%2Fgit-blob-762d362213b3fd4cb5aee4cefd671607ac203861%2Ftransfer-success.png?alt=media" alt="Transfer Success" width="480"><figcaption><p>Transfer Success</p></figcaption></figure>

### To a Burn Address

If someone provides you with a burn address:

1. Open MetaMask (or any wallet)
2. Send zERC20 to the provided burn address
3. Done — the recipient handles the withdrawal

You can send from any supported chain. This method is useful when the recipient wants to maintain privacy even from the sender.

## Creating a Burn Address for Others

The "Pay with mobile" feature allows you to create a burn address that others can pay to. This is useful for:

* Receiving payments without revealing your withdrawal address to payers
* Creating payment requests that can be shared via QR code
* Allowing someone else to pay on behalf of a recipient

To create a burn address:

1. Go to the Send page
2. Enter the recipient's withdrawal address and amount
3. Check the **"Pay with mobile"** option
4. Click "Pay with mobile"

<figure><img src="https://4045326033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPzVlZxykzlnrD14epWVc%2Fuploads%2Fgit-blob-bc5d5b0045f427674acb79934112f0045439c6bf%2Fpay-with-mobile-form.png?alt=media" alt="Pay with Mobile Form" width="480"><figcaption><p>Pay with Mobile Form</p></figcaption></figure>

5. A QR code will be generated containing the burn address
6. Share the QR code with anyone who needs to pay

<figure><img src="https://4045326033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPzVlZxykzlnrD14epWVc%2Fuploads%2Fgit-blob-afd78767dc781b203f68d361f1366f871c2dda09%2Fpay-with-mobile-qr.png?alt=media" alt="Pay with Mobile QR" width="320"><figcaption><p>Pay with Mobile QR</p></figcaption></figure>

The payer simply scans the QR code and sends the exact amount to the displayed burn address. Once the payment is confirmed on-chain, the recipient can withdraw the funds.

## Receiving and Withdrawing

See [Scan Receives](/zerc20/for-users/getting-started/scan-receives.md) for detailed instructions on receiving and withdrawing private transfers.
