Offers is a proposed protocol enhancement for Lightning that would allow nodes to request and receive invoices over LN.
An example of a common use of this protocol would be that a merchant generates a QR code, the customer scans the QR code, the customer’s LN node sends some of the details from the QR code (such as an order ID number) to the merchant’s node over LN, the merchant’s node returns an invoice (also over LN), the invoice is displayed to the user (who agrees to pay), and the payment is sent.
Although the above use case is already addressed today using BOLT11 invoices, the ability for the spending and receiving nodes to communicate directly before attempting payment provides much more flexibility. For example, the requested amount could be specified in the terms of a non-Bitcoin currency (e.g. USD); if the BTC-to-USD exchange rate changed too much since the invoice was received, the two nodes could automatically negotiate an update to the payable BTC amount to make it again consistent with the requested USD amount.
Interactive communication between the nodes also enables features that aren’t possible with BOLT11’s one-time-use hashlocks, such as recurring payments for subscriptions and donations.
Primary code and documentation
Optech newsletter and website mentions
- 2021 year-in-review: offers
- Summary of LN developer conference, including discussion of offers
- Spark Lightning Wallet adds partial support for offers
- C-Lightning 0.10.1 updates the experimental implementation of offers
- Offers specification updated to no longer require a signature
- Offers specification updated to partly address stuck payments
- C-Lightning 0.9.3 released with experimental offers support
- 2020 year in review: LN offers
- C-Lightning #4255 is the first of a series of PRs for offers
- New direct messages protocol to be used for offers