Using Flow 2.0

Learn more to use our Flow 2.0 LSP to effortlessly manage liquidity.


Because our LSP uses Zero Conf channels, most nodes require some additional set up. Find your node implimentation below to learn how to properly prepare your node for Zero Conf channels.


First, run your LND node with two additional flags for zero-conf compatibility:
If you're running LND on Voltage, you can enable these options on the Settings page.
Clone our zero-conf LND daemon at the zero-conf-lnd repository. (Requires the Rust toolchain installed to compile)
Create a config.yml file that points that looks like this:
macaroon_location: "~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon"
cert_location: "~/.lnd/tls.cert"
host: ""
port: 9735
- pubkey: "025804d4431ad05b06a1a1ee41f22fefeb8ce800b0be3a92ff3b9f594a263da34e"
confs: 0
Build the daemon and run it with the following command:
./zero-conf-lnd config.yml
Your node should now be able to accept zero-conf channels from us, as long as the daemon is running.


Clone our zero-conf CLN plugin at the zero-conf-cln repository.
Run a testnet CLN node with the following flags included:
--plugin=/path/to/cln-plugin/zeroconf-selective.py \
Your node should now be able to accept zero-conf channels from us.


Our service works with LDK, but since each LDK use case is different it will take more manual integration to get it working.
If you'd like to use Flow 2.0 with LDK, please contact us and we'll help you get it set up.


You can try out the LSP using our dashboard here:


You can use our UI to manually submit invoices for wrapping, but if you'd like to integrate Flow v2 into your service or wallet, you'll probably want to do this automatically.

Example request

The API has a single endpoint, /api/v1/proposal, which accepts a POST request with a JSON body of the invoice (required), and your node's host and port (optional)
Curl example
curl --header "Content-Type: application/json" \
--request POST \
--data '{"bolt11":"lntb1...","host":"abc...123.onion", "port": 9735}' \
Javascript example
await fetch(`https://testnet-lsp.voltageapi.com/api/v1/proposal`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
body: JSON.stringify({
bolt11: "lntb1...",
host: "abc...123.onion",
port: 9735
If your node is already connected to our node you don't need to pass your host and port information. This is especially useful for mobile wallets that might not have a public IP.
Here's the testnet connection info you need to peer to our node:
Testnet LSP node pubkey
Testnet IPV4
Testnet TORV3