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
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:
Memo:valueBlink wallet payment:
From <username>Memo:Settled intraledger counterparty: <username>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.memofirst and only falls back toFrom <counterPartyUsername>when memo is empty.Relevant mobile logic:
blink-mobile/app/components/transaction-item/transaction-item.tsxuseDescriptionDisplaymemofirstFrom <counterPartyUsername>forSettlementViaIntraLedgerreceivesIn
blink, the LNURL callback acceptscommentand passes it as invoicememo:apps/pay/app/lnurlp/[username]/callback/route.tsBut 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.tscore/api/src/services/ledger/facade/tx-metadata.tscore/api/src/domain/wallets/tx-history.ts