Skip to main content
A V1 integration stores V1 IDs (numeric company, team and user IDs) and V1 RiseIDs. The V2 API works with nanoids (co-…, te-…, us-…), V2 RiseIDs and RiseAccounts. The mapping endpoint gives you all of them side by side in one call, so you can translate your stored identifiers before switching to V2. It returns your company, its teams, and every manager and payee, each with:
  • V1 identifiers: v1_id and v1_riseid
  • V2 identifiers: nanoid, riseid and rise_account
  • Pay handlers: each payee’s pay handler, per team

How it works

1

Authenticate

Use your usual token: a V1 token on /v1/mapping, or a V2 SIWE JWT on either endpoint. See Authentication.
2

Identify the company

Pass any company identifier you already hold in company_id, or leave it out to use the company you own.
3

Rise checks your access

The company owner and organization roles see the whole company. Team managers see only their own teams.
4

Store the mapping

Index the response by v1_id or v1_riseid and save the V2 nanoids next to your V1 records.

Endpoints

In the Rise SDK these are client.mapping.get(params) (V2) and client.v1Legacy.getMapping(params) (V1). Both take the same optional company_id, page, offset and count. Both endpoints accept the same parameters, apply the same access rules, and return the same data. See Environments for the base URL of each environment.
Send a plain GET with no request body. A GET that carries a body (for example, a leftover raw body in Postman) is rejected before it reaches the API, with an intermittent 400 or 502. In Postman, set Body to none.

Request

Accepted company_id values

Pass whichever identifier you already have. Both endpoints resolve it the same way. If you leave out company_id:
  • If you own exactly one company, that company is used.
  • If you own none or more than one, you get 400.

Examples

Response

The V2 response puts pagination inside data. GET /v1/mapping returns the same data without the success field, and puts pagination at the top level next to data.

Fields

Your main V1 company became both the V2 company and its default team, so both carry the same v1_id (10393 above). Every other V1 company became a separate V2 team. Teams created in V2 have null V1 fields.

Access and scope

What you get depends on your own active, direct role on the company. Roles through an accounting firm and terminated memberships do not count. Team scope is the usual case for V1 integrators, whose V1 “company” is a V2 team.
A company you cannot access returns the same 404 Company not found as a company that does not exist. The endpoint never reveals whether another company exists or anything about it.

Pagination

Pagination applies to users only, ordered by user nanoid. company and teams are always returned in full. The pagination object contains page, count, offset, has_more, next_page and next_offset.

Errors

Edge cases

Using the mapping in a migration

Fetch the mapping once (page through it for large companies), then build lookups from your stored V1 values to V2 identifiers. With the Rise SDK:

Migrating from V1

Endpoint-by-endpoint guide to moving to the V2 API

Entity nanoids

How V2 identifiers are structured

V2 API reference

GET /v2/mapping

V1 API reference

GET /v1/mapping