Skip to content
  • Build on Kinde
  • Set up options

Enable self-serve portal for orgs

You can configure a self-serve portal to enable authorized organization members to be able to self-manage functions provided by Kinde. For example, you can allow them to update their business details, payment details (if you have billing set up), multi-factor auth settings (coming soon), and manage organization members (coming soon).

A self-serve portal means your customers can make basic account changes without contacting you for support. This can save time and money.

Configure the organization self-serve portal

Link to this section
  1. Go to Settings > Environment > Self-serve portal.
  2. Enter the Return URL that you want users to land on when they exit the portal, e.g. your app dashboard.
  3. Add an Organization alias to represent how your customers are referred to in your business, e.g. Account, Partner, Workspace, etc. This will be visible in the interface in the portal.
  4. In the Organization profile section, select the functions you want organization admins to be able to manage.
  5. Select Save.

Portal access control with system permissions

Link to this section

Each core function within the self-serve portal is governed by a corresponding system permission. For example, the org:write:billing permission allows users to update billing details.

These permissions can be included in your custom roles and assigned to organization members.

We recommend creating custom roles with varying levels of portal access, which you can then assign as needed. For instance, you might create a role that allows members to view billing details but not update them.

When configuring org roles, you can specify whether it should be:

  • Automatically assigned to all new organization members.
  • Automatically assigned to the organization creator.
Link to this section

Access to the portal is granted via a one-time link. There are two main ways to generate this link:

  • Using the user’s access token (recommended)
  • Using the Kinde Management API
Link to this section

This method is ideal when you want to generate the portal link on the fly—for example, when a user clicks an “Account” button in your app.

Link to this section

If you’re using the Kinde React SDK, you can use the <PortalLink /> component, which both generates the link and redirects the user:

import {PortalLink} from "@kinde-oss/kinde-auth-react";
<PortalLink>Account</PortalLink>;
Link to this section

If you’re not using a Kinde SDK, you can manually call the Account API:

const response = await fetch("/api/v1/account_api/portal_link", {
headers: {
Authorization: `Bearer ${userAccessToken}`
}
});
const data = await response.json();
window.location = data.url;

Optional parameters:

  • return_url – where to redirect the user after exiting the portal.
  • sub_nav – specify the portal section to open (e.g., organization_billing, profile).
Link to this section

This option is useful for server-side applications or if you’re using Kinde billing features without Kinde Authentication.

Make a request to the POST /api/v1/portal/generate_url endpoint using an M2M token.

Request body

{
"user_id": "kp_1234567890", // The ID of the user for whom you want to generate the portal link
"organization_code": "org_123456789", // Optional: the organization code for which the portal link is generated
"return_url": "https://yourapp.com/dashboard", // Optional: where to redirect the user after exiting the portal
"sub_nav": "profile" // Optional: specify the portal section to open (e.g., `organization_billing`, `profile`)
}

This will return a one-time portal link for the specified user.