Exchange token (removed)
Login
Exchange token (removed)
Formerly exchanged a pre-registered userId for a Qash user JWT. Replaced by email OTP login.
POST
Exchange token (removed)
This page is retained for reference only. There is no longer any HTTP route for this — gateway or service-internal. The underlying token-issuance logic was refactored into an internal helper that is now only invoked as part of the OTP verify flow (
Now, login is a two-step, email-verified exchange:
POST /partner/auth/verify), not reachable on its own with a bare userId.
What replaced it
Previously, partners exchanged auserId directly for a JWT, with no proof that the request came from the actual end-user:
X-Api-Key + X-Api-Secret are still required on both calls — your partner scope is unchanged. What’s new is that the resulting accessToken can only be minted once the user has entered a code sent to an email they control, and only once their account is active (KYC approved). Everything downstream — profile updates after login, financial operations, and card issuance — uses that accessToken as a standard Authorization: Bearer header, not your API key.