Skip to content
Closed
Show file tree
Hide file tree
Changes from 50 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
026fae8
Create index.mdx
clairekinde11 Jun 4, 2025
9d0b826
Update sidebarData.ts
clairekinde11 Jun 4, 2025
7ab1d88
Create setup-overview.mdx
clairekinde11 Jun 4, 2025
e1d87f2
Create about-plans.mdx
clairekinde11 Jun 4, 2025
5d9bcf3
Create about-billing.mdx
clairekinde11 Jun 4, 2025
75be235
Delete src/content/docs/billing/About billing directory
clairekinde11 Jun 4, 2025
b79474e
Create pricing-models.mdx
clairekinde11 Jun 4, 2025
4103326
Create plan-selection.mdx
clairekinde11 Jun 4, 2025
1a7cd27
Create payment-gateway.mdx
clairekinde11 Jun 4, 2025
07971ca
Delete src/content/docs/billing/about-payments-and-plans directory
clairekinde11 Jun 4, 2025
7821e77
Create add-billing-role.mdx
clairekinde11 Jun 4, 2025
ea31b67
Create default-billing-currency.mdx
clairekinde11 Jun 4, 2025
3d1715b
Create connect-to-stripe.mdx
clairekinde11 Jun 4, 2025
dd30091
Create build-plans.mdx
clairekinde11 Jun 4, 2025
fe447a6
Update connect-to-stripe.mdx
clairekinde11 Jun 4, 2025
17683c9
Update connect-to-stripe.mdx
clairekinde11 Jun 4, 2025
49f4be3
Update build-plans.mdx
clairekinde11 Jun 4, 2025
6450f2b
Update add-billing-role.mdx
clairekinde11 Jun 4, 2025
36bcc35
Create publish-plans.mdx
clairekinde11 Jun 4, 2025
e5e7392
Create add-pricing-table.mdx
clairekinde11 Jun 4, 2025
656a96a
Create self-serve-portal-setup.mdx
clairekinde11 Jun 4, 2025
555c9c8
Update add-pricing-table.mdx
clairekinde11 Jun 4, 2025
5ec3cb0
Create billing-concepts-terms.mdx
clairekinde11 Jun 4, 2025
7b82153
Update about-billing.mdx
clairekinde11 Jun 5, 2025
355fe71
Create kinde-billing-model.mdx
clairekinde11 Jun 5, 2025
542433b
Update kinde-billing-model.mdx
clairekinde11 Jun 5, 2025
d1e1d62
Update setup-overview.mdx
clairekinde11 Jun 5, 2025
2423cec
Update add-billing-role.mdx
clairekinde11 Jun 5, 2025
24ce26b
Next
clairekinde11 Jun 5, 2025
287fe99
Update add-billing-role.mdx
clairekinde11 Jun 5, 2025
3165bbd
Correction
clairekinde11 Jun 5, 2025
e91d129
Update default-billing-currency.mdx
clairekinde11 Jun 5, 2025
b96b6b5
Create manage-stripe-connection.mdx
clairekinde11 Jun 5, 2025
ff94c15
Update connect-to-stripe.mdx
clairekinde11 Jun 5, 2025
e671141
Create create-plans.mdx
clairekinde11 Jun 5, 2025
4373c95
Update build-plans.mdx
clairekinde11 Jun 5, 2025
36ce374
Update publish-plans.mdx
clairekinde11 Jun 5, 2025
8d57010
Update add-pricing-table.mdx
clairekinde11 Jun 5, 2025
ee2f73d
Update add-pricing-table.mdx
clairekinde11 Jun 5, 2025
5b26771
Update add-pricing-table.mdx
clairekinde11 Jun 5, 2025
faff09b
Update build-plans.mdx
clairekinde11 Jun 5, 2025
981222b
Update kinde-billing-model.mdx
clairekinde11 Jun 5, 2025
1853601
Update about-billing.mdx
clairekinde11 Jun 5, 2025
9f592b3
Create self-serve-portal-for-orgs.mdx
clairekinde11 Jun 5, 2025
85ac661
Update self-serve-portal-setup.mdx
clairekinde11 Jun 5, 2025
287829f
Update about-plans.mdx
clairekinde11 Jun 5, 2025
0f89c8b
Update plan-selection.mdx
clairekinde11 Jun 5, 2025
fe20ff5
Update plan-selection.mdx
clairekinde11 Jun 5, 2025
9c91d3d
Update sidebarData.ts
clairekinde11 Jun 5, 2025
e8fb122
Update self-serve-portal-for-orgs.mdx
clairekinde11 Jun 6, 2025
5b8e7de
Update create-plans.mdx
clairekinde11 Jun 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions src/content/docs/billing/about-billing/about-billing.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
page_id: bd6757e3-81d5-48d6-89c8-dd4c222ac647
title: About billing
sidebar:
order: 1
relatedArticles:
-
app_context:
-
---

Kinde billing gives you the ability to create plans that users can subscribe to, so you can get paid for your services and collect revenue.

This feature lets you:

- Create and manage plans, and make them visible to your customers
- Create and customize a pricing table for plan selection
- Implement specific pricing models to suit your product
- Use Stripe for secure handling of payments and invoicing
- Link organizations (B2B) and individual customers (B2C) to a plan
- Handle plan upgrade, downgrade, and cancellation
- Enable self-serve account management for customers
- Customize the pricing table to make the whole experience on-brand

Billing makes the Kinde platform *the* essential development infrastructure for managing the customer lifecycle across every part of your business. From registration to plan selection, authorization to provisioning, releases to upgrades.

## This is our first billing release

Billing is a really complex area of app development, so while this release is tested and ready, we are still treating it like a beta to signal that we are actively working on improvements from day one.

### How to send feedback

It would be amazing if you can send any feedback you have via [not sure where] so we can quickly collect and prioritize improvements.

## Known limitations

These are current limitations that we are aware of and are working on adding.

- Support for plan models with free trial periods
- Annual subscriptions. Only monthly is available right now.
- Changes to the billing cycle (e.g. choose billing anniversaries, etc.)
- Add-ons and discounts that can be applied to individual subscriptions
- Plan versioning
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
page_id: 9d1daf85-1a2c-4cc5-879a-230c950bed12
title: Billing concepts & terms
sidebar:
order:
relatedArticles:
-
app_context:
-
---
Comment on lines +4 to +10
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Frontmatter incomplete
The sidebar.order, relatedArticles, and app_context fields are empty. Populate or remove unused frontmatter keys so the page renders correctly in the sidebar and related-links sections.

🤖 Prompt for AI Agents
In src/content/docs/billing/about-billing/billing-concepts-terms.mdx around
lines 4 to 10, the frontmatter fields sidebar.order, relatedArticles, and
app_context are empty. To fix this, either provide appropriate values for these
fields based on the page's context and related content or remove these keys
entirely if they are not needed, ensuring the page renders correctly in the
sidebar and related-links sections.




Billing is the collective term we use to refer to the broad function of plans, pricing, payments, etc. The core concepts that you will come across in Kinde and in the docs might not be familiar to you.

## Key concepts

- **Plans and plan groups** - Plans define the specific features, usage limits, and pricing tiers offered to customers in a SaaS product. Plan groups organize multiple plans under a common category, helping segment offerings by use case, customer size, or market.
- **Pricing models** - Pricing models are the different methods of charging customers, such as flat-rate, usage-based, tiered, per-seat pricing, etc. Your pricing model is determined by your product and customer needs. Consider scalability and longevity when deciding this.
- **Payments gateway** - A payments gateway is a service that securely processes customer payments via credit cards, ACH, or other methods - such as Stripe.
- **Pricing table** - A pricing table is a visual representation of your different subscription plans, showcasing features and prices to help users compare options. You can build one in Kinde and embed it on your site using a URL.
- **Self-serve account portal** - Kinde provides a self-serve portal. This allows customers to manage their subscriptions—such as upgrading plans, updating payment information, or cancelling. This reduces support overhead and improves user autonomy. In Kinde, you can decide what your customers can self-manage or remove the functionality completely.

## Common billing terms

- **Base price** – The starting cost of a subscription plan, typically the cost for a core set of features or a minimum level of usage.
- **Chargeable / Non-chargeable feature** –
- **Chargeable feature**: Incurs an additional fee when used. Might be metered or per unit price.
- **Non-chargeable feature**: Included in the plan at no extra cost. Add non-chargeable features for anything included in all plans, and that needs to be provisioned.
- **Feature** – A specific function or capability of your SaaS product that you provision for app users. In context with a plan, these are chargeable or non-chargeable features that are provisioned to customers.
- **Fixed charge** – A recurring fee that does not change based on usage, often applied monthly or annually. Use this for a plan’s base price or other flat recurring fees.
- **Metered and unmetered feature** – Metered features are provisioned in units, often with pricing per unit, e.g. MAU. An unmetered feature is like a boolean, and is a basic feature with no pricing attached.
- **Multi-currency** – The ability to set plan prices in different currencies to support global customers. Kinde supports nearly all currencies, but you can currently only pick one as the default for all plans.
- **Plan** – A packaged offering of features, prices, and terms available for subscription, typically tiered across a group (e.g., Basic, Pro, Enterprise).
- **Plan group** – A collection of related plans, often grouped by customer type or usage level, allowing easier management and comparison.
- **Pricing model** – The structure used to determine how features in a plan are priced. E.g. fixed charge, tiered, per-user, or usage-based pricing. Kinde lets you use multiple pricing models within one plan.
- **Subscription** – The ongoing agreement where a customer pays for access to a SaaS product via a recurring plan.
- **Tiered pricing** – This refers to unit pricing that has different unit costs based on the volume of units purchased. E.g. $10 per unit for 1–10 units, $8 per unit for 11–50 units, $5 per unit over 51 units.
- **Unit price** – Where a price is set per unit of usage, e.g. a seat, or feature. Unit prices can also be applied to metered features, e.g. x per unit. Unit prices can also be tiered, e.g. x per unit up to 10 units, then y for 10+ units.
- **Usage-based** **price** – A billing method where charges vary based on the metered consumption of resources or services (e.g., API calls, storage).
57 changes: 57 additions & 0 deletions src/content/docs/billing/about-billing/kinde-billing-model.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
page_id: e6dde80d-2977-419f-a05a-62ad0a7ac6de
title: The Kinde billing model
sidebar:
order: 2
relatedArticles:
-
---

In the Kinde model, we host everything except the payment processing part of billing. Kinde integrates with a third-party payment gateway (Stripe) for secure payment processing.

This involves a continuous sync between Kinde and Stripe, to ensure that products, prices, subscription information, invoice and payments, are accurate in both systems.

Kinde does not store payment details, such as credit card information. This is exclusively managed by Stripe.

## Billing for B2B and B2C

Kinde supports billing models for both B2B and B2C. Depending which you are setting up, you may need to do a few extra tasks. Most of the setup is common to both. We will call out tasks that are only relevant to one or the other.

- B2B - your customers are companies, organizations, or groups.
- B2C - your customers are individual users.

## Kinde and Stripe

Kinde integrates a single payment gateway (only Stripe for now) to handle the financial and payment management side of things.

Stripe uses the plan data + the customer info to create an agreement in Stripe. The customer is invoiced based on this agreement. Stripe securely stores your customer’s payment details and Kinde never sees credit card or other bank information.

Here’s what the billing feature looks like as a workflow.

[IMAGE PLACEHOLDER]

Stripe is currently the only payment provider supported with Kinde. But we plan to expand to other providers in the near future.

## Multicurrency support

Kinde has customers everywhere and almost every global currency is supported.

## Transaction data and Stripe region

- When you connect to Stripe in Kinde, we create a Stripe US account by default. We do this because Stripe US more widely supports global functionality. You can change the region during the Stripe connection setup flow.
- Regardless of Stripe account region, you can still select any currency for your plans in Kinde, and Stripe will do the hard part of exchange rate conversion, tax calculations, etc.
- Any fees you incur in Stripe for international transactions are your sole responsibility.

<Aside type="warning" title="Financial compliance">

The region in Stripe indicates where the transaction information is held, so if all your business data must reside in one region, make sure you choose a Stripe region to meet your compliance needs.

</Aside>

## Billing and invoice cycles

Default behavior for invoices and charging is as follows. This cannot currently be changed.

- Billing cycles are monthly and are processed on the sign up anniversary
- Invoices include fixed charges in advance, e.g. a monthly subscription is payable each month in advance.
- Invoices include metered charges in arrears, e.g. MAU is metered throughout a month and then charges for the previous month appear on the next invoice.
18 changes: 0 additions & 18 deletions src/content/docs/billing/about-payments-and-plans/index.mdx

This file was deleted.

113 changes: 113 additions & 0 deletions src/content/docs/billing/billing-user-experience/plan-selection.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
page_id: 37d5ae8e-cfd1-4e5d-8333-387b6967ec23
title: Build a pricing table
sidebar:
order: 1
relatedArticles:
- 88e1773a-b681-441f-b4c7-d7d339116867
- e6dde80d-2977-419f-a05a-62ad0a7ac6de
app_context:
-
---
Comment on lines +9 to +11
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Fix empty app_context entry.

The app_context frontmatter has an empty list item. Either remove this block or populate it to match similar pages (e.g., m: billing and s: pricing_tables):

- app_context:
-   -
+ app_context:
+   - m: billing
+   - s: pricing_tables
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
app_context:
-
---
app_context:
- m: billing
- s: pricing_tables
---
🤖 Prompt for AI Agents
In src/content/docs/billing/billing-user-experience/plan-selection.mdx around
lines 9 to 11, the frontmatter contains an empty list item under app_context
which should be fixed. Remove the empty list item or populate the app_context
field with appropriate values similar to other pages, for example, setting m:
billing and s: pricing_tables to ensure consistency and correctness in the
frontmatter metadata.


You can build a pricing table to enable your customers to select plans and go through a payment flow as part signing up to your app or site.

Kinde's pricing table builder can generate a pricing table from published plans, or you can start with a blank one.

You can also add and edit information and content in your preferred languages. You can create as many pricing tables as you want.

![parts of a pricing table](https://imagedelivery.net/skPPZTHzSlcslvHjesZQcQ/7ec898d2-e5ae-4966-66d0-83d8a9f1b500/public)

## Create a pricing table

A pricing table can only have 4 plans. If your plans group

1. Go to **Billing > Pricing tables**.
2. Select **Add pricing table**.
3. Choose an option:
1. **Generate** a pricing table from a plan group - this pre-populates the pricing table with basic details and the plans based on the plan group you select. Up to 4 plans can be included on a pricing table. If your plan group contains more, you may want to create a new pricing table.
2. **Create new** pricing table. Manually build the pricing table and add plans from a plan group. This gives you a blank slate to start in.
4. Select **Next**.
1. **Generated** - select the group and then **Save**.
2. **New** - complete the details in the window and **Save**.

## Edit the pricing table

You can edit a pricing table, but they are not versioned. Whatever content you override, it cannot be reverted or recovered.

You cannot edit a plan price. This is inherited from the plan itself.

## Change what plans show on a pricing table

You can add and remove plans from the pricing table when it is being worked on.

1. Open the pricing table.
2. Scroll to the **Plans** section.
3. To remove a plan:
1. Select the three dots on the plan card and select **Remove from pricing table**.
2. Confirm you want to remove the plan. This removes all custom content you have added, in all languages you have added content in, on the pricing table. The plan is removed.
3. Select **Save**.
4. To add a plan, select **Add plan**.
1. In the window that opens, select an available plan. Only plans from the same plan group are shown.
2. Complete the details in the window for this plan. At minimum, you must enter a **Display name** and the **CTA button** content. This will be displayed in the pricing table.
3. Select **Save**. The plan is added to the pricing table.

## Change the order of plans on a pricing table

The display order of plans from left to right corresponds to the position listed in the **Plans** section of the pricing table.

1. Open the pricing table.
2. Scroll to the **Plans** section.
3. Select the three dots menu on the plan you want to move.
4. Select **Move up** or **Move down**, depending on the plan position.
5. Select **Save**.

## Add a features list to a plan on the pricing table

1. Open the pricing table.
2. Scroll to the **Plans** section.
3. Select the three dots menu on the plan and select **Edit content**.
4. In the top of the window, select the language you want to add features in.
5. Add a **Features list heading**. This sits directly above the list.
6. Add a list of features in the large text **Features list** field. Features will appear in the order they are listed.
7. Select **Save**.

## Highlight a plan on a pricing table

It’s common to want to call out or highlight something about a plan on the pricing table, for example, to highlight which plan is most popular.

1. Open the pricing table.
2. Scroll to the **Plans** section.
3. Select the three dots menu on the plan and select **Edit content.**
4. In the top of the window, select the language you want to add highlight content.
5. Add a **Highlight label** and select **Save**.

## Edit and translate pricing table content

If you want to display pricing tables in multiple languages, you can change add content translations to the plans on the pricing table.

1. Open the pricing table.
2. Scroll to the **Plans** section.
3. Select the three dots menu on the plan and select **Edit content.**
4. In the top of the window, select the language you want to add or edit content for.

![image.png](https://imagedelivery.net/skPPZTHzSlcslvHjesZQcQ/58587ad1-0077-47d7-faca-ea3dd6345d00/public)

5. Enter or edit all the content you want in the chosen language.
6. Select **Save**.

## Make the pricing table live to customers

We recommend only doing this after your plans are finalized and published.

1. Open the pricing table.
2. Select **Make live**.
3. Select **Save**. If a user passes the pricing table code in a URL, they will be able to sign up using it.

## Set pricing table to show as default in register flow

You can set a pricing table to show by default, even if the code key is not passed in the URL during the normal sign up flow.

1. Open the pricing table.
2. Select **Show by default**.
3. Select **Save**. If a user goes through the registration flow without a pricing table code key in the URL, this is the pricing table they will see.
27 changes: 27 additions & 0 deletions src/content/docs/billing/get-started/add-billing-role.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
page_id: 53fd7d58-13ff-407d-99c2-99759c8a52b3
title: Step 1 Add billing role (B2B)
sidebar:
order: 2
relatedArticles:
- d2d64a2b-1fb7-4c18-88bc-2986723724cb
- 7e1082b4-2b78-4e76-92fd-ee25497a4e2b
---

Skip this step if you sell your services to individuals (B2C).

If you are a B2B business, when someone signs up to your service via Kinde auth, an organization is created in your Kinde business. That someone also becomes the account creator, and they need permissions to buy plans and manage payments on behalf of their organization.

Before you start selling to your business customers, create a default billing role to assign to the account creator when they sign up.

1. Go to **Settings > Roles** and select **Add role**. The **Add role** window opens.

![Roles screen for billing owner](https://imagedelivery.net/skPPZTHzSlcslvHjesZQcQ/96415552-a11b-4be3-e644-d9eaa2af6700/public)

2. Name the role, for example, `Billing Admin` , and enter a description and **Key**.
3. Select the **Assign to the creator** option.
4. In the **System permissions** section, ensure the **org:write:billing** system permission is selected.

This role will now be automatically assigned to users who create an organization as part of the authentication flow.

**Next:** [Set the default billing currency](/billing/get-started/default-billing-currency/)
21 changes: 21 additions & 0 deletions src/content/docs/billing/get-started/add-pricing-table.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
page_id: 6babd388-3f74-4e51-9d8e-5fd6f04b20e8
title: Step 6 Create pricing table (optional)
sidebar:
order: 7
relatedArticles:
- 37d5ae8e-cfd1-4e5d-8333-387b6967ec23
app_context:
- m: billing
- s: pricing_tables
---

Kinde lets you create pricing tables based on your plans. The tables can be integrated into the auth flow so that plan selection becomes part of registration. Pricing tables are also used in plan upgrade and downgrade flows. It might look something like this.

![pricing table example](https://imagedelivery.net/skPPZTHzSlcslvHjesZQcQ/8514b968-262d-4aec-24bd-02070669e300/public)

To create your own, go to [Build a pricing table](/billing/billing-user-experience/plan-selection/).

If you have your own screen flows for plan display and selection, you do not have to use Kinde’s pricing tables. Here's how to use your own, and not Kinde's [Link to topic]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Replace placeholder link with actual doc reference.

The text at this line contains a placeholder [Link to topic]. Please replace this with the real document title and URL (for example, a “Custom plan display integration guide” link).

🤖 Prompt for AI Agents
In src/content/docs/billing/get-started/add-pricing-table.mdx at line 19,
replace the placeholder text "[Link to topic]" with the actual document title
and URL that explains how to use custom plan display and selection flows, such
as a "Custom plan display integration guide" link. Ensure the link is properly
formatted and points to the correct internal or external documentation.


**Next:** [Step 7 Set up self-serve portal (optional)](/billing/get-started/self-serve-portal-setup/)
37 changes: 37 additions & 0 deletions src/content/docs/billing/get-started/build-plans.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
page_id: c4526879-5580-4cd0-a881-91b512438fc0
title: Step 4 Build plans
sidebar:
order: 5
relatedArticles:
- fe9fea0c-274c-4d6b-9cc5-eccdbaad85b7
- 88e1773a-b681-441f-b4c7-d7d339116867
app_context:
- m: billing
- s: plans
---

Whether you currently charge for services or are just starting out, building plans is the more complex part of the billing setup process. We recommend you define a strategy before adding plans in Kinde.

- [Learn more about how plans work in Kinde](/billing/manage-plans/about-plans/)
- [Skip to creating plans](/billing/manage-plans/create-plans)

## Develop a plan strategy

If you have not created plans before, here’s a list of tasks to help you prepare. These will give you a strategy for creating the plans you need in Kinde.

1. Are you creating B2B or B2C plans? B2B plan types are for business customers (organizations), and B2C plan types are for individual users. Kinde supports both plan types.
2. Decide how many plans you want and the name of each plan. E.g. `Free, Pro, Plus` or `Solo, Team, Enterprise`.
3. Make a list of each [plan’s features][link to doc]. For each feature, decide on:
- the [pricing model][link to doc] that applies
- limits and inclusions for a feature

Anything you ‘gate’ access to, or put limits on in your product, should be on this list.

Tip: Create a spreadsheet to keep track of everything.

[example spreadsheet for plan planning](https://imagedelivery.net/skPPZTHzSlcslvHjesZQcQ/401ff633-c6c8-45ba-9502-1a29274b4400/public)

4. Identify which features are common across plans. You don’t need to add a new feature every time, you can [re-use features][link to doc] across plans and change the details.

**See [Create plans](/billing/manage-plans/create-plans)** for step-by-step instructions.
Loading
Loading