Skip to content

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

Description

@piotr-iohk

What happened?

Two live wallets (iOS sim ios ↔ Android emu andi) 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:

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

The missing 1k did pay (iOS → Android LN, proof queued). The missing 25k did pay (Android → iOS on-chain e418fd9b…, iOS activity +25 000, 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 #683 / #1178 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. iOS creates 1k Lightning request; Android pays it.
  3. Android creates 1k Lightning request; iOS pays it.
  4. iOS creates 25k on-chain request; Android pays it (or the reverse order used in the recording).
  5. Android creates 25k on-chain request; iOS 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

iOS #683 (489b1e6 / fix: lock incoming request amounts + later). Cross-tested vs Android #1178 (10ff0df).

Device / OS

iPhone 17 simulator, iOS 26.0 (paired with Pixel emulator)

Reproducibility

Always (2/2 sessions)

Additional context

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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