> For the complete documentation index, see [llms.txt](https://docs.predict.fun/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.predict.fun/knowledge-base/wallets.md).

# Wallets

Predict skips the traditional DeFi approach of wallet connection and endless approvals, instead using [Privy](https://www.privy.io/) and [ZeroDev](https://zerodev.app/) to provide you with a streamlined experience.

This means that you can sign up with your email, a Google or X account, or a Web3 wallet for the purists. When you create an account, your smart contract wallet is automatically generated and ready for deposits. With this approach, you can skip the approvals process every time you want to make a transaction.

Predict cannot access your private keys — meaning that, if you lose your credentials, we can't help you retrieve them! Make sure that your authentication method is kept secure and backed-up.

### Deposits

Deposits and withdrawals are powered by [Fun.xyz](https://fun.xyz), giving you a single checkout flow that supports 50+ payment methods across 100+ countries — card, bank transfer, or crypto from any supported chain — instead of manually sending assets to a deposit address.

To deposit to Predict, select the Deposit button in the top navigation (or just [click here](https://predict.fun/account/deposit)). Pick your preferred payment method and asset, and follow the on-screen steps — funds land directly in your Predict Smart Wallet once the deposit completes.

### Withdrawals

Withdrawals are handled from the [Settings page](https://predict.fun/account/settings). Open the Deposit section there and hit Withdraw.

Choose your withdrawal method and destination, confirm the amount and details, and you're good to go.

If you sign into Predict using a Web3 wallet, we'll default to that as a withdrawal option.

### Key Exports and Withdrawal from Contract

If you want to backup your keys, you can do so via the [Settings page](https://predict.fun/account/settings). Simply click on Export, then choose whether you'd like to copy the private key or seed phrase.

Anyone with knowledge of this data can control your funds. If you choose this option, be sure to store your keys in a safe place — and don't share them with anyone.

Note that the resulting keys are EOA keys from Privy. To retrieve funds from Predict, you'll need to interact with the ZeroDev smart contract tied to your keys.

#### Manually extracting USDT from your ZeroDev smart account

Once you've exported your private key, import it into an external wallet such as MetaMask.

Next, access the helper contract [here](https://bscscan.com/address/0xf4aa30b537882eca7e69defb68d6f631cda77b00#readContract), navigating to Contract > Read Contract. Expand the third dropdown (encodeUSDTTransfer). You'll now be presented with two fields:

* to (address): enter your desired withdrawal address here.
* amount (uint256): enter the amount of USDT to withdraw.

Once you've double-checked the details, hit Query to produce your payload. Copy/take note of this — you'll need it shortly.

Then, search your Deposit address (found [here](https://predict.fun/account/deposit)) on [BscScan](https://bscscan.com/), navigating to Contract > Write Contract as Proxy. Almost there. Connect your wallet (Connect to Web3), then expand execute to reveal three inputs:

* execute: enter 0
* execMode (bytes32): enter 0x0000000000000000000000000000000000000000000000000000000000000000
* executionCalldata: enter the payload copied earlier

Once finished, hit Write to withdraw your USDT to your specified withdrawal address.

#### Manually extracting BNB from your ZeroDev smart account

To withdraw BNB mistakenly deposited to your Predict account, follow the steps above but use the encodeBNBTransfer function instead. Note that you must specify the amount to withdraw in wei — so, to withdraw 1 BNB, you would specify 1000000000000000000. You can use [this calculator](https://bscscan.com/unitconverter) to work out your amount.

#### Manually extracting ERC-20s from your ZeroDev smart account

For ERC-20 tokens, it's the same process — but with the encodeERC20Transfer function. Additionally, you'll need to specify the token's contract address.
