No protobuf or route changes; HTTP/Nostr API surface is unchanged.
NewInvoice now rejects amountSats of 0 (error: amount cannot be zero or negative). Previously only negative amounts were rejected.
PayInvoice no longer supports zero-amount invoices. Requests against invoices with no embedded amount fail with invoice has no amount, including when a non-zero amount is supplied. Previously, a zero-value invoice could be paid by passing an amount in the request.
PayInvoice for fixed-amount invoices is unchanged: do not pass amount when the invoice already has a value.
Config
No configuration or environment variable changes.
Migration
Standard rolling upgrade; no database migration required.
Review integrations that create zero-sats invoices or pay zero-value BOLT11 invoices with an explicit amount - those flows will now error.
Sanity checker improvements: new_address events for deleted users are skipped instead of failing; missing addresses for live users still fail. Balance reconstruction now errors if the event log implies a balance for a deleted user. Operators who previously saw sanity failures after user cleanup should see fewer false positives.