You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Two wallets, private Paykit + contact payments enabled, same contact pair.
iOS creates 1k Lightning request; Android pays it.
Android creates 1k Lightning request; iOS pays it.
iOS creates 25k on-chain request; Android pays it (or the reverse order used in the recording).
Android creates 25k on-chain request; iOS pays it.
What happened?
Two live wallets (iOS sim
ios↔ Android emuandi) 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: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 whenlocalRoleis 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
Logs / Screenshots / Recordings
Screen.Recording.2026-09-02.at.09.50.20-gh.mp4
iOS log: bitkit_logs_2026-09-02_08-09-31.zip
Android log: logs-android.zip
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
Queued a Paykit payment proof for private delivery). This bug is list/history only.