- Customers Portal
- Subscription
- Choose a GitLab tier
- Subscription seats
- Cloud licensing
- Obtain a subscription
- View your subscription
- Export your license usage
- Renew your subscription
- Upgrade your subscription tier
- Add or change the contacts for your subscription
- Subscription expiry
- Activate a license file or key
- Contact Support
- Troubleshooting
GitLab self-managed subscription
You can install, administer, and maintain your own GitLab instance.
This page covers the details of your GitLab self-managed subscription.
GitLab subscription management requires access to the Customers Portal.
Customers Portal
GitLab provides the Customers Portal where you can manage your subscriptions and your account details.
Customers of resellers do not have access to this portal and should contact their reseller for any changes to their subscription.
Subscription
The cost of a GitLab self-managed subscription is determined by the following:
Choose a GitLab tier
Pricing is tier-based, so you can choose the features that fit your budget. For information on the features available for each tier, see the GitLab self-managed feature comparison.
Subscription seats
A GitLab self-managed subscription uses a hybrid model. You pay for a subscription according to the maximum number of users enabled during the subscription period. For instances that aren’t offline or on a closed network, the maximum number of simultaneous users in the GitLab self-managed installation is checked each quarter.
If an instance is unable to generate a quarterly usage report, the existing true-up model is used. Prorated charges are not possible without a quarterly usage report.
View user totals
You can view users for your license and determine if you’ve gone over your subscription.
- On the top bar, select Menu > Admin.
- On the left menu, select Subscription.
The lists of users are displayed.
Billable users
A billable user counts against the number of subscription seats. Every user is considered a billable user, with the following exceptions:
- Deactivated users and blocked users don’t count as billable users in the current subscription. When they are either deactivated or blocked they release a billable user seat. However, they may count toward overages in the subscribed seat count.
- Users who are pending approval.
- Members with the Guest role on an Ultimate subscription.
- Users without project or group memberships on an Ultimate subscription.
- GitLab-created service accounts:
- Ghost User.
- Bots such as:
Billable users as reported in the /admin
section is updated once per day.
Maximum users
The number of maximum users reflects the highest number of billable users for the current license period.
Users over license
The number of users over license shows how many users are in excess of the number allowed by the license. This number reflects the current license period.
For example, if:
- The license allows 100 users and
- Maximum users is 150,
Then this value would be 50.
If the Maximum users value is less than or equal to 100, then this value is 0.
A trial license always displays zero for Users over license.
If you add more users to your GitLab instance than you are licensed for, payment for the additional users is due at the time of renewal.
If you do not add these users during the renewal process, your license key will not work.
Tips for managing users and subscription seats
Managing the number of users against the number of subscription seats can be a challenge:
- If LDAP integration is enabled, anyone in the configured domain can sign up for a GitLab account. This can result in an unexpected bill at time of renewal.
- If sign-up is enabled on your instance, anyone who can access the instance can sign up for an account.
GitLab has several features which can help you manage the number of users:
- Enable the Require administrator approval for new sign ups option.
- Enable
block_auto_created_users
for new sign-ups via LDAP or OmniAuth. - Enable the User cap option. Available in GitLab 13.7 and later.
- Disable new sign-ups, and instead manage new users manually.
- View a breakdown of users by role in the Users statistics page.
Cloud licensing
Introduced in GitLab 14.1.
Cloud licensing manages licenses for self-managed GitLab subscription plans. Cloud licensing includes:
- Activation: Unlock plan features and activate your self-managed instance by using an activation code.
- License sync: Sync subscription data between your self-managed instance and GitLab.
How cloud licensing works
Add your license
- When you purchase a GitLab self-managed plan, an activation code is generated. This activation code is sent to the email address associated with the Customers Portal account.
- In GitLab, on the top bar, select Menu > Admin.
- On the left sidebar, select Subscription and paste the activation code in the text field.
- Select Add license.
The page displays the details of the subscription.
License sync
Once a day, a job sends license data to the Customers Portal. This information automates activation,
provisioning, co-terms, and renewals. The data is sent securely through an encrypted HTTPS connection
to customers.gitlab.com
on port 443
.
This sync job runs daily around 3AM UTC. If the job fails, it is retried up to 12 times over approximately 17 hours.
The daily job provides only the following information to the Customers Portal:
- Date
- Timestamp
- License key
- Company name (encrypted within license key)
- Licensee name (encrypted within license key)
- Licensee email (encrypted within license key)
- Historical maximum user count
- Billable users count
- GitLab version
- Hostname
- Instance ID
- MD5 hash of license
Example of a cloud licensing sync request:
{
"gitlab_version": "14.1.0-pre",
"timestamp": "2021-06-14T12:00:09Z",
"date": "2021-06-14",
"license_key": "eyJkYXRhIjoiYlR2MFBPSEJPSnNOc1plbGtFRGZ6M
Ex1mWWhyM1Y3NWFOU0Zj\nak1xTmtLZHU1YzJJUWJzZzVxT3FQRU1PXG5
KRzErL2ZNd0JuKzBwZmQ3YnY4\nTkFrTDFsMFZyQi9NcG5DVEdkTXQyNT
R3NlR0ZEc0MjBoTTVna2VORlVcbjAz\nbUgrNGl5N0NuenRhZlljd096R
nUzd2JIWEZ3NzV2V2lqb3FuQ3RYZWppWVFU\neDdESkgwSUIybFJhZlxu
Y2k0Mzl3RWlKYjltMkJoUzExeGIwWjN3Uk90ZGp1\nNXNNT3dtL0Vtc3l
zWVowSHE3ekFILzBjZ2FXSXVQXG5ENWJwcHhOZzRlcFhr\neFg0K3d6Zk
w3cHRQTTJMTGdGb2Vwai90S0VJL0ZleXhxTEhvaUc2NzVIbHRp\nVlRcb
nYzY090bmhsdTMrc0VGZURJQ3VmcXFFUS9ISVBqUXRhL3ZTbW9SeUNh\n
SjdDTkU4YVJnQTlBMEF5OFBiZlxuT0VORWY5WENQVkREdUMvTTVCb25Re
ENv\nK0FrekFEWWJ6VGZLZ1dBRjgzUXhyelJWUVJGTTErWm9TeTQ4XG5V
aWdXV0d4\nQ2graGtoSXQ1eXdTaUFaQzBtZGd2aG1YMnl1KzltcU9WMUx
RWXE4a2VSOHVn\nV3BMN1VFNThcbnMvU3BtTk1JZk5YUHhOSmFlVHZqUz
lXdjlqMVZ6ODFQQnFx\nL1phaTd6MFBpdG5NREFOVnpPK3h4TE5CQ1xub
GtacHNRdUxTZmtWWEZVUnB3\nWTZtWGdhWE5GdXhURjFndWhyVDRlTE92
bTR3bW1ac0pCQnBkVWJIRGNyXG5z\nUjVsTWJxZEVUTXJNRXNDdUlWVlZ
CTnJZVTA2M2dHblc4eVNXZTc0enFUcW1V\nNDBrMUZpN3RTdzBaZjBcbm
16UGNYV0RoelpkVk02cWR1dTl0Q1VqU05tWWlU\nOXlwRGZFaEhXZWhjb
m50RzA5UWVjWEM5em52Y1BjU1xueFU0MDMvVml5R3du\nQXNMTHkyajN5
b3hhTkJUSWpWQ1BMUjdGeThRSEVnNGdBd0x6RkRHVWg1M0Qz\nMHFRXG5
5eWtXdHNHN3VBREdCNmhPODFJanNSZnEreDhyb2ZpVU5JVXo4NCtD\nem
Z1V1Q0K1l1VndPTngyc1l0TU5cbi9WTzlaaVdPMFhtMkZzM2g1NlVXcGI
y\nSUQzRnRlbW5vZHdLOWU4L0tiYWRESVRPQmgzQnIxbDNTS2tHN1xuQ3
hpc29D\nNGh4UW5mUmJFSmVoQkh6eHV1dkY5aG11SUsyVmVDQm1zTXZCY
nZQNGdDbHZL\ndUExWnBEREpDXG41eEhEclFUd3E1clRYS2VuTjhkd3BU
SnVLQXgvUjlQVGpy\ncHJLNEIzdGNMK0xIN2JKcmhDOTlabnAvLzZcblZ
HbXk5SzJSZERIcXp3U2c3\nQjFwSmFPcFBFUHhOUFJxOUtnY2hVR0xWMF
d0Rk9vPVxuIiwia2V5IjoiUURM\nNU5paUdoRlVwZzkwNC9lQWg5bFY0Q
3pkc2tSQjBDeXJUbG1ZNDE2eEpPUzdM\nVXkrYXRhTFdpb0lTXG5sTWlR
WEU3MVY4djFJaENnZHJGTzJsTUpHbUR5VHY0\ndWlSc1FobXZVWEhpL3h
vb1J4bW9XbzlxK2Z1OGFcblB6anp1TExhTEdUQVdJ\nUDA5Z28zY3JCcz
ZGOEVLV28xVzRGWWtUUVh2TzM0STlOSjVHR1RUeXkzVkRB\nc1xubUdRe
jA2eCtNNkFBM1VxTUJLZXRMUXRuNUN2R3l3T1VkbUx0eXZNQ3JX\nSWVQ
TElrZkJwZHhPOUN5Z1dCXG44UkpBdjRSQ1dkMlFhWVdKVmxUMllRTXc5\
nL29LL2hFNWRQZ1pLdWEyVVZNRWMwRkNlZzg5UFZrQS9mdDVcbmlETWlh
YUZz\nakRVTUl5SjZSQjlHT2ovZUdTRTU5NVBBMExKcFFiVzFvZz09XG4
iLCJpdiI6\nImRGSjl0YXlZWit2OGlzbGgyS2ZxYWc9PVxuIn0=\n",
"max_historical_user_count": 75,
"billable_users_count": 75,
"hostname": "gitlab.example.com",
"instance_id": "9367590b-82ad-48cb-9da7-938134c29088",
"license_md5": "002f02470fe45ef6a333a4282aca6222"
}
Sync subscription details
You can manually sync your subscription details at any time.
- On the top bar, select Menu > Admin.
- On the left sidebar, select Subscription.
- In the Subscription details section, select Sync subscription details.
A job is queued. When the job finishes, the subscription details are updated.
Troubleshooting cloud licensing sync
If the sync job is not working, ensure you allow network traffic from your GitLab instance
to IP address 104.18.26.123:443
(customers.gitlab.com
).
Obtain a subscription
To subscribe to GitLab through a GitLab self-managed installation:
- Go to the Customers Portal and purchase a GitLab self-managed plan.
- After purchase, an activation code is sent to the email address associated with the Customers Portal account. You must add this code to your GitLab instance.
View your subscription
If you are an administrator, you can view the status of your subscription:
- On the top bar, select Menu > Admin.
- On the left sidebar, select Subscription.
The Subscription page includes the following details:
- Licensee
- Plan
- When it was uploaded, started, and when it expires
It also displays the following information:
Field | Description |
---|---|
Users in License | The number of users you’ve paid for in the current license loaded on the system. The number does not change unless you add seats during your current subscription period. |
Billable users | The daily count of billable users on your system. The count may change as you block or add users to your instance. |
Maximum users | The highest number of billable users on your system during the term of the loaded license. |
Users over license | Calculated as Maximum users - Users in License for the current license term. This number incurs a retroactive charge that must be paid before renewal. |
Export your license usage
Introduced in GitLab 14.6.
If you are an administrator, you can export your license usage into a CSV:
- On the top bar, select Menu > Admin.
- On the left sidebar, select Subscription.
- In the top right, select Export license usage file.
This file contains the information GitLab uses to manually process quarterly reconciliations or renewals. If your instance is firewalled or in an offline environment, you must provide GitLab with this information.
The License Usage CSV includes the following details:
- License key
- License start date
- License end date
- Compa