Describe the bug
When generating a spend request with --request-approval, the terminal properly waits on spend-request retrieve --interval 2 --max-attempts 150.
However, when the user clicks the generated https://app.link.com/activity/approve/... link and attempts to approve it in the web UI, the UI silently fails or loops, and the payment remains stuck in pending_approval.
The CLI log eventually yields:
{ "code": "POLLING_TIMEOUT", "message": "Polling stopped before spend request lsrq_... reached a terminal status: timeout (300s) reached; current status is pending_approval" }
The user took a screenshot of the UI, which showed the request counting down ('Expires in 8 minutes'), but clicking 'Approve' did not finalize the transaction. We had to abandon the flow and pay manually.
Expected Behavior
Clicking 'Approve' in the Link app should immediately finalize the transaction and transition the spend request status from pending_approval to approved (or provide a clear, actionable error if it fails).
Steps to Reproduce
- Run
link-cli spend-request create --payment-method-id <id> --amount 4500 --context "..." --request-approval --format json
- Click the generated approval link.
- Click 'Approve' on the web UI.
- UI hangs or fails without clear error; CLI polls until timeout.
Describe the bug
When generating a spend request with
--request-approval, the terminal properly waits onspend-request retrieve --interval 2 --max-attempts 150.However, when the user clicks the generated
https://app.link.com/activity/approve/...link and attempts to approve it in the web UI, the UI silently fails or loops, and the payment remains stuck inpending_approval.The CLI log eventually yields:
{ "code": "POLLING_TIMEOUT", "message": "Polling stopped before spend request lsrq_... reached a terminal status: timeout (300s) reached; current status is pending_approval" }The user took a screenshot of the UI, which showed the request counting down ('Expires in 8 minutes'), but clicking 'Approve' did not finalize the transaction. We had to abandon the flow and pay manually.
Expected Behavior
Clicking 'Approve' in the Link app should immediately finalize the transaction and transition the spend request status from
pending_approvaltoapproved(or provide a clear, actionable error if it fails).Steps to Reproduce
link-cli spend-request create --payment-method-id <id> --amount 4500 --context "..." --request-approval --format json