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
Incoming Paykit payment request from a Pubky Shop seller (ADJN…JDCY / contact “pav C tester”) arrived and opened the send flow. Swipe to pay failed with insufficient funds (wallet had 2000 sats; need ≥2255 for 1255 + fee).
After topping up to 7000 sats, pay and dismiss both failed with toast “Payment request operation is already in progress”. Later toast “The payment request is no longer available.” The request disappeared from the actionable list, then reappeared in Activity looking like a completed outflow (-$1.04 / ₿1255) even though no transaction was broadcast. Further resolution attempts log RecoveryRequired / resolution_failed and never reopen a payable sheet.
Expected behavior
A send that fails before broadcast should leave the payment request payable (or cleanly dismissible/rejectable). Activity should not show an unpaid request as a completed negative amount. After funding, the user should be able to pay or dismiss without “already in progress” / “no longer available”.
Steps to Reproduce
Mainnet Bitkit with Paykit; add seller pubky as a contact.
Receive an incoming on-chain Paykit payment request for more than current spendable balance (here: 1255 sats request, 2000 sats on-chain, fees push need to ≥2255).
Open the request and swipe to pay → insufficient funds.
Top up the wallet so balance is clearly enough.
Try to pay again or dismiss the request → “already in progress”, then “no longer available”; Activity may still show the request looking paid.
Often (>50%) — reproduced once end-to-end on mainnet Shop canary; matches the iOS “failed send before broadcast” class (#776)
Additional context
Triggered during Pubky Shop Bitcoin canary (pubky-marketplace#54), order 974b3884. Shop delivery worked after the seller was added as a contact; failure is on the Bitkit pay/retry path.
Listing priced 1000 sats; Bitkit showed 1255 sats for the request.
Same class as iOS #776 (consume private payment list / accept before successful broadcast). Related closed Android HW case: #1227.
No on-chain payment was broadcast; funds remain in the wallet.
Twin: synonymdev/bitkit-ios#776
What happened?
Incoming Paykit payment request from a Pubky Shop seller (
ADJN…JDCY/ contact “pav C tester”) arrived and opened the send flow. Swipe to pay failed with insufficient funds (wallet had 2000 sats; need ≥2255 for 1255 + fee).After topping up to 7000 sats, pay and dismiss both failed with toast “Payment request operation is already in progress”. Later toast “The payment request is no longer available.” The request disappeared from the actionable list, then reappeared in Activity looking like a completed outflow (
-$1.04/ ₿1255) even though no transaction was broadcast. Further resolution attempts logRecoveryRequired/resolution_failedand never reopen a payable sheet.Expected behavior
A send that fails before broadcast should leave the payment request payable (or cleanly dismissible/rejectable). Activity should not show an unpaid request as a completed negative amount. After funding, the user should be able to pay or dismiss without “already in progress” / “no longer available”.
Steps to Reproduce
Logs / Screenshots / Recordings
Insufficient-funds pay attempt:
2026-09-28-paykit-failed-send-stuck-retry-insufficient-funds.mp4
Retry / dismiss after top-up (“already in progress”):
2026-09-28-paykit-failed-send-stuck-retry-already-in-progress.mp4
Ghost Activity detail (looks paid, was not):
Logs (parts covering decode → fail → RecoveryRequired loop + filtered excerpt):
2026-09-28-paykit-failed-send-stuck-retry-logs.zip
Key log lines (UTC):
Bitkit Version
2.5.0 (190), mainnet debug (
to.bitkit),masterat4b5e73f00(chore: restore the payment request changelog entry)Device / OS
Samsung Galaxy S22 (SM-S901B), Android 16 (API 36)
Reproducibility
Often (>50%) — reproduced once end-to-end on mainnet Shop canary; matches the iOS “failed send before broadcast” class (#776)
Additional context
974b3884. Shop delivery worked after the seller was added as a contact; failure is on the Bitkit pay/retry path.