# The withdrawal flow

<figure><img src="https://2540391201-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDp4xlYT3A4hNguxDyFzM%2Fuploads%2FKknxpufKMJZWoTOvryEn%2Fimage.png?alt=media&#x26;token=80466d51-38ab-43e2-9061-d29c8e5ceb3a" alt=""><figcaption><p>Withdrawal flow architecture</p></figcaption></figure>

Before withdrawal can occur, Starkware requires transferring the funds from your Brine User vault to another off-chain vault that is identified with the same user’s Ethereum address instead of their Stark key.

The `add_transaction` API with the `TransferRequest` transaction type registers the Ethereum address.

You can enable registration in your off-chain application’s logic in one of the following ways:

* Your user enters a request to transfer the funds from the vault with their Stark key to a vault that they identify with their Ethereum address.
* When your application prompts the user for the information required to send a `WithdrawalRequest` transaction to the Starkware gateway, it also prompts them to enter the parameters necessary to execute a `TransferRequest` transaction, and your application executes the transfer as a seamless step in the withdrawal process.

The basic withdrawal flow takes place as detailed here, as Brine transfers the funds to the user in a trust-less way.
