> For the complete documentation index, see [llms.txt](https://docs.tanx.fi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tanx.fi/tech/tech-docupaper/transactional-flow/the-deposit-flow.md).

# The deposit flow

<figure><img src="/files/LoPBO8kUw5LKEKKBhJyq" alt=""><figcaption><p>Deposit flow archtiecture</p></figcaption></figure>

Before User can trade, they need to deposit funds into StarkEx via tanX. To do so, they first deposit funds to the on-chain Starkware contract deployed by tanX. The application should then send a corresponding off-chain deposit transaction, which updates the off-chain state.

### **1.** User deposits funds on-chain. <a href="#alice_deposits_funds_on_chain_spot" id="alice_deposits_funds_on_chain_spot"></a>

Alice executes an on-chain transaction to deposit funds. The deposit operation supports deposits of ETH, ERC-20, ERC-721, and ERC-1155.

The on-chain `deposit` function gets the following parameters:

| `starkKey`        | The public Stark key that corresponds to the vault id.                                    |
| ----------------- | ----------------------------------------------------------------------------------------- |
| `assetType`       | The asset identifier of the token to be deposited.                                        |
| `vaultId`         | The recipient’s off-chain account.                                                        |
| `quantizedAmount` | For ERC-20 and ERC-1155, the amount to be deposited. For ERC-721, this value must be `1`. |

<mark style="color:purple;">**NOTE**</mark> : *A user can deposit to any vault, even to one that they do not own.*
