Every field that is present in a BOLT11 invoice can be specified in routerrpc.SendPaymentRequest, except for PaymentAddr.
This is a problem for applications that receive or keep payment data that is structured in separate fields rather than a full payment request. The PaymentAddr can't be passed without a payment request and it isn't possible to construct a dummy payment request locally either.
It might also make sense to return the PaymentAddr on the add invoice response, otherwise applications that would specify it on the send payment request would first need to decode the invoice.
Edit: Along those lines, it might also be handy to be able to specify the PaymentAddr when adding the invoice.
It is quite unfortunate that lnd 0.12 will always require a payment address, but that the payment address can't be specified in a call to SendPayment. That basically means that SendPayment becomes unusable without specifying an encoded payment request, except for paying to older nodes.
This was also mentioned in https://github.com/lightningnetwork/lnd/issues/4321
I think MPP record support was added to buildroute though
Most helpful comment
It is quite unfortunate that lnd 0.12 will always require a payment address, but that the payment address can't be specified in a call to
SendPayment. That basically means thatSendPaymentbecomes unusable without specifying an encoded payment request, except for paying to older nodes.