Does a LN route with N channels at most require N-2 fee payments? Assume we have a route n1 -&gt; n2 -&gt; n3 -&gt; n4. My intuition here is that n2 charges n1 a fee and that n3 charges n2 a fee for routing payments. However, there's no fee for the last hop where n3 forwards the payment to n4. Is this correct? And if so, is this just an implementation detail, or is this somehow enforced on the protocol level?
The last channel in the route does have an impact on the fees of the payment. It's a bit counter-intuitive but when a payment is being forwarded by intermediate nodes it pays to the node the fees necessary to traverse an outgoing channel of that node. In a situation A -&gt; B -&gt; C A sends to B amount + fee(BC) because A knows that B will subtract the fees according to the cost of traversing the channel to C namely 'fee(BC)'; note that if there are multiple channels between B and C, A can't choose which one to traverse. In the case of the last hop you want to it to have the amount that was requested in the invoice (or whatever amount you want it to receive), in the { A, B, C } example A is effectively paying for the last hop even though the amount that comes out of B is without fees because B takes them in advance (before forwarding it to C). 

As reference you can look here and specifically in the field descriptions: every forwarding node has to respect the equality incoming_htlc_amt - fee &gt;= amt_to_forward where incoming_htlc_amt is the amount being received upstream and
amt_to_forward is what will be sent downstream.So to answer your question, an LN route with N channels requires exactly N-1 fee payments.