- Rise has enabled your company for the B2B API in the environment you’re calling. This is a per-company switch that only Rise can flip, and staging and production are enabled separately.
- Your API wallet is authorized on your RiseID, meaning it holds an Owner, Payer, or Treasurer role. You set this up yourself in the app.
403, even when your credentials and code are correct. The two checks happen at different points in the flow:
The wallet-role check runs during the SIWE handshake, so a wrong or unauthorized wallet fails at login. Company enablement is checked later, on the first request that names a company or team, so an un-enabled company can still log in and read
/v2/me but gets a 403 the moment it touches a team or payment.Enable your company for B2B API access
The B2B API is off by default. Turning it on for your company is a support request: reach Rise support through your dedicated Slack channel if you have one, the in-app chat, or hello@riseworks.io. Include:- Your company name and RiseID (or company nanoid, the
co-...value). - The environment you want enabled: staging, production, or both.
Finding your RiseID
The SIWE handshake authenticates a user, so theriseid you send is your personal (user) RiseID, not a company or team RiseID and not your Rise Account address. Sending anything else returns 404 No entity found with riseid <id>.
To find it in the app:
1
Open My Profile
Sign in to app.riseworks.io, open the user menu on the top bar (or the Account section of the left menu), and go to My Profile.
2
Copy the Rise ID
Under Details, copy the value in the Rise ID field. It’s a 42-character address that starts with
0x, for example 0x2DF5...b089.
- Open My Profile from the left menu. 2. Under Details, copy the Rise ID (the bare 0x), not the Rise Account below it.
co- / te- nanoids rather than by the SIWE handshake. See RiseID for how the identity hierarchy fits together.
Authorize your API wallet
The wallet you sign with has to be authorized on your personal RiseID before the handshake will hand you a JWT. Authorizing it in the app grants it the Owner role, which is one of the roles the B2B API accepts (Owner, Payer, and Treasurer all work).
- Open Security from the left menu. 2. Under Authorized Wallets, click Add Wallet.
1
Open Security
From the user menu or the Account section of the left menu, go to Security (app.riseworks.io/account/security).
2
Add the wallet
Under Authorized Wallets, click Add Wallet, choose the wallet type, paste the wallet’s address, and confirm.
3
Sign the change
Sign the prompt with a wallet that is already authorized on your RiseID. This writes the new wallet’s role on-chain.
4
Wait for confirmation
Give the on-chain transaction time to confirm before you authenticate. Until it’s mined, the SIWE handshake still sees the wallet as unauthorized and returns a
403.
The Add authorized wallet dialog: pick the wallet type, paste the address, and confirm.
Use a dedicated wallet for API operations rather than one holding funds. It needs no balance, since Rise pays the gas. See Secondary Wallets.
Check you’re set up
Once both prerequisites are in place, run the authentication handshake and confirm a couple of calls:GET /v2/mereturns your user. This proves the wallet is authorized and the JWT is valid.- A scoped call like fetching a team or balance succeeds. That confirms your company is enabled for the environment.
The Authorized Wallets panel doesn’t list wallets that already hold a role, so an empty panel doesn’t mean the save failed. Confirm a wallet’s role from the SIWE handshake succeeding, or by checking the RiseID on Arbiscan.
Next steps
Authentication
Run the SIWE handshake and get your JWT
Environments
Staging and production base URLs
RiseID
How users, companies, and teams relate
Secondary Wallets
Use a dedicated wallet for API operations
