Regardless of how many Splits you’re receiving 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 receive from has been distributed, you'll see your withdrawable balance in the nav menu at the top of the screen. This withdrawable balance you see comprises all the Splits you receive from. If you only have ERC20 tokens available to withdraw, you may see "$0.00" in this dropdown if we can't determine the token price. Click on the dropdown to see the actual balances for each token.
After clicking on the dropdown, you'll see all your balances and can select the ones you wish to withdraw. Hit the "withdraw" button in the top right, and once the transaction has been confirmed you'll see that those funds have been transferred to your wallet and your balance within Splits has been reset. If you have any "pending" balances (i.e., Splits you receive from have balances which have not been distributed), those will show up here, too. If you wish, you can 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". 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.