diff --git a/doc/subscriptions/manage_subscription.md b/doc/subscriptions/manage_subscription.md index 91f7ca322fad893f8a0e0c54216ea4a6422d52ac..02a8de71411649d81f1f815d64f227b4bc042cb9 100644 --- a/doc/subscriptions/manage_subscription.md +++ b/doc/subscriptions/manage_subscription.md @@ -101,7 +101,7 @@ The following information is displayed: | **Seats in subscription** | If this is a paid plan, represents the number of seats you've bought for this group. | | **Seats currently in use** | Number of seats in use. Select **See usage** to see a list of the users using these seats. | | **Maximum seats used** | Highest number of seats you've used. | -| **Seats owed** | **Max seats used** minus **Seats in subscription**. | +| **Seats owed** | **Max seats used** - **Seats in subscription**. | | **Subscription start date** | Date your subscription started. | | **Subscription end date** | Date your current subscription ends. | @@ -282,7 +282,7 @@ To manually renew your subscription: [overage](quarterly_reconciliation.md) is due when you renew. In the **Users over license** text box, enter the number of - [users over subscription](manage_users_and_seats.md#users-over-subscription) for the user overage incurred. + [users over subscription](manage_users_and_seats.md#users-over-subscription-limit) for the user overage incurred. 1. Optional. If renewing add-on products, review and update the desired quantity. You can also remove products. 1. Optional. If upgrading the subscription tier, select the desired option. 1. Review your renewal details and select **Renew subscription** to complete the diff --git a/doc/subscriptions/manage_users_and_seats.md b/doc/subscriptions/manage_users_and_seats.md index ddbb60b15941b0a8d4c46047b053c61288633352..de8f541ee38283f92f97ea92f614c509a4fc7c38 100644 --- a/doc/subscriptions/manage_users_and_seats.md +++ b/doc/subscriptions/manage_users_and_seats.md @@ -64,6 +64,41 @@ A user is not counted as a billable user if: - [Bot users for groups](../user/group/settings/group_access_tokens.md#bot-users-for-groups). - Other [internal users](../administration/internal_users.md). +## Users over subscription limit + +When the number of billable users in your GitLab subscription exceeds the number of seats you've purchased, +you have users over subscription (or seats owed). + +This can happen, for example, when new users are added to your instance or group, +or existing users are promoted to billable roles. + +The number of users over subscription is calculated as: +maximum users during billing period - purchased seats in your subscription. + +For example, you purchase a subscription for 10 seats, and during the billing period the number of users varies as follows: + +| Event | Billable users | Maximum users | +|:--------------------------------------------------|:----------------|:--------------| +| Ten users occupy all 10 seats. | 10 | 10 | +| Two new users join. | 12 | 12 | +| Three users leave and their accounts are blocked. | 9 | 12 | +| Four new users join. | 13 | 13 | + +In this case, you have 3 users over subscription (13 maximum users - 10 purchased seats). + +When you exceed your subscription limit, you must pay for the additional users +[before or at the time of renewal](quarterly_reconciliation.md). +The cost is based on the maximum number of users during the billing period, not the current number of users. + +On GitLab Self-Managed, for trial licenses the users over subscription value is always zero. +If you do not pay for seats owed before or at the time of renewal, your license key doesn't work. + +To avoid unexpected overage charge, you can: + +- [Turn on restricted access](../user/group/manage.md#turn-on-restricted-access) to prevent adding users when no seats remain. +- [Require administrator approval for new sign-ups](../administration/settings/sign_up_restrictions.md#require-administrator-approval-for-new-sign-ups). +- Buy more seats proactively when approaching your limit. + ## Free Guest users {{< details >}} @@ -157,33 +192,6 @@ The number of maximum users reflects the highest number of billable users on you You can view and export your [license usage](../administration/license_usage.md). -### Users over subscription - -A GitLab subscription is valid for a specific number of seats. -The number of users over subscription shows how many users are in excess of the -number allowed by the subscription, in the current subscription period. - -Calculated as `Maximum users` - `Users in subscription` for the current license -term. For example, you purchase a subscription for 10 users. - -| Event | Billable users | Maximum users | -|:---------------------------------------------------|:-----------------|:--------------| -| Ten users occupy all 10 seats. | 10 | 10 | -| Two new users join. | 12 | 12 | -| Three users leave and their accounts are blocked. | 9 | 12 | -| Four new users join. | 13 | 13 | - -Users over subscription = 13 - 10 (Maximum users - users in license) - -The users over subscription value is always zero for trial license. - -If users over subscription value is above zero, then you have more users in your -GitLab instance than you are licensed for. You must pay for the additional users -[before or at the time of renewal](quarterly_reconciliation.md). This is -called the "true up" process. If you do not do this, your license key does not work. - -To view the number of users over subscription, go to the **Admin** area. - ### View users View the lists of users in your instance: @@ -290,25 +298,6 @@ as long as the total number of users at any given time doesn't exceed the number If you add more users and exceed the number of purchased seats, you incur an overage, which will be included in your next [invoice](quarterly_reconciliation.md). -### Seats owed - -If the number of billable users exceeds the number of **seats in subscription**, known -as the number of **seats owed**, you must pay for the excess number of users. - -For example, if you purchase a subscription for 10 users: - -| Event | Billable members | Maximum users | -|:---------------------------------------------------|:-----------------|:--------------| -| Ten users occupy all 10 seats. | 10 | 10 | -| Two new users join. | 12 | 12 | -| Three users leave and their accounts are removed. | 9 | 12 | - -Seats owed = 12 - 10 (Maximum users - users in subscription) - -To prevent charges from seats owed, you can -[turn on restricted access](../user/group/manage.md#turn-on-restricted-access). -This setting restricts groups from adding new billable users when there are no seats left in the subscription. - ### Seat usage alerts {{< history >}} diff --git a/doc/subscriptions/quarterly_reconciliation.md b/doc/subscriptions/quarterly_reconciliation.md index 40941b3144f306ff3c2c3fdbb42b8959681831e5..93c3d1478a076fb8d8ec4b65c3fd06240c8ba238 100644 --- a/doc/subscriptions/quarterly_reconciliation.md +++ b/doc/subscriptions/quarterly_reconciliation.md @@ -87,7 +87,7 @@ Alternatively, you can reconcile any overages by [purchasing additional seats](m At the end of each subscription quarter, GitLab notifies you about overages. The date you're notified about the overage is not the same as the date you are billed. -1. An email that communicates the [overage seat quantity](manage_users_and_seats.md#seats-owed) +1. An email that communicates the [overage seat quantity](manage_users_and_seats.md#users-over-subscription-limit) and expected invoice amount is sent: - On GitLab.com: On the reconciliation date, to group owners and billing account managers. diff --git a/ee/app/assets/javascripts/usage_quotas/seats/constants.js b/ee/app/assets/javascripts/usage_quotas/seats/constants.js index be9a132e6feb46b97d49b893a228ef9459cd750b..81ac58be93e1d1f45d0b386efd434a19feaf34ee 100644 --- a/ee/app/assets/javascripts/usage_quotas/seats/constants.js +++ b/ee/app/assets/javascripts/usage_quotas/seats/constants.js @@ -108,7 +108,7 @@ export const seatsInUseLink = helpPagePath('subscriptions/manage_users_and_seats anchor: 'gitlabcom-billing-and-usage', }); export const seatsOwedLink = helpPagePath('subscriptions/manage_users_and_seats', { - anchor: 'seats-owed', + anchor: 'users-over-subscription-limit', }); export const seatsUsedLink = helpPagePath('subscriptions/manage_subscription', { anchor: 'view-subscription', diff --git a/ee/app/views/license_mailer/approaching_active_user_count_limit.html.haml b/ee/app/views/license_mailer/approaching_active_user_count_limit.html.haml index a29c2e210faf396a7a4f5b8620ed664ee4a07e6b..e70c9ccffe548648d139c7a395e33be966d6cce8 100644 --- a/ee/app/views/license_mailer/approaching_active_user_count_limit.html.haml +++ b/ee/app/views/license_mailer/approaching_active_user_count_limit.html.haml @@ -1,4 +1,4 @@ -- users_over_subscription_link = link_to("users over subscription", help_page_url('subscriptions/manage_users_and_seats.md', anchor: 'users-over-subscription')) +- users_over_subscription_link = link_to("users over subscription", help_page_url('subscriptions/manage_users_and_seats.md', anchor: 'users-over-subscription-limit')) - self_managed_subscriptions_doc_link = link_to("self-managed subscriptions", help_page_url('subscriptions/manage_users_and_seats.md', anchor: 'self-managed-billing-and-usage')) - subscriptions_doc_link = link_to("our documentation", help_page_url('subscriptions/_index.md'))