Reconnecting the Mercury account inside Quicken kicks the browser out to:
https://services.quicken.com/oauth-redirect/<long-id>...
Hits the connection flow whether triggered from "Set Up Now" on a new account or "Reactivate" on a previously connected one.
Stale OAuth state in the browser. The handshake between Quicken Connection Services (QCS) and Mercury depends on a short-lived state cookie/token. If anything stretches the time between Mercury approving and Quicken's callback receiving the response — slow click, second auth window, prior failed attempt leaving residue — the state token expires or doesn't match, and QCS rejects the callback with a 400.
The 400 is not from Mercury and not from Quicken's desktop client. It's from services.quicken.com rejecting the callback because the inbound state doesn't match what QCS expects.
Run these steps in order. Each one matters — skipping the cookie clear or the deactivate step usually causes the next attempt to fail the same way.
Close the 400 browser tab and the Quicken connection dialog. Do not retry from the failed tab — the broken state will carry forward.
In a fresh browser tab, log into app.mercury.com. Confirm you're signed in before going back to Quicken.
Clear cookies for services.quicken.com and mercury.com, or open a fresh Incognito/Private window for the retry. This is the step that actually fixes the 400 — without it, the cached state keeps poisoning the handshake.
In Quicken: Accounts → [Mercury account] → Settings (gear) → Online Services → Deactivate. Confirm the account drops to manual. This wipes Quicken's side of the broken connection.
On the same account, click Set Up Now / Activate. When the browser handoff fires, you're already logged into Mercury, so the OAuth approval is a single click and the callback completes cleanly.
Two known fallbacks:
Useful when QCS is broken for days and you need to keep the books current.
This is a recurring failure mode, not a one-time issue. Mercury–QCS has been fragile through 2026. Triggers seen so far:
When the next 400 hits, this runbook is the first move. Don't bother debugging — clear state, reactivate, retry.