Skip to content

bug(lnurl): LNURL comment/memo not preserved on recipient transaction for internal Blink-to-Blink payments #550

@pretyflaco

Description

@pretyflaco

Summary

A community builder is using Blink LNURL-pay / lightning address flows with comments to identify payments from different till points at a store.

The comment/memo is preserved when the invoice is paid from an external Lightning wallet, but is missing when the same invoice is paid from another Blink wallet. In the internal Blink-to-Blink case, the recipient transaction shows the sender name/counterparty instead, e.g. From <username>.

Reported behavior

The same comment was passed to two LNURL callback-generated invoices:

  • External wallet payment:

    • recipient history shows the expected comment/memo
    • backend/admin transaction shows the expected Memo: value
    • settlement: Lightning
  • Blink wallet payment:

    • recipient history shows From <username>
    • backend/admin transaction has an empty Memo:
    • backend/admin transaction shows Settled intraledger counterparty: <username>
    • settlement: intraledger

Expected behavior

LNURL comment/memo should be reliably available on the recipient-side transaction history regardless of whether the invoice is settled externally over Lightning or internally via intraledger.

This is needed for merchants to reconcile payments by till point / POS source.

Why this appears backend/API-side

Mobile displays tx.memo first and only falls back to From <counterPartyUsername> when memo is empty.

Relevant mobile logic:

  • blink-mobile/app/components/transaction-item/transaction-item.tsx
    • useDescriptionDisplay
    • returns memo first
    • falls back to From <counterPartyUsername> for SettlementViaIntraLedger receives

In blink, the LNURL callback accepts comment and passes it as invoice memo:

  • apps/pay/app/lnurlp/[username]/callback/route.ts

But Blink-to-Blink Lightning invoice payments are settled as intraledger, and the recipient-side transaction appears to lose the memo/comment while keeping the counterparty username.

Relevant backend areas:

  • core/api/src/app/payments/send-lightning.ts
  • core/api/src/services/ledger/facade/tx-metadata.ts
  • core/api/src/domain/wallets/tx-history.ts

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions