Patch release fixing outgoing invoice payments that could hang when LND never emits a payment index.
API: No changes. Proto definitions, HTTP routes, and RPC surface are unchanged since v0.0.37.
Config: No new or changed configuration. Payment index timeout follows the existing LND sendPayment timeout (default ~50s).
Migration: None required. Deploy the new binary and restart; no database or settings updates.
Operator impact:
- PayInvoice now aborts a stalled sendPayment stream when no payment index arrives within the timeout, then reconciles outcome directly against LND (success, failure, or still in-flight).
- Pending-payment reconciliation retries LND lookups before acting; payments with a recorded index are left pending rather than refunded on a transient miss.
- Pending payments with no LND record and no payment index may be automatically refunded after retries.
- Premature refunds on PayInvoice errors are reduced: a failure is confirmed only when LND shows FAILED or when no payment index was received and no payment exists.
- trackPaymentV2 and GetPaymentFromHash handle unknown/uninitiated payments more cleanly (null instead of spurious errors).
Recommended for operators seeing stuck outgoing payments or user balances held on pending invoice pays.