<p>Lightning nodes charge a fee when they <em>forward</em> a multi-hop payment based on the fee announcement of the outbound channel.</p>
<p>E.g. if you are originating the payment, and your route is via Alice and Bob to the recipient <code>S ⇒ A ⇒ B ⇒ R</code>, Alice will collect a fee for sending to Bob based on the announced fees for her channel with Bob, and Bob will collect a fee for sending to the recipient based on the announced fees for the Bob-Recipient channel.</p>
<p>If you send a multipath payment, the same principle holds true: your own node does not charge a fee for the first hops.
As the recipient does not forward the payment, your node also does not charge a fee when you receive a payment.</p>
<p>So, the only scenario in which your own node would charge a fee would be if you operate multiple nodes and a multi-hop payment from one of your nodes is routed through the other.</p>

CC BY-SA 4.0
2024-03-09T16:15:16.083Z
That makes sense. Is this mentioned in the spec? Or just a convention? A the level of transactions that are created, there's no difference between S => A and A => B? Or is there?
Sjors Provoost
CC BY-SA 4.0
2024-03-10T00:57:12.300Z
At the level of the transactions there is no difference, otherwise the first hop would be able to tell that the sender is the sender. But the payment is sender-routed and the sender knows that it’s their own payment, so why should it charge a fee of itself?
Murch
CC BY-SA 4.0
2024-03-17T14:14:09.037Z
Just checked with Core Lightning v24.02.1 - when paying an invoice with a destination that I have a direct channel with, the `amount_msat` and `amount_sent_msat` fields are the same. When the payments goes via another node first, the amounts are different. The channel has a `fee-per-satoshi` value set. I haven't tested if other clients do this too, though it seems plausible.
Sjors Provoost
CC BY-SA 4.0
2024-03-08T15:07:49.297Z
2024-03-08T15:07:49.297Z
Murch
<p>My node has a bunch of channels. If I want to make payment, then by definition it will find a route that goes through one or more of my own channels. Are the current lightning implementations smart enough not to charge a fee for that?</p>
<p>In a sense it doesn't matter because the fee goes to the node operator, which is me. But from a bookkeeping point of view it does matter if you're keeping track of transactions <em>including</em> fees.</p>
<p>Conversely it matters if you're trying to find out how much you made from routing (for others).</p>
<p>Finally, I assume it makes a slight difference in the maximum payment you can make.</p>
<p>E.g. in CLN's <code>listpays</code> result there's <code>amount_msat</code>, the invoice amount, and <code>amount_sent_msat</code>, the amount sent. It's documentation doesn't mention if this includes fees in our own channels.</p>

<lightning-routing><lightning-fees>
Do lightning nodes charge fees for their own channels?
Sjors Provoost
# Do lightning nodes charge fees for their own channels?

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

My node has a bunch of channels. If I want to make payment, then by definition it will find a route that goes through one or more of my own channels. Are the current lightning implementations smart enough not to charge a fee for that?

In a sense it doesn't matter because the fee goes to the node operator, which is me. But from a bookkeeping point of view it does matter if you're keeping track of transactions *including* fees.

Conversely it matters if you're trying to find out how much you made from routing (for others).

Finally, I assume it makes a slight difference in the maximum payment you can make.

E.g. in CLN's `listpays` result there's `amount_msat`, the invoice amount, and `amount_sent_msat`, the amount sent. It's documentation doesn't mention if this includes fees in our own channels.

**Tags:** lightning-routing, lightning-fees


---

## 1 answers

### Answer by username_1 on 2024-03-08. Score: 0 | Accepted answer

Lightning nodes charge a fee when they *forward* a multi-hop payment based on the fee announcement of the outbound channel.

E.g. if you are originating the payment, and your route is via Alice and Bob to the recipient `S ⇒ A ⇒ B ⇒ R`, Alice will collect a fee for sending to Bob based on the announced fees for her channel with Bob, and Bob will collect a fee for sending to the recipient based on the announced fees for the Bob-Recipient channel.

If you send a multipath payment, the same principle holds true: your own node does not charge a fee for the first hops.
As the recipient does not forward the payment, your node also does not charge a fee when you receive a payment.

So, the only scenario in which your own node would charge a fee would be if you operate multiple nodes and a multi-hop payment from one of your nodes is routed through the other.

> **Comments:**
> **username_0**: That makes sense. Is this mentioned in the spec? Or just a convention? A the level of transactions that are created, there's no difference between S => A and A => B? Or is there?  
> **username_1**: At the level of the transactions there is no difference, otherwise the first hop would be able to tell that the sender is the sender. But the payment is sender-routed and the sender knows that it’s their own payment, so why should it charge a fee of itself?  
> **username_0**: Just checked with Core Lightning v24.02.1 - when paying an invoice with a destination that I have a direct channel with, the `amount_msat` and `amount_sent_msat` fields are the same. When the payments goes via another node first, the amounts are different. The channel has a `fee-per-satoshi` value set. I haven't tested if other clients do this too, though it seems plausible.  

---

