If you saw this fast "expiring" invoice in a qr that popped up, that's a bug. If you saw this fast "expiring" invoice by visiting satistics and clicking on a pending transaction, that's expected:
Once a wallet has reported failing to pay an invoice, we cancel that invoice before generating a new one. We do this because for all we know the wallet's payment is still in flight because the wallet may have a bug that reported failure incorrectly (MUCH more common than it should be); and, paying a bolt11 invoice multiple times can lead to a routing node stealing funds (if it was on a route for a prior successful payment and has the preimage).
what developers of a system expect is often different from what users do, and if that mismatch is too large, I'd still call it a UX-level bug, even if it's not a failure of any particular "contract" within the design of the code.
If you saw this fast "expiring" invoice in a qr that popped up, that's a bug. If you saw this fast "expiring" invoice by visiting
satisticsand clicking on a pending transaction, that's expected:Once a wallet has reported failing to pay an invoice, we cancel that invoice before generating a new one. We do this because for all we know the wallet's payment is still in flight because the wallet may have a bug that reported failure incorrectly (MUCH more common than it should be); and, paying a bolt11 invoice multiple times can lead to a routing node stealing funds (if it was on a route for a prior successful payment and has the preimage).