Skip to content

[Bug]: payment request lists diverge after cross-device pay #1219

Description

@piotr-iohk

What happened?

Two live wallets (Android emu andi ↔ iOS sim ios) each created 2 private payment requests (1k Lightning + 25k on-chain) and paid the other side’s requests. All 4 payments settled. Each Payment Requests list then showed 3 rows, and they did not match:

  • Android: 1× 25 000 + 2× 1 000 (missing one 25k)
  • iOS: 2× 25 000 + 1× 1 000 (missing one 1k)

The missing 25k did pay (Android → iOS on-chain e418fd9b…, iOS activity +25 000, proof queued). The missing 1k did pay (iOS → Android LN, proof queued). So this is a history-row drop, not a failed payment.

Not same-amount overwrite in the app list: IDs are paymentRequestId + counterparty + receiverPath. Hypothesis: after fulfill, one side drops the row when localRole is missing/unknown (history mapping skips those).

Seen twice (2026-09-01 and 2026-09-02) on #1178 / #683 builds.

Expected behavior

After 4 created + 4 paid requests between the same pair, both devices show the same 4 rows (2× 1k + 2× 25k).

Steps to Reproduce

  1. Two wallets, private Paykit + contact payments enabled, same contact pair.
  2. Android creates 1k Lightning request; iOS pays it.
  3. iOS creates 1k Lightning request; Android pays it.
  4. Android creates 25k on-chain request; iOS pays it (or the reverse order used in the recording).
  5. iOS creates 25k on-chain request; Android pays it.
  6. Open Payment Requests on both devices.

Logs / Screenshots / Recordings

  • Recording:
Screen.Recording.2026-09-02.at.09.50.20-gh.mp4
Image

Bitkit Version

Android #1178 (10ff0df). Cross-tested vs iOS #683 (489b1e6).

Device / OS

Pixel emulator (paired with iPhone 17 simulator)

Reproducibility

Always (2/2 sessions)

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions