<p>The <em>channel reserve</em> is 100,000 sats. Neither side can make payments that let their side go below that. Since one side had only 35,000 sats, they cannot pay.</p>
<p>The <a href="https://bitcoin.stackexchange.com/a/122457/5406">channel reserve</a> is a minimum amount that each side needs to maintain for the penalty mechanism to be effective.</p>

CC BY-SA 4.0
2024-12-04T02:36:13.473Z
That was absolutely correct!  I sent another 100,000 sats from Alice to Bob to meet the 1% channel reserve (default), and now Bob can send back to Alice up to the reserve amount.
Chris Parker
CC BY-SA 4.0
2024-12-04T02:43:05.307Z
Curious though --- What is the "commit_fee"?  Looking at the initiator's balance (Bob), upon opening the channel, local balance was immediately reduced by a 2810 sat commit fee, plus an additional 660 sats. What are these amounts, where does the 660 come from, and how is their purpose different from the channel reserve?
Chris Parker
CC BY-SA 4.0
2024-12-04T14:49:00.603Z
The state of Lightning channels is recorded after each update as unbroadcast _commitment transactions_. Each channel-co-owner has their own variant of each state’s commitment transactions that they can use to unilaterally close the channel. These commitment transactions need to pay a fee to get confirmed, and I would guess that `commit_fee` refers to the fee of the latest state’s commitment transaction variants.—That said, it would be preferable if you start a new topic if you have more questions (even this one would be a good topic), so others will see it and may provide additional answers.
Murch
CC BY-SA 4.0
2024-12-03T11:51:57.577Z
2024-12-03T11:51:57.577Z
Murch
<p>I'm trying to understand how Lightning works by running tests using Bitcoin Core on my local machine in REGTEST mode together with running two LND Lightning nodes (let's call them the classic Bob &amp; Alice) on separate localhost ports too. I'm using <code>bitcoin-cli</code> and <code>lncli</code> to interface with the nodes.</p>
<p>I made Alice's LN connect to Bob's LN and opened a channel between them with an initial capacity of 10,000,000 sats, funded by Alice's chain wallet, and included a <code>--pushamt</code> of 35,000 sats to Bob's LN in order to create some inbound liquidity. This all seemed to have worked just fine and as expected, and the funding transaction into a <strong>2of2 Multisig</strong> covering the channel was added into the blockchain too (6 confirmations).</p>
<p>However, something's nevertheless wrong. Despite Alice having sent out BTC on the channel, Bob cannot send any of that BTC back to Alice! I even had Bob send Alice an invoice for another 5,000 sats, but nothing changed  after she paid it (other than an increase in  her remote balance to 40,000 sats)---still Bob still cannot send her even 1 sat using the channel's <em><strong>inbound liquidity</strong></em>!  I'm just not understanding why that is.</p>
<p>Session status from Alice's perspective (local/remote is reversed for Bob, of course):</p>
<pre><code>$ lncli --lnddir=lnd_alice -n regtest openchannel --connect 127.0.0.1:9736 --node_key 030fb4423c15e3e049dbbdc646d0ef3ab7450a891652bbe0c39a14a8f5b44dc15f --sat_per_vbyte 1 --local_amt 10000000 --push_amt 35000 --block --base_fee_msat 1000 --fee_rate_ppm 10 --min_confs 1
{
    &quot;funding_txid&quot;: &quot;df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e&quot;
}
{
    &quot;channel_point&quot;: &quot;df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0&quot;
}

$ lncli --lnddir=lnd_alice -n regtest listchannels
{
    &quot;channels&quot;:  [
        {
            &quot;active&quot;:  true,
            &quot;remote_pubkey&quot;:  &quot;030fb4423c15e3e049dbbdc646d0ef3ab7450a891652bbe0c39a14a8f5b44dc15f&quot;,
            &quot;channel_point&quot;:  &quot;df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0&quot;,
            &quot;chan_id&quot;:  &quot;513471930236928&quot;,
            &quot;capacity&quot;:  &quot;10000000&quot;,
            &quot;local_balance&quot;:  &quot;9961530&quot;,
            &quot;remote_balance&quot;:  &quot;35000&quot;,
            &quot;commit_fee&quot;:  &quot;2810&quot;,
            &quot;commit_weight&quot;:  &quot;1116&quot;,
            &quot;fee_per_kw&quot;:  &quot;2500&quot;,
            &quot;unsettled_balance&quot;:  &quot;0&quot;,
            &quot;total_satoshis_sent&quot;:  &quot;0&quot;,
            &quot;total_satoshis_received&quot;:  &quot;0&quot;,
            &quot;num_updates&quot;:  &quot;0&quot;,
            &quot;pending_htlcs&quot;:  [],
            &quot;csv_delay&quot;:  1201,
            &quot;private&quot;:  false,
            &quot;initiator&quot;:  true,
            &quot;chan_status_flags&quot;:  &quot;ChanStatusDefault&quot;,
            &quot;local_chan_reserve_sat&quot;:  &quot;100000&quot;,
            &quot;remote_chan_reserve_sat&quot;:  &quot;100000&quot;,
            &quot;static_remote_key&quot;:  false,
            &quot;commitment_type&quot;:  &quot;ANCHORS&quot;,
            &quot;lifetime&quot;:  &quot;80&quot;,
            &quot;uptime&quot;:  &quot;80&quot;,
            &quot;close_address&quot;:  &quot;&quot;,
            &quot;push_amount_sat&quot;:  &quot;35000&quot;,
            &quot;thaw_height&quot;:  0,
            &quot;local_constraints&quot;:  {
                &quot;csv_delay&quot;:  1201,
                &quot;chan_reserve_sat&quot;:  &quot;100000&quot;,
                &quot;dust_limit_sat&quot;:  &quot;354&quot;,
                &quot;max_pending_amt_msat&quot;:  &quot;9900000000&quot;,
                &quot;min_htlc_msat&quot;:  &quot;1&quot;,
                &quot;max_accepted_htlcs&quot;:  483
            },
            &quot;remote_constraints&quot;:  {
                &quot;csv_delay&quot;:  1201,
                &quot;chan_reserve_sat&quot;:  &quot;100000&quot;,
                &quot;dust_limit_sat&quot;:  &quot;354&quot;,
                &quot;max_pending_amt_msat&quot;:  &quot;9900000000&quot;,
                &quot;min_htlc_msat&quot;:  &quot;1&quot;,
                &quot;max_accepted_htlcs&quot;:  483
            },
            &quot;alias_scids&quot;:  [],
            &quot;zero_conf&quot;:  false,
            &quot;zero_conf_confirmed_scid&quot;:  &quot;0&quot;,
            &quot;peer_alias&quot;:  &quot;unable to lookup peer alias: alias for node not found&quot;,
            &quot;peer_scid_alias&quot;:  &quot;0&quot;,
            &quot;memo&quot;:  &quot;&quot;
        }
    ]
}

$ lncli --lnddir=lnd_alice -n regtest channelbalance
{
    &quot;balance&quot;:  &quot;9961530&quot;,
    &quot;pending_open_balance&quot;:  &quot;0&quot;,
    &quot;local_balance&quot;:  {
        &quot;sat&quot;:  &quot;9961530&quot;,
        &quot;msat&quot;:  &quot;9961530000&quot;
    },
    &quot;remote_balance&quot;:  {
        &quot;sat&quot;:  &quot;35000&quot;,
        &quot;msat&quot;:  &quot;35000000&quot;
    },
    &quot;unsettled_local_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    },
    &quot;unsettled_remote_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    },
    &quot;pending_open_local_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    },
    &quot;pending_open_remote_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    }
}

$ lncli --lnddir=lnd_alice -n regtest getchaninfo --chan_point &quot;df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0&quot;
{
    &quot;channel_id&quot;:  &quot;513471930236928&quot;,
    &quot;chan_point&quot;:  &quot;df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0&quot;,
    &quot;last_update&quot;:  1733192887,
    &quot;node1_pub&quot;:  &quot;030fb4423c15e3e049dbbdc646d0ef3ab7450a891652bbe0c39a14a8f5b44dc15f&quot;,
    &quot;node2_pub&quot;:  &quot;03f23e9d775b5363a2311742209fc4d50eb47e8c226b78472609356f9d72294729&quot;,
    &quot;capacity&quot;:  &quot;10000000&quot;,
    &quot;node1_policy&quot;:  {
        &quot;time_lock_delta&quot;:  80,
        &quot;min_htlc&quot;:  &quot;1000&quot;,
        &quot;fee_base_msat&quot;:  &quot;1000&quot;,
        &quot;fee_rate_milli_msat&quot;:  &quot;1&quot;,
        &quot;disabled&quot;:  false,
        &quot;max_htlc_msat&quot;:  &quot;9900000000&quot;,
        &quot;last_update&quot;:  1733192887,
        &quot;custom_records&quot;:  {},
        &quot;inbound_fee_base_msat&quot;:  0,
        &quot;inbound_fee_rate_milli_msat&quot;:  0
    },
    &quot;node2_policy&quot;:  {
        &quot;time_lock_delta&quot;:  80,
        &quot;min_htlc&quot;:  &quot;1000&quot;,
        &quot;fee_base_msat&quot;:  &quot;1000&quot;,
        &quot;fee_rate_milli_msat&quot;:  &quot;10&quot;,
        &quot;disabled&quot;:  false,
        &quot;max_htlc_msat&quot;:  &quot;9900000000&quot;,
        &quot;last_update&quot;:  1733192887,
        &quot;custom_records&quot;:  {},
        &quot;inbound_fee_base_msat&quot;:  0,
        &quot;inbound_fee_rate_milli_msat&quot;:  0
    },
    &quot;custom_records&quot;:  {}
}

$ lncli --lnddir=data/lnd_alice -n regtest --rpcserver=127.0.0.1:10010 sendpayment --pay_req=&quot;lnbcrt1pn5ulwxpp5hleus2vrjx29ercwtxuzgyrpl8ckkexmprlm9eps0nrl4jn30mpsdqqcqzzsxqyz5vqsp55zavqw9rv5xfxnw6vucluqfrspazwfz7hl4hsqhagnhvrkywyuls9p4gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqysgqlm77eh73g68dkxy4pjf4stjc3tg6yxf9z6ua5l0axjn4tznw2lpsjcdnu8gvug9r095wmg8v56jhmhqzvgz4ch6lmhgrues2hvqe6rspdmdxd5&quot; --amt=5000
Payment hash: bff3c8298391945c8f0e59b8241061f9f16b64db08ffb2e4307cc7faca717ec3
Description: 
Amount (in satoshis): 5000
Fee limit (in satoshis): 250
Destination: 030fb4423c15e3e049dbbdc646d0ef3ab7450a891652bbe0c39a14a8f5b44dc15f
Confirm payment (yes/no): yes
+------------+--------------+--------------+--------------+-----+----------+-----------------+----------------------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT        | ROUTE                |
+------------+--------------+--------------+--------------+-----+----------+-----------------+----------------------+
| SUCCEEDED  |        0.016 |        0.152 | 5000         | 0   |      555 | 513471930236928 | 030fb4423c15e3e049db |
+------------+--------------+--------------+--------------+-----+----------+-----------------+----------------------+
Amount + fee:   5000 + 0 sat
Payment hash:   bff3c8298391945c8f0e59b8241061f9f16b64db08ffb2e4307cc7faca717ec3
Payment status: SUCCEEDED, preimage: 47f028b0b825f07e8325735c3e84541e7f5e982635136cee32dff590a21465eb

$ lncli --lnddir=data/lnd_alice -n regtest --rpcserver=127.0.0.1:10010 channelbalance
{
    &quot;balance&quot;:  &quot;9956530&quot;,
    &quot;pending_open_balance&quot;:  &quot;0&quot;,
    &quot;local_balance&quot;:  {
        &quot;sat&quot;:  &quot;9956530&quot;,
        &quot;msat&quot;:  &quot;9956530000&quot;
    },
    &quot;remote_balance&quot;:  {
        &quot;sat&quot;:  &quot;40000&quot;,
        &quot;msat&quot;:  &quot;40000000&quot;
    },
    &quot;unsettled_local_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    },
    &quot;unsettled_remote_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    },
    &quot;pending_open_local_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    },
    &quot;pending_open_remote_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    }
}

$ lncli --lnddir=data/lnd_alice -n regtest --rpcserver=127.0.0.1:10010 feereport
{
    &quot;channel_fees&quot;:  [
        {
            &quot;chan_id&quot;:  &quot;513471930236928&quot;,
            &quot;channel_point&quot;:  &quot;df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0&quot;,
            &quot;base_fee_msat&quot;:  &quot;1000&quot;,
            &quot;fee_per_mil&quot;:  &quot;10&quot;,
            &quot;fee_rate&quot;:  0.00001,
            &quot;inbound_base_fee_msat&quot;:  0,
            &quot;inbound_fee_per_mil&quot;:  0
        }
    ],
    &quot;day_fee_sum&quot;:  &quot;0&quot;,
    &quot;week_fee_sum&quot;:  &quot;0&quot;,
    &quot;month_fee_sum&quot;:  &quot;0&quot;
}
</code></pre>
<p>Bob is just trying to pay some of that BTC back to Alice using the same Lightning channel that Alice opened and funded:</p>
<pre><code>$ lncli --lnddir=data/lnd_bob -n regtest --rpcserver=127.0.0.1:10009 sendpayment --pay_req=&quot;lnbcrt1pn5u778pp5xe7ey4lxnevntdveqaaxwtjw29j3yqqtrqqgdxqxylckjndsd56qdqqcqzzsxqyz5vqsp574v9pxu5lja7mjn9uv95uu3mep64w7w00gsedjsse94h2t0xq2zq9p4gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqysgqs0z2xmy9a0un69k8xpp7x2nl8z5ryn25n8n8fet78adax327ksvyll4wdk6s2h58yg8gw8mdqre288uc3edagpg8ave4l8rnxz3kz7sqxj2dhu&quot; --amt=2000
Payment hash: 367d9257e69e5935b599077a672e4e516512000b180086980627f1694db06d34
Description: 
Amount (in satoshis): 2000
Fee limit (in satoshis): 100
Destination: 03f23e9d775b5363a2311742209fc4d50eb47e8c226b78472609356f9d72294729
Confirm payment (yes/no): yes
+------------+--------------+--------------+--------------+-----+----------+----------+-------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT | ROUTE |
+------------+--------------+--------------+--------------+-----+----------+----------+-------+
+------------+--------------+--------------+--------------+-----+----------+----------+-------+
Amount + fee:   0 + 0 sat
Payment hash:   367d9257e69e5935b599077a672e4e516512000b180086980627f1694db06d34
Payment status: FAILED, reason: FAILURE_REASON_INSUFFICIENT_BALANCE
[lncli] FAILED

$ lncli --lnddir=lnd_bob -n regtest --rpcserver=127.0.0.1:10010 channelbalance
{
    &quot;balance&quot;:  &quot;40000&quot;,
    &quot;pending_open_balance&quot;:  &quot;0&quot;,
    &quot;local_balance&quot;:  {
        &quot;sat&quot;:  &quot;40000&quot;,
        &quot;msat&quot;:  &quot;40000000&quot;
    },
    &quot;remote_balance&quot;:  {
        &quot;sat&quot;:  &quot;9956530&quot;,
        &quot;msat&quot;:  &quot;9956530000&quot;
    },
    &quot;unsettled_local_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    },
    &quot;unsettled_remote_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    },
    &quot;pending_open_local_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    },
    &quot;pending_open_remote_balance&quot;:  {
        &quot;sat&quot;:  &quot;0&quot;,
        &quot;msat&quot;:  &quot;0&quot;
    }
}

$ lncli --lnddir=lnd_bob -n regtest --rpcserver=127.0.0.1:10010 listpeers
{
    &quot;peers&quot;:  [
        {
            &quot;pub_key&quot;:  &quot;03f23e9d775b5363a2311742209fc4d50eb47e8c226b78472609356f9d72294729&quot;,
            &quot;address&quot;:  &quot;127.0.0.1:60194&quot;,
            &quot;bytes_sent&quot;:  &quot;92017&quot;,
            &quot;bytes_recv&quot;:  &quot;82927&quot;,
            &quot;sat_sent&quot;:  &quot;0&quot;,
            &quot;sat_recv&quot;:  &quot;5000&quot;,
            &quot;inbound&quot;:  true,
            &quot;ping_time&quot;:  &quot;974&quot;,
            &quot;sync_type&quot;:  &quot;ACTIVE_SYNC&quot;,
            &quot;features&quot;:  {
                &quot;0&quot;:  {
                    &quot;name&quot;:  &quot;data-loss-protect&quot;,
                    &quot;is_required&quot;:  true,
                    &quot;is_known&quot;:  true
                },
                &quot;5&quot;:  {
                    &quot;name&quot;:  &quot;upfront-shutdown-script&quot;,
                    &quot;is_required&quot;:  false,
                    &quot;is_known&quot;:  true
                },
                &quot;7&quot;:  {
                    &quot;name&quot;:  &quot;gossip-queries&quot;,
                    &quot;is_required&quot;:  false,
                    &quot;is_known&quot;:  true
                },
                &quot;8&quot;:  {
                    &quot;name&quot;:  &quot;tlv-onion&quot;,
                    &quot;is_required&quot;:  true,
                    &quot;is_known&quot;:  true
                },
                &quot;12&quot;:  {
                    &quot;name&quot;:  &quot;static-remote-key&quot;,
                    &quot;is_required&quot;:  true,
                    &quot;is_known&quot;:  true
                },
                &quot;14&quot;:  {
                    &quot;name&quot;:  &quot;payment-addr&quot;,
                    &quot;is_required&quot;:  true,
                    &quot;is_known&quot;:  true
                },
                &quot;17&quot;:  {
                    &quot;name&quot;:  &quot;multi-path-payments&quot;,
                    &quot;is_required&quot;:  false,
                    &quot;is_known&quot;:  true
                },
                &quot;23&quot;:  {
                    &quot;name&quot;:  &quot;anchors-zero-fee-htlc-tx&quot;,
                    &quot;is_required&quot;:  false,
                    &quot;is_known&quot;:  true
                },
                &quot;25&quot;:  {
                    &quot;name&quot;:  &quot;route-blinding&quot;,
                    &quot;is_required&quot;:  false,
                    &quot;is_known&quot;:  true
                },
                &quot;27&quot;:  {
                    &quot;name&quot;:  &quot;shutdown-any-segwit&quot;,
                    &quot;is_required&quot;:  false,
                    &quot;is_known&quot;:  true
                },
                &quot;31&quot;:  {
                    &quot;name&quot;:  &quot;amp&quot;,
                    &quot;is_required&quot;:  false,
                    &quot;is_known&quot;:  true
                },
                &quot;45&quot;:  {
                    &quot;name&quot;:  &quot;explicit-commitment-type&quot;,
                    &quot;is_required&quot;:  false,
                    &quot;is_known&quot;:  true
                },
                &quot;2023&quot;:  {
                    &quot;name&quot;:  &quot;script-enforced-lease&quot;,
                    &quot;is_required&quot;:  false,
                    &quot;is_known&quot;:  true
                }
            },
            &quot;errors&quot;:  [],
            &quot;flap_count&quot;:  7,
            &quot;last_flap_ns&quot;:  &quot;1733192845755233591&quot;,
            &quot;last_ping_payload&quot;:  &quot;00000020d22b2aa43b49ef1fd79d668a09a6562f0e40ffe75eeda662d978cb3d5454290af3b209f13de7fec7f63fc2f4c361db7bb10606af6622289890316905c5da663db6884e67ffff7f2001000000&quot;
        }
    ]
}

$ lncli --lnddir=lnd_bob -n regtest --rpcserver=127.0.0.1:10010 queryroutes --dest 03f23e9d775b5363a2311742209fc4d50eb47e8c226b78472609356f9d72294729 --amt 2000
[lncli] rpc error: code = Unknown desc = insufficient local balance
</code></pre>
<p>The only way for Bob to send funds back to Alice seems to be for Bob to open his own separate channel and send the payment through that (i.e. outbound liquidity). I do not understand why inbound liquidity on Alice's channel isn't working.</p>
<p>Comments, suggestions, further questions would be appreciated!</p>

CC BY-SA 4.0
2024-12-03T08:38:27.953Z
Is the channel active yet? Ususlly the funding tx needs to have enough confirmations before the channel state machine activates. Can you check this / include how many blocks you created?
Rene Pickhardt
CC BY-SA 4.0
2024-12-04T14:54:19.563Z
Hey Chris, I changed the title to present the gist of your topic. Please feel free to roll back or further amend if you feel that the title doesn’t fit your intention.
Murch
<lightning-network><lightning-network-daemon><ln-opening-channels><ln-channel-balance-management><lncli>
Why can’t the other side pay even after a small balance was pushed to their side of the channel?
Chris Parker
# Why can’t the other side pay even after a small balance was pushed to their side of the channel?

(Asked by: username_0 on 2024-12-03)

I'm trying to understand how Lightning works by running tests using Bitcoin Core on my local machine in REGTEST mode together with running two LND Lightning nodes (let's call them the classic Bob & Alice) on separate localhost ports too. I'm using `bitcoin-cli` and `lncli` to interface with the nodes.

I made Alice's LN connect to Bob's LN and opened a channel between them with an initial capacity of 10,000,000 sats, funded by Alice's chain wallet, and included a `--pushamt` of 35,000 sats to Bob's LN in order to create some inbound liquidity. This all seemed to have worked just fine and as expected, and the funding transaction into a **2of2 Multisig** covering the channel was added into the blockchain too (6 confirmations).

However, something's nevertheless wrong. Despite Alice having sent out BTC on the channel, Bob cannot send any of that BTC back to Alice! I even had Bob send Alice an invoice for another 5,000 sats, but nothing changed after she paid it (other than an increase in her remote balance to 40,000 sats)---still Bob still cannot send her even 1 sat using the channel's ***inbound liquidity***! I'm just not understanding why that is.

Session status from Alice's perspective (local/remote is reversed for Bob, of course):

```
$ lncli --lnddir=lnd_alice -n regtest openchannel --connect 127.0.0.1:9736 --node_key 030fb4423c15e3e049dbbdc646d0ef3ab7450a891652bbe0c39a14a8f5b44dc15f --sat_per_vbyte 1 --local_amt 10000000 --push_amt 35000 --block --base_fee_msat 1000 --fee_rate_ppm 10 --min_confs 1
{
    "funding_txid": "df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e"
}
{
    "channel_point": "df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0"
}

$ lncli --lnddir=lnd_alice -n regtest listchannels
{
    "channels":  [
        {
            "active":  true,
            "remote_pubkey":  "030fb4423c15e3e049dbbdc646d0ef3ab7450a891652bbe0c39a14a8f5b44dc15f",
            "channel_point":  "df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0",
            "chan_id":  "513471930236928",
            "capacity":  "10000000",
            "local_balance":  "9961530",
            "remote_balance":  "35000",
            "commit_fee":  "2810",
            "commit_weight":  "1116",
            "fee_per_kw":  "2500",
            "unsettled_balance":  "0",
            "total_satoshis_sent":  "0",
            "total_satoshis_received":  "0",
            "num_updates":  "0",
            "pending_htlcs":  [],
            "csv_delay":  1201,
            "private":  false,
            "initiator":  true,
            "chan_status_flags":  "ChanStatusDefault",
            "local_chan_reserve_sat":  "100000",
            "remote_chan_reserve_sat":  "100000",
            "static_remote_key":  false,
            "commitment_type":  "ANCHORS",
            "lifetime":  "80",
            "uptime":  "80",
            "close_address":  "",
            "push_amount_sat":  "35000",
            "thaw_height":  0,
            "local_constraints":  {
                "csv_delay":  1201,
                "chan_reserve_sat":  "100000",
                "dust_limit_sat":  "354",
                "max_pending_amt_msat":  "9900000000",
                "min_htlc_msat":  "1",
                "max_accepted_htlcs":  483
            },
            "remote_constraints":  {
                "csv_delay":  1201,
                "chan_reserve_sat":  "100000",
                "dust_limit_sat":  "354",
                "max_pending_amt_msat":  "9900000000",
                "min_htlc_msat":  "1",
                "max_accepted_htlcs":  483
            },
            "alias_scids":  [],
            "zero_conf":  false,
            "zero_conf_confirmed_scid":  "0",
            "peer_alias":  "unable to lookup peer alias: alias for node not found",
            "peer_scid_alias":  "0",
            "memo":  ""
        }
    ]
}

$ lncli --lnddir=lnd_alice -n regtest channelbalance
{
    "balance":  "9961530",
    "pending_open_balance":  "0",
    "local_balance":  {
        "sat":  "9961530",
        "msat":  "9961530000"
    },
    "remote_balance":  {
        "sat":  "35000",
        "msat":  "35000000"
    },
    "unsettled_local_balance":  {
        "sat":  "0",
        "msat":  "0"
    },
    "unsettled_remote_balance":  {
        "sat":  "0",
        "msat":  "0"
    },
    "pending_open_local_balance":  {
        "sat":  "0",
        "msat":  "0"
    },
    "pending_open_remote_balance":  {
        "sat":  "0",
        "msat":  "0"
    }
}

$ lncli --lnddir=lnd_alice -n regtest getchaninfo --chan_point "df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0"
{
    "channel_id":  "513471930236928",
    "chan_point":  "df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0",
    "last_update":  1733192887,
    "node1_pub":  "030fb4423c15e3e049dbbdc646d0ef3ab7450a891652bbe0c39a14a8f5b44dc15f",
    "node2_pub":  "03f23e9d775b5363a2311742209fc4d50eb47e8c226b78472609356f9d72294729",
    "capacity":  "10000000",
    "node1_policy":  {
        "time_lock_delta":  80,
        "min_htlc":  "1000",
        "fee_base_msat":  "1000",
        "fee_rate_milli_msat":  "1",
        "disabled":  false,
        "max_htlc_msat":  "9900000000",
        "last_update":  1733192887,
        "custom_records":  {},
        "inbound_fee_base_msat":  0,
        "inbound_fee_rate_milli_msat":  0
    },
    "node2_policy":  {
        "time_lock_delta":  80,
        "min_htlc":  "1000",
        "fee_base_msat":  "1000",
        "fee_rate_milli_msat":  "10",
        "disabled":  false,
        "max_htlc_msat":  "9900000000",
        "last_update":  1733192887,
        "custom_records":  {},
        "inbound_fee_base_msat":  0,
        "inbound_fee_rate_milli_msat":  0
    },
    "custom_records":  {}
}

$ lncli --lnddir=data/lnd_alice -n regtest --rpcserver=127.0.0.1:10010 sendpayment --pay_req="lnbcrt1pn5ulwxpp5hleus2vrjx29ercwtxuzgyrpl8ckkexmprlm9eps0nrl4jn30mpsdqqcqzzsxqyz5vqsp55zavqw9rv5xfxnw6vucluqfrspazwfz7hl4hsqhagnhvrkywyuls9p4gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqysgqlm77eh73g68dkxy4pjf4stjc3tg6yxf9z6ua5l0axjn4tznw2lpsjcdnu8gvug9r095wmg8v56jhmhqzvgz4ch6lmhgrues2hvqe6rspdmdxd5" --amt=5000
Payment hash: bff3c8298391945c8f0e59b8241061f9f16b64db08ffb2e4307cc7faca717ec3
Description: 
Amount (in satoshis): 5000
Fee limit (in satoshis): 250
Destination: 030fb4423c15e3e049dbbdc646d0ef3ab7450a891652bbe0c39a14a8f5b44dc15f
Confirm payment (yes/no): yes
+------------+--------------+--------------+--------------+-----+----------+-----------------+----------------------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT        | ROUTE                |
+------------+--------------+--------------+--------------+-----+----------+-----------------+----------------------+
| SUCCEEDED  |        0.016 |        0.152 | 5000         | 0   |      555 | 513471930236928 | 030fb4423c15e3e049db |
+------------+--------------+--------------+--------------+-----+----------+-----------------+----------------------+
Amount + fee:   5000 + 0 sat
Payment hash:   bff3c8298391945c8f0e59b8241061f9f16b64db08ffb2e4307cc7faca717ec3
Payment status: SUCCEEDED, preimage: 47f028b0b825f07e8325735c3e84541e7f5e982635136cee32dff590a21465eb

$ lncli --lnddir=data/lnd_alice -n regtest --rpcserver=127.0.0.1:10010 channelbalance
{
    "balance":  "9956530",
    "pending_open_balance":  "0",
    "local_balance":  {
        "sat":  "9956530",
        "msat":  "9956530000"
    },
    "remote_balance":  {
        "sat":  "40000",
        "msat":  "40000000"
    },
    "unsettled_local_balance":  {
        "sat":  "0",
        "msat":  "0"
    },
    "unsettled_remote_balance":  {
        "sat":  "0",
        "msat":  "0"
    },
    "pending_open_local_balance":  {
        "sat":  "0",
        "msat":  "0"
    },
    "pending_open_remote_balance":  {
        "sat":  "0",
        "msat":  "0"
    }
}

$ lncli --lnddir=data/lnd_alice -n regtest --rpcserver=127.0.0.1:10010 feereport
{
    "channel_fees":  [
        {
            "chan_id":  "513471930236928",
            "channel_point":  "df79c5246a3f1f8dfd6c983106b743a8220a1f4c819b76aeb41d69ccfc2baf4e:0",
            "base_fee_msat":  "1000",
            "fee_per_mil":  "10",
            "fee_rate":  0.00001,
            "inbound_base_fee_msat":  0,
            "inbound_fee_per_mil":  0
        }
    ],
    "day_fee_sum":  "0",
    "week_fee_sum":  "0",
    "month_fee_sum":  "0"
}

```

Bob is just trying to pay some of that BTC back to Alice using the same Lightning channel that Alice opened and funded:

```
$ lncli --lnddir=data/lnd_bob -n regtest --rpcserver=127.0.0.1:10009 sendpayment --pay_req="lnbcrt1pn5u778pp5xe7ey4lxnevntdveqaaxwtjw29j3yqqtrqqgdxqxylckjndsd56qdqqcqzzsxqyz5vqsp574v9pxu5lja7mjn9uv95uu3mep64w7w00gsedjsse94h2t0xq2zq9p4gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqysgqs0z2xmy9a0un69k8xpp7x2nl8z5ryn25n8n8fet78adax327ksvyll4wdk6s2h58yg8gw8mdqre288uc3edagpg8ave4l8rnxz3kz7sqxj2dhu" --amt=2000
Payment hash: 367d9257e69e5935b599077a672e4e516512000b180086980627f1694db06d34
Description: 
Amount (in satoshis): 2000
Fee limit (in satoshis): 100
Destination: 03f23e9d775b5363a2311742209fc4d50eb47e8c226b78472609356f9d72294729
Confirm payment (yes/no): yes
+------------+--------------+--------------+--------------+-----+----------+----------+-------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT | ROUTE |
+------------+--------------+--------------+--------------+-----+----------+----------+-------+
+------------+--------------+--------------+--------------+-----+----------+----------+-------+
Amount + fee:   0 + 0 sat
Payment hash:   367d9257e69e5935b599077a672e4e516512000b180086980627f1694db06d34
Payment status: FAILED, reason: FAILURE_REASON_INSUFFICIENT_BALANCE
[lncli] FAILED

$ lncli --lnddir=lnd_bob -n regtest --rpcserver=127.0.0.1:10010 channelbalance
{
    "balance":  "40000",
    "pending_open_balance":  "0",
    "local_balance":  {
        "sat":  "40000",
        "msat":  "40000000"
    },
    "remote_balance":  {
        "sat":  "9956530",
        "msat":  "9956530000"
    },
    "unsettled_local_balance":  {
        "sat":  "0",
        "msat":  "0"
    },
    "unsettled_remote_balance":  {
        "sat":  "0",
        "msat":  "0"
    },
    "pending_open_local_balance":  {
        "sat":  "0",
        "msat":  "0"
    },
    "pending_open_remote_balance":  {
        "sat":  "0",
        "msat":  "0"
    }
}

$ lncli --lnddir=lnd_bob -n regtest --rpcserver=127.0.0.1:10010 listpeers
{
    "peers":  [
        {
            "pub_key":  "03f23e9d775b5363a2311742209fc4d50eb47e8c226b78472609356f9d72294729",
            "address":  "127.0.0.1:60194",
            "bytes_sent":  "92017",
            "bytes_recv":  "82927",
            "sat_sent":  "0",
            "sat_recv":  "5000",
            "inbound":  true,
            "ping_time":  "974",
            "sync_type":  "ACTIVE_SYNC",
            "features":  {
                "0":  {
                    "name":  "data-loss-protect",
                    "is_required":  true,
                    "is_known":  true
                },
                "5":  {
                    "name":  "upfront-shutdown-script",
                    "is_required":  false,
                    "is_known":  true
                },
                "7":  {
                    "name":  "gossip-queries",
                    "is_required":  false,
                    "is_known":  true
                },
                "8":  {
                    "name":  "tlv-onion",
                    "is_required":  true,
                    "is_known":  true
                },
                "12":  {
                    "name":  "static-remote-key",
                    "is_required":  true,
                    "is_known":  true
                },
                "14":  {
                    "name":  "payment-addr",
                    "is_required":  true,
                    "is_known":  true
                },
                "17":  {
                    "name":  "multi-path-payments",
                    "is_required":  false,
                    "is_known":  true
                },
                "23":  {
                    "name":  "anchors-zero-fee-htlc-tx",
                    "is_required":  false,
                    "is_known":  true
                },
                "25":  {
                    "name":  "route-blinding",
                    "is_required":  false,
                    "is_known":  true
                },
                "27":  {
                    "name":  "shutdown-any-segwit",
                    "is_required":  false,
                    "is_known":  true
                },
                "31":  {
                    "name":  "amp",
                    "is_required":  false,
                    "is_known":  true
                },
                "45":  {
                    "name":  "explicit-commitment-type",
                    "is_required":  false,
                    "is_known":  true
                },
                "2023":  {
                    "name":  "script-enforced-lease",
                    "is_required":  false,
                    "is_known":  true
                }
            },
            "errors":  [],
            "flap_count":  7,
            "last_flap_ns":  "1733192845755233591",
            "last_ping_payload":  "00000020d22b2aa43b49ef1fd79d668a09a6562f0e40ffe75eeda662d978cb3d5454290af3b209f13de7fec7f63fc2f4c361db7bb10606af6622289890316905c5da663db6884e67ffff7f2001000000"
        }
    ]
}

$ lncli --lnddir=lnd_bob -n regtest --rpcserver=127.0.0.1:10010 queryroutes --dest 03f23e9d775b5363a2311742209fc4d50eb47e8c226b78472609356f9d72294729 --amt 2000
[lncli] rpc error: code = Unknown desc = insufficient local balance

```

The only way for Bob to send funds back to Alice seems to be for Bob to open his own separate channel and send the payment through that (i.e. outbound liquidity). I do not understand why inbound liquidity on Alice's channel isn't working.

Comments, suggestions, further questions would be appreciated!

**Tags:** lightning-network, lightning-network-daemon, ln-opening-channels, ln-channel-balance-management, lncli

> **Comments:**
> **username_1**: Is the channel active yet? Ususlly the funding tx needs to have enough confirmations before the channel state machine activates. Can you check this / include how many blocks you created?  
> **username_2**: Hey username_0, I changed the title to present the gist of your topic. Please feel free to roll back or further amend if you feel that the title doesn’t fit your intention.  

---

## 1 answers

### Answer by username_2 on 2024-12-03. Score: 0 | Accepted answer

The *channel reserve* is 100,000 sats. Neither side can make payments that let their side go below that. Since one side had only 35,000 sats, they cannot pay.

The [channel reserve](https://bitcoin.stackexchange.com/a/122457/5406) is a minimum amount that each side needs to maintain for the penalty mechanism to be effective.

> **Comments:**
> **username_0**: That was absolutely correct!  I sent another 100,000 sats from Alice to Bob to meet the 1% channel reserve (default), and now Bob can send back to Alice up to the reserve amount.  
> **username_0**: Curious though --- What is the "commit_fee"?  Looking at the initiator's balance (Bob), upon opening the channel, local balance was immediately reduced by a 2810 sat commit fee, plus an additional 660 sats. What are these amounts, where does the 660 come from, and how is their purpose different from the channel reserve?  
> **username_2**: The state of Lightning channels is recorded after each update as unbroadcast _commitment transactions_. Each channel-co-owner has their own variant of each state’s commitment transactions that they can use to unilaterally close the channel. These commitment transactions need to pay a fee to get confirmed, and I would guess that `commit_fee` refers to the fee of the latest state’s commitment transaction variants.—That said, it would be preferable if you start a new topic if you have more questions (even this one would be a good topic), so others will see it and may provide additional answers.  

---

