Regardless of how many Splits you’re earning from, or how frequently those Splits earn income, it only takes a single transaction to transfer all of your balances to your wallet. You can do this at your leisure, whenever gas prices are low or you just want to cash out.
Once a Split you earn from has been distributed, you'll see your withdrawable balance in the top left corner of the page. If you only have ERC-20 tokens available to withdraw, you may see a balance of "$0.00" if we can't determine the ERC-20 token price. Click on your balance to open your account menu.
You'll be able to see all your balances in the dialog that opens. Select the ones you wish to withdraw and hit "Withdraw Tokens". Once you approve this transaction in your wallet, the selected balances will be withdrawn from Splits to your account. You will see your balance has been reset to $0.
If you have any "pending" balances (i.e., Splits you earn from that have balances waiting to be distributed), those will show up here as well. If you wish, you may distribute those pending balances before withdrawing.
Since Recipients in a Split can be any Ethereum address, including smart contracts to which nobody holds the private keys, anyone can withdraw balances on behalf of other Recipients. When you do this, you're effectively paying the gas needed to send the funds to their wallet.
Just navigate to the account's detail page (either by searching or clicking on it from the list of Recipients) then select the balances you wish to withdraw and hit "Withdraw Tokens". This will transfer these balances to the account's address, not your own. By withdrawing "for" another account, you're just paying the gas needed to send them their funds.
If you're a developer looking to incorporate withdrawals from 0xSplits into into
your own app, just call the
SplitMain. You can see if the account in question has a balance by
getERC20Balance functions on
well. The SDK makes this easy.
If you're having trouble with this, jump in our
Discord and drop us a note in the
In other words, once the balance of a Split has been distributed, why aren't the funds automatically showing up in your wallet? This is because the withdraw flow follows a pull model (i.e., you need to pull your funds from 0xSplits into your account). It's designed this way for a few reasons.
First, the pull model is far more reliable and secure, making it the recommended approach in Solidity. Pushing funds isn't recommended since it's more likely to fail and it increases the chance of hitting problems with the gas limit. Additionally, the push model reduces composability since contracts with hard gas limits wouldn't be able to send funds to a Split.
Second, the pull model increases gas-efficiency for the Recipients. Since all your Splits deposit into the same place, you can collect all your distributed balances in a single transaction. The longer you wait to withdraw your funds, the more funds pile up, and the more gas you save. This same concept applies to Splits themselves—instead of paying gas each time a Split receives funds (i.e., from Seaport, Zora, etc), all funds can be distributed at once, drastically reducing gas consumption and ultimately sending more money to the Recipients.
If you're just looking to do a one-time split where gas efficiency, composability, and manual labor/time don't matter, you may consider using disperse.app or another multisend contract that will "push" funds to the recipients. However, whoever initiates that transaction will need to pay the gas to do so and the undoubted wrath of the group should a mistake be made. If you're doing multiple manual distributions to the same group of recipients, you're better off using a Split. Check out the Alternative Solutions page for more options.