{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "lightning-bolt12-offers",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/lightning-bolt12-offers/",
  "collection": "bitcoin",
  "title": "BOLT 12 offers: reusable Lightning requests and fresh invoices",
  "description": "Understand reusable BOLT 12 offers and how a wallet requests a fresh Lightning invoice before paying.",
  "aliases": [
    "bolt12 offers lightning",
    "bolt12 offers lightning explained"
  ],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T19:29:20.637Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "A BOLT 12 offer is a reusable invitation to request a Lightning invoice. In the normal flow, a wallet reads the offer, sends an invoice request over Lightning messaging, receives a specific invoice and pays it. The offer and the invoice are different objects. Both sides need compatible support, and publishing an offer does not guarantee that its service is online or a payment route is available.",
    "claimId": "lightning-bolt12-offers-quick-answer",
    "sourceIds": [
      "x425-btc-bolt12",
      "x425-btc-ln-payments"
    ]
  },
  "keyFacts": [
    {
      "label": "Offer",
      "value": "Longer-lived information for requesting invoices",
      "sourceIds": [
        "x425-btc-bolt12"
      ],
      "id": "offer",
      "claimId": "lightning-bolt12-offers-fact-offer"
    },
    {
      "label": "Invoice request",
      "value": "Asks for the particular payment terms",
      "sourceIds": [
        "x425-btc-bolt12"
      ],
      "id": "invoice-request",
      "claimId": "lightning-bolt12-offers-fact-invoice-request"
    },
    {
      "label": "Invoice",
      "value": "Supplies the specific payment request",
      "sourceIds": [
        "x425-btc-bolt12"
      ],
      "id": "invoice",
      "claimId": "lightning-bolt12-offers-fact-invoice"
    }
  ],
  "prerequisites": [
    "lightning-network-explained",
    "lightning-payment-channels"
  ],
  "sections": [
    {
      "id": "flow",
      "heading": "One published offer can lead to many invoices",
      "sourceIds": [
        "x425-btc-bolt12"
      ],
      "paragraphs": [
        "The specification’s user-pays-merchant flow begins with an offer on a page or QR code. Each user asks for a unique invoice, which the merchant returns before payment. An offer can therefore outlive an individual invoice without asking everyone to reuse the same payment hash.",
        "Offers may include constraints such as amount, supported chain, quantity or expiry. Reusable does not mean unconditional, permanent or payable by every Lightning wallet."
      ]
    },
    {
      "id": "example",
      "heading": "Two purchases should not become one shared invoice",
      "sourceIds": [
        "x425-btc-bolt12"
      ],
      "paragraphs": [
        "Suppose a merchant publishes an offer for a 5,000-satoshi item. Two customers use the same offer, but their wallets request separate invoices. Each customer checks the returned invoice and authorizes their own payment.",
        "If one request fails because the merchant is unavailable, the offer’s continued visibility does not show that payment succeeded. The request-and-response stage still has to complete."
      ]
    },
    {
      "id": "compatibility",
      "heading": "Keep offers distinct from names and payment receipts",
      "sourceIds": [
        "x425-btc-bolt12",
        "x425-btc-lud16",
        "x425-btc-lud6"
      ],
      "paragraphs": [
        "A Lightning Address uses a domain-based LNURL-pay service to obtain invoices. BOLT 12 defines its own offer, invoice-request and invoice objects. Similar reusable payment experiences do not make those protocols interchangeable.",
        "The specification also discusses evidence that an invoice was paid and evidence tied to the requesting payer. Ordinary knowledge of a payment preimage alone does not prove a particular person paid. Preserve the actual wallet record instead of treating the public offer as a receipt."
      ]
    }
  ],
  "faq": [
    {
      "question": "Is a BOLT 12 offer itself a paid invoice?",
      "answer": "No. It contains information used to request an invoice. The wallet must obtain and validate the returned invoice, then complete the payment.",
      "sourceIds": [
        "x425-btc-bolt12"
      ]
    },
    {
      "question": "Does BOLT 12 support imply automatic recurring charges?",
      "answer": "No. A reusable offer lets someone request additional invoices. It does not by itself grant a merchant authority to debit a wallet repeatedly without the payer’s payment process.",
      "sourceIds": [
        "x425-btc-bolt12"
      ]
    }
  ],
  "claims": [
    {
      "id": "lightning-bolt12-offers-quick-answer",
      "articleSlug": "lightning-bolt12-offers",
      "statement": "A BOLT 12 offer is a reusable invitation to request a Lightning invoice. In the normal flow, a wallet reads the offer, sends an invoice request over Lightning messaging, receives a specific invoice and pays it. The offer and the invoice are different objects. Both sides need compatible support, and publishing an offer does not guarantee that its service is online or a payment route is available.",
      "sourceIds": [
        "source-cc1932d4fd39f8dd",
        "source-1906b56694566cb0"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-cc1932d4fd39f8dd",
          "locator": "Limitations of BOLT 11; Payment Flow Scenarios; Offers; Invoice Requests; Invoices; Payer Proofs"
        },
        {
          "sourceId": "source-1906b56694566cb0",
          "locator": "Pathfinding; Dispatching Payments; Payment Fees; Monitoring Payments"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "Educational explanation. Product-specific behavior is scoped to the cited documentation, checked 2026-10-02.",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Read BOLT12 offer/invoice_request/invoice flow, offer constraints and payer proofs. Reusability does not imply permanent availability, universal support or recurring debit authority; LNURL address and BOLT12 are not conflated."
        ]
      }
    },
    {
      "id": "lightning-bolt12-offers-fact-offer",
      "articleSlug": "lightning-bolt12-offers",
      "statement": "Offer: Longer-lived information for requesting invoices",
      "sourceIds": [
        "source-cc1932d4fd39f8dd"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-cc1932d4fd39f8dd",
          "locator": "Limitations of BOLT 11; Payment Flow Scenarios; Offers; Invoice Requests; Invoices; Payer Proofs"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Read BOLT12 offer/invoice_request/invoice flow, offer constraints and payer proofs. Reusability does not imply permanent availability, universal support or recurring debit authority; LNURL address and BOLT12 are not conflated."
        ]
      }
    },
    {
      "id": "lightning-bolt12-offers-fact-invoice-request",
      "articleSlug": "lightning-bolt12-offers",
      "statement": "Invoice request: Asks for the particular payment terms",
      "sourceIds": [
        "source-cc1932d4fd39f8dd"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-cc1932d4fd39f8dd",
          "locator": "Limitations of BOLT 11; Payment Flow Scenarios; Offers; Invoice Requests; Invoices; Payer Proofs"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Read BOLT12 offer/invoice_request/invoice flow, offer constraints and payer proofs. Reusability does not imply permanent availability, universal support or recurring debit authority; LNURL address and BOLT12 are not conflated."
        ]
      }
    },
    {
      "id": "lightning-bolt12-offers-fact-invoice",
      "articleSlug": "lightning-bolt12-offers",
      "statement": "Invoice: Supplies the specific payment request",
      "sourceIds": [
        "source-cc1932d4fd39f8dd"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-cc1932d4fd39f8dd",
          "locator": "Limitations of BOLT 11; Payment Flow Scenarios; Offers; Invoice Requests; Invoices; Payer Proofs"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Read BOLT12 offer/invoice_request/invoice flow, offer constraints and payer proofs. Reusability does not imply permanent availability, universal support or recurring debit authority; LNURL address and BOLT12 are not conflated."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "x425-btc-bolt12",
      "label": "BOLT 12: Negotiation Protocol for Lightning Payments",
      "publisher": "Lightning specification contributors",
      "url": "https://raw.githubusercontent.com/lightning/bolts/1aadb719b4007c4cea0ba6e36b08c4fb53788dee/12-offer-encoding.md",
      "locator": "Limitations of BOLT 11; Payment Flow Scenarios; Offers; Invoice Requests; Invoices; Payer Proofs",
      "note": "Reusable offers produce separate invoice requests and authenticated invoices.",
      "version": "Pinned BOLTs revision",
      "checkedAt": "2026-10-02T18:53:57.136Z",
      "contentSha256": "0fa23def72465c7c31dcff2c90c0139e988c502b42f103c0e0b945b752837b69",
      "recordId": "source-cc1932d4fd39f8dd"
    },
    {
      "id": "x425-btc-ln-payments",
      "label": "Sending Payments",
      "publisher": "Lightning Labs",
      "url": "https://raw.githubusercontent.com/lightninglabs/docs.lightning.engineering/0456e1627b2579ac18108cb921fe609f87c8b009/lightning-network-tools/lnd/payments.md",
      "locator": "Pathfinding; Dispatching Payments; Payment Fees; Monitoring Payments",
      "note": "LND initiated/in-flight/succeeded/failed statuses and safe retry semantics.",
      "version": "Pinned Lightning Labs documentation revision; LND/Loop implementation scope",
      "checkedAt": "2026-10-02T18:53:57.437Z",
      "contentSha256": "b60ed4c76affc6a05feaaf3ec960f40d5039a3d53aae3c35046e6fc125279d7b",
      "recordId": "source-1906b56694566cb0"
    },
    {
      "id": "x425-btc-lud16",
      "label": "Pay to static internet identifiers",
      "publisher": "LNURL contributors",
      "url": "https://raw.githubusercontent.com/lnurl/luds/913c49e5b65081473eed7889eee5f806dd30f049/16.md",
      "locator": "Paying to internet identifiers: username/domain resolution to LNURL-pay; metadata text/identifier versus text/email",
      "note": "Lightning Address resolution to a domain-hosted LNURL-pay endpoint.",
      "version": "LUD-16 pinned revision",
      "checkedAt": "2026-10-02T18:53:57.523Z",
      "contentSha256": "abf008cbb492ce04a77ddce32c39269a1c48686b1a51526de7453749bfc18491",
      "recordId": "source-feee64f340f934a6"
    },
    {
      "id": "x425-btc-lud6",
      "label": "LNURL-pay",
      "publisher": "LNURL contributors",
      "url": "https://raw.githubusercontent.com/lnurl/luds/913c49e5b65081473eed7889eee5f806dd30f049/06.md",
      "locator": "LNURL-pay: metadata and amount response, invoice callback and wallet verification steps",
      "note": "HTTP callback, amount bounds, metadata and invoice verification in LNURL-pay.",
      "version": "LUD-06 pinned revision",
      "checkedAt": "2026-10-02T18:53:57.478Z",
      "contentSha256": "96491eddc7c75efedc94f56f53ed8322acd719c35a53e644dc9408347f5980c2",
      "recordId": "source-3dc33608911e84ce"
    }
  ],
  "related": {
    "articles": [
      "lightning-network-explained",
      "lightning-payment-channels",
      "lightning-submarine-swaps"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and separate automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “BOLT 12 offers: reusable Lightning requests and fresh invoices.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/lightning-bolt12-offers/"
}
