Skip to content

feat: lexe.pay invoices/offers with BOLT12 payer proofs - #1

Merged
cursor[bot] merged 1 commit into
mainfrom
cursor/outbound-pay-brainstorm-e0b5
Sep 12, 2026
Merged

cursor[bot] merged 1 commit into
mainfrom
cursor/outbound-pay-brainstorm-e0b5

Conversation

@vincenzopalazzo

@vincenzopalazzo vincenzopalazzo commented Sep 11, 2026 •

Copy link
Copy Markdown
Owner

Goal: Let an MCP client say “pay this invoice <lnbc…|lno1…>” and have lexe-mcp send from the caller’s Lexe node.

L402 is unchanged and out of scope for this work.

What landed

  • lexe.pay — pass invoice or offer (BOLT11 lnbc… or BOLT12 lno1…). Analyzes via sidecar, refuses on-chain, then POST /v2/node/pay_invoice / pay_offer / pay_lnurl. Amountless strings need amount_sats.
  • Settled BOLT12 offer pays also call sidecar create_payer_proof and return proof (lnp1…) plus proof_url https://lnproof.space/lnp1…. A proof failure does not undo the payment (proof_error).
  • lexe.analyze — decode without sending.
  • Optional payMaxSats / LEXE_PAY_MAX_SATS (default 0 = no cap).
  • Same Bearer identity as lexe.create_invoice. Missing identity is isError: true.
  • CI: go test, tools/list includes lexe.pay, unpaid lexe.pay greps missing Lexe identity.

Usage

lexe.pay  invoice: lnbc1… | lno1…
          amount_sats?: <required if amountless>
          note?: <local only>
          proof_note?: <public, bound into the BOLT12 proof>

Then lexe.check_payment with the returned index. For offer pays, open proof_url on lnproof.space.

Brainstorm: docs/brainstorms/2026-09-11-outbound-analyze-and-pay.md

Open in Web Open in Cursor 

@cursor cursor Bot changed the title docs: brainstorm outbound analyze + pay on behalf feat: lexe.pay invoices/offers with BOLT12 payer proofs Sep 12, 2026
Add lexe.pay and lexe.analyze so an MCP client can pay a BOLT11
invoice or BOLT12 offer from the caller's Lexe node. Settled offer
pays mint a sidecar payer proof and return proof_url on
lnproof.space. On-chain sends are refused. L402 receive hop is
unchanged.

Co-authored-by: Vincenzo Palazzo <vincenzopalazzo@member.fsf.org>
@cursor
cursor Bot force-pushed the cursor/outbound-pay-brainstorm-e0b5 branch from b087c83 to 6d132e8 Compare September 12, 2026 00:26
@cursor
cursor Bot merged commit 6d132e8 into main Sep 12, 2026
2 checks passed
@vincenzopalazzo
vincenzopalazzo deleted the cursor/outbound-pay-brainstorm-e0b5 branch September 22, 2026 23:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants