Business Accounts are in early access. See Business Accounts for the model. For what an elevated access token is and when the backend requires one, see Step-Up Authentication.
403.
Which operations require step-up
All scopes above are always enforced except
business_account:link_wallet, which is required by default but can be turned off in Dashboard > Security under Business Account Actions.
These do not require step-up: createBusinessAccount, getBusinessAccount, listBusinessAccounts, createWalletForBusinessAccount.
Check whether step-up is needed
checkStepUpAuth does a fast local check first. If a valid elevated token for the scope is already in state, it returns { isRequired: false } without a network round-trip. Only if a fresh token is needed does it call the backend.
How to obtain an elevated token
Option 1: MFA / passkey verify with requestedScopes
Pass requestedScopes when verifying with MFA, a passkey, or email OTP. The SDK parses the elevated token from the verify response and stores it automatically.
requestedScopes parameter is available on authenticateTotpMfaDevice, verifyOTP, and signInWithSocialPopUp.
Option 2: External auth assertion (server-side)
If your backend issues its own JWTs (registered via your environment’s JWKS URL), mint a short-lived JWT containingsub, scope, jti, and exp claims and pass it to requestExternalAuthElevatedToken.
Option 3: Step-up challenge flow
Use thecredentials and defaultCredentialId from checkStepUpAuth to drive your own challenge UI, then pass the completed credential to a verify call with requestedScopes.
Putting it together
x-dyn-elevated-access-token on the request. You do not pass the token manually.
Error handling
If the elevated token is missing or expired, the backend returns a403. Catch it and prompt for re-verification: