How to set up token vesting on Solana with a cliff time using Streamflow

6 min readMar 3, 2022


Welcome to Streamflow!

Streamflow token vesting app is the most efficient way to vest SPL tokens to investors, teams, and the community.

Token vesting can be a painful and cumbersome process that consumes the precious time of project developers and teams. The Streamflow token vesting app handles the whole process in an easy, secure and decentralized manner saving you time with its highly configurable features.

Let’s go through a step-by-step process of creating a vesting contract using Streamflow.

Step 1: Connect the wallet

Firstly, you need to visit the Streamflow token vesting app via the following URL:

You can connect to the wallet of your choice to start using the app. Streamflow supports multiple wallet providers including: Phantom, Slope, Sollet, and Solfare.

Once you have successfully connected the wallet, you’ll be able to see the wallet address of your connected account. Make sure to have some SOL balance in your wallet to cover transaction fees. You can also see the available token balance.

Step 2: Choose the token

You can select the SPL token of your choice for vesting from the drop-down list of available tokens in your wallet. Streamflow supports all SPL tokens for the vesting contracts.

Step 3: Vesting duration & Release frequency

Choosing a time span for the token vesting contract is a straightforward process. You just have to select the start date, start time, end date, and end time for the vesting period.

Release frequency is a way to determine how often vested tokens will be unlocked. You can set the release frequency in the form of multiple time units such as second, minute, hour, day, week, month, or year.

For example, if you set your release frequency to one second, a proportional amount of vested tokens will be released/unlocked once per second. If the frequency is set to one hour, a proportional amount of vested tokens will be released/unlocked once per hour.

Step 4: Cliff time release of vested tokens

You can specify a cliff date and time with the release percentage of vested tokens at the specified cliff time. Let’s try to understand it with an example.

Let’s say you want to vest 50 USDC tokens to an address for a specific time period and you want 10% (5 USDC tokens) of total vested tokens to be immediately unlocked once the vesting contract starts streaming and the remaining amount of vested tokens to be progressively released at a constant rate for the rest of vesting duration.

To achieve this, you just have to set the cliff date/time to the same value as the start date/time and set the release percentage to 10%. Assuming you have set the release frequency to one second, 5 USDC (10% of 50 USDC tokens) will immediately get unlocked once the vesting contract starts streaming and the recipient will be able to withdraw that unlocked amount right away. The remaining vested amount will be streamed at a constant rate for the rest of the vesting duration.

Step 5: Cancel and transfer authority

You can choose who gets the authority to cancel or transfer the vesting contract from the sender/recipient.

Step 6: Title and recipient address

You can name the vesting contract stream by typing a subject/title in the given tab and you are free to use a combination of alphabets, numbers, special characters, and emojis.😊

The recipient’s wallet address can be entered in the recipient account tab and please make sure to double-check the address before moving forward. It is strongly recommended to only use a non-custodial wallet address for the recipient. Please avoid using any custodial wallet address such as an address from a centralized exchange. Enter the number of tokens to be vested in the amount tab. You can choose to add more recipients manually or enter multiple recipients at once via CSV batch payment creation.

Step 7: Automatic Withdrawal

Turning on the automatic withdrawal feature will automatically transfer the unlocked tokens into the recipient’s wallet. You can choose the frequency of automatic withdrawal in the form of different time units.

Step 8: Create the vesting contract

You are now all set to go live with your vesting contract. An overview tab will show all the specified parameters of your vesting contract. Just click on the create button and confirm the transaction on a wallet pop-up.

Managing the live vesting contract stream

On the sender’s end, you will be able to see the unlocked amount being updated in real-time as well as some additional information about the progress of your vesting contract stream.

You will be able to cancel the stream (only if the sender has been authorized to do so) or transfer it to a different address.

On the sender’s end, a live vesting contract stream appears as shown below:

Please keep in mind that if you cancel the stream, only the locked amount is returned to the sender and the unlocked amount is automatically withdrawn into the recipient’s wallet.

In case you transfer the stream to a new address, it gets transferred to the new recipient including the locked amount as well as the unlocked amount that has not been withdrawn by the previous recipient.

On the recipient’s end, a live vesting contract stream appears as shown below:

The recipient will be able to withdraw the unlocked amount at any point of time. In case the sender has authorized the recipient to cancel and transfer the stream, the recipient will also get an option to cancel or transfer the vesting contract.


You are now all set to take full advantage of the Streamflow app to set up your token vesting. Streamflow will continuously innovate to add new features to its existing products as well as expand the product suite. If you get stuck at any point, feel free to reach out to the Streamflow team.

Next steps:

To stay up-to-date on all things Streamflow, follow Streamflow Twitter and join the Streamflow Discord.




Token distribution platform on Solana blockchain. Vesting contracts, salaries, airdrops. Streamed. #DeFi