{
 "id": "gitlab",
 "name": "GitLab",
 "category": "developer_tools",
 "website": "https://about.gitlab.com",
 "domains": [
  "gitlab.com"
 ],
 "summary": "A billing account manager turns off auto-renewal before the expiration date: Customers Portal, Subscription actions, Cancel subscription. Reseller and AWS or Google Cloud marketplace subscriptions go through the reseller. Seats drop only at renewal, and overage seats are billed. Self-Managed instances turn read-only at expiry.",
 "routes": [
  {
   "channel": "direct_web",
   "label": "Customers Portal",
   "applies_to": "Premium and Ultimate subscriptions (GitLab.com and Self-Managed) bought directly from GitLab and managed in the Customers Portal",
   "who": "A billing account manager on the Customers Portal billing account",
   "method": "self_serve",
   "start_url": "https://customers.gitlab.com/customers/sign_in",
   "steps": [
    {
     "do": "Sign in to the Customers Portal as a billing account manager; you land on the Subscriptions & purchases page",
     "expect": "Auto-renews on DATE on the subscription card"
    },
    {
     "do": "On that subscription's card, open Subscription actions (the vertical ellipsis menu) and select Cancel subscription",
     "expect": null
    },
    {
     "do": "Select a reason for canceling, optionally add a note under Would you like to add anything?, then select Cancel subscription",
     "expect": null
    },
    {
     "do": "To pay less instead, renew for fewer seats: seats can only be reduced at renewal, and the new count must cover your current billable users",
     "expect": null
    }
   ],
   "confirm_by": "The subscription card shows Expires on DATE instead of Auto-renews on DATE",
   "effective": "On the expiration date (an auto-renewing subscription would renew at midnight UTC that day). GitLab.com: paid features stop and free features stay. Self-Managed: the license expires at the start of its expiration date (00:00 server time), and the instance becomes read-only",
   "notice": "Cancel before the expiration date; GitLab emails renewal details 15 days before an automatic renewal",
   "refund": "To request a refund, contact your Account Contact, or without one, submit a request through GitLab's support portal to reach the Billing team; eligibility is not described on the pages read",
   "fees": "Users above your subscription's seat count must be paid for before or at renewal, based on the maximum number of users during the billing period",
   "source_ids": [
    "s1",
    "s2",
    "s3",
    "s4",
    "s5",
    "s6",
    "s7",
    "s8",
    "s9",
    "s10",
    "s33",
    "s34",
    "s35",
    "s36",
    "s37",
    "s38",
    "s39",
    "s40",
    "s41",
    "s42"
   ]
  },
  {
   "channel": "reseller_or_partner",
   "label": "Reseller or AWS/Google Cloud Marketplace",
   "applies_to": "Subscriptions bought through an authorized GitLab reseller, including the Google Cloud (GCP) and AWS marketplaces",
   "who": "The customer, through the reseller or marketplace it bought from",
   "method": "contact_sales",
   "start_url": null,
   "steps": [
    {
     "do": "Make any change to the subscription, including ending it, through the reseller you bought from (the GCP and AWS marketplaces count as resellers)",
     "expect": null
    },
    {
     "do": "Use GitLab's Customers Portal only to view the subscription, link it to your group or download the license, and manage contact information",
     "expect": null
    }
   ],
   "confirm_by": null,
   "effective": null,
   "notice": null,
   "refund": null,
   "fees": "Invoices come from the reseller, not GitLab",
   "source_ids": [
    "s11",
    "s12",
    "s13"
   ]
  }
 ],
 "pay_less": [
  {
   "type": "free_plan",
   "what": "GitLab Free: 5 users per top-level group, 10 GiB adjustable storage and 400 compute minutes per month, with no credit card required",
   "evidence": "documented",
   "source_ids": [
    "s14",
    "s15",
    "s16"
   ]
  },
  {
   "type": "seat_reduction",
   "what": "Renew for fewer seats (seats can only be reduced at renewal). Before renewal, a group Owner can remove billable users on GitLab.com: Settings, Billing, See usage, Remove user; overages are charged on the maximum number of users in the period; the renewal seat count must be at least the current number of billable users",
   "evidence": "documented",
   "source_ids": [
    "s5",
    "s6",
    "s17",
    "s18",
    "s19",
    "s20",
    "s41"
   ]
  },
  {
   "type": "discount_program",
   "what": "Qualifying open source projects, educational institutions and startups get free Ultimate licenses with 50K compute minutes a month",
   "evidence": "documented",
   "source_ids": [
    "s21"
   ]
  }
 ],
 "export": [
  {
   "data": "Each project: project and wiki repositories, issues, merge requests, labels, milestones, snippets, releases and design files",
   "how": "In the project, open Settings, then General, expand Advanced and select Export project; download it from the email link or with Download export on the same settings page",
   "format": "NDJSON inside a .tar.gz file",
   "limits": "Needs the Maintainer or Owner role for the project; export files are deleted every 24 hours; CI/CD variables and package and container registry images are not exported",
   "source_ids": [
    "s22",
    "s23",
    "s24",
    "s25",
    "s26",
    "s27",
    "s28",
    "s29"
   ]
  }
 ],
 "after_cancel": {
  "access_until": "The subscription's expiration date (GitLab.com keeps free features after that). Self-Managed: until the license expires at 00:00 server time on its expiration date",
  "data_kept": "GitLab.com: paid features stop at expiry, and you can keep using free features. Self-Managed: the instance becomes read-only; renewing restores it, but after 30 days expired you must buy a new subscription",
  "you_lose": [
   "GitLab.com: paid features at expiry (free features remain)",
   "Self-Managed: Git pushes and issue creation are locked and the instance becomes read-only",
   "Self-Managed: after 30 days expired, renewing is no longer possible; you must purchase a new subscription"
  ]
 },
 "agent_notes": {
  "sign_in_needed": true,
  "phone_or_chat_only": false,
  "retention_step": null,
  "tips": [
   "The subscription card reads Auto-renews on DATE while renewal is on, and Expires on DATE once cancelled",
   "Auto-renewing subscriptions renew at midnight UTC on the expiration date; GitLab emails renewal details 15 days before",
   "Seats can only be reduced at renewal: renew for fewer seats",
   "Users above the seat count are billed at or before renewal on the period's maximum user count, so remove unused users early",
   "Reseller and AWS or Google Cloud marketplace subscriptions can't be changed in the Customers Portal: go through the reseller",
   "Self-Managed administrators see an expiry banner 15 days before the license expires",
   "Export projects before the subscription ends; export files are deleted within 24 hours"
  ]
 },
 "sources": [
  {
   "id": "s1",
   "url": "https://docs.gitlab.com/subscriptions/billing_account/",
   "title": "Manage billing account",
   "publisher": "vendor",
   "quote": "Customers Portal is your comprehensive self-service hub for managing GitLab subscriptions and billing.",
   "supports": "where subscriptions are managed"
  },
  {
   "id": "s2",
   "url": "https://docs.gitlab.com/subscriptions/billing_account/",
   "title": "Manage billing account",
   "publisher": "vendor",
   "quote": "Billing account manager: Has access to view and edit subscriptions, payment methods, and billing account settings.",
   "supports": "who can manage a subscription"
  },
  {
   "id": "s3",
   "url": "https://docs.gitlab.com/administration/license_file/",
   "title": "GitLab Docs: license file or key (Self-Managed)",
   "publisher": "vendor",
   "quote": "When your license expires, GitLab locks features, like Git pushes and issue creation. Your instance becomes read-only, and an expiration message displays to all administrators.",
   "supports": "what happens when a Self-Managed license expires"
  },
  {
   "id": "s4",
   "url": "https://docs.gitlab.com/administration/license_file/",
   "title": "GitLab Docs: license file or key (Self-Managed)",
   "publisher": "vendor",
   "quote": "Licenses expire at the start of the expiration date, 00:00 server time.",
   "supports": "when a Self-Managed license ends"
  },
  {
   "id": "s5",
   "url": "https://docs.gitlab.com/subscriptions/manage_seats/",
   "title": "Manage seats",
   "publisher": "vendor",
   "quote": "You can reduce seats only during subscription renewal. If you want to reduce the number of seats in your subscription, you can renew for fewer seats.",
   "supports": "seats drop only at renewal"
  },
  {
   "id": "s6",
   "url": "https://docs.gitlab.com/subscriptions/manage_seats/",
   "title": "Manage seats",
   "publisher": "vendor",
   "quote": "When you exceed your subscription limit, you must pay for the additional users before or at the time of renewal.",
   "supports": "overage seats are billed at or before renewal"
  },
  {
   "id": "s7",
   "url": "https://docs.gitlab.com/subscriptions/manage_seats/",
   "title": "Manage seats",
   "publisher": "vendor",
   "quote": "The cost is based on the maximum number of users during the billing period, not the current number of users.",
   "supports": "how overages are counted"
  },
  {
   "id": "s8",
   "url": "https://about.gitlab.com/pricing/licensing-faq/",
   "title": "GitLab licensing and subscription FAQ",
   "publisher": "vendor",
   "quote": "If you have an Account Contact, please contact them to begin the process of requesting a refund.",
   "supports": "how to ask for a refund"
  },
  {
   "id": "s9",
   "url": "https://about.gitlab.com/pricing/",
   "title": "GitLab pricing",
   "publisher": "vendor",
   "quote": "If you choose not to renew your GitLab subscription, your key will no longer work and GitLab Enterprise Edition will not be functional anymore.",
   "supports": "what not renewing does"
  },
  {
   "id": "s10",
   "url": "https://about.gitlab.com/pricing/licensing-faq/",
   "title": "GitLab licensing and subscription FAQ",
   "publisher": "vendor",
   "quote": "You can reduce seats only during subscription renewal.",
   "supports": "seats drop only at renewal (FAQ)"
  },
  {
   "id": "s11",
   "url": "https://docs.gitlab.com/subscriptions/billing_account/",
   "title": "Manage billing account",
   "publisher": "vendor",
   "quote": "If you purchased a subscription through an authorized reseller (including GCP and AWS marketplaces), you have access to Customers Portal to:",
   "supports": "the reseller and marketplace route"
  },
  {
   "id": "s12",
   "url": "https://docs.gitlab.com/subscriptions/billing_account/",
   "title": "Manage billing account",
   "publisher": "vendor",
   "quote": "Other changes and requests must be done through the reseller, including:",
   "supports": "changes go through the reseller"
  },
  {
   "id": "s13",
   "url": "https://docs.gitlab.com/subscriptions/billing_account/",
   "title": "Manage billing account",
   "publisher": "vendor",
   "quote": "Requests for invoices, because those are issued by the reseller, not GitLab.",
   "supports": "the reseller bills you"
  },
  {
   "id": "s14",
   "url": "https://about.gitlab.com/pricing/",
   "title": "GitLab pricing",
   "publisher": "vendor",
   "quote": "5 users per top-level group",
   "supports": "the Free tier user limit"
  },
  {
   "id": "s15",
   "url": "https://about.gitlab.com/pricing/",
   "title": "GitLab pricing",
   "publisher": "vendor",
   "quote": "10 GiB adjustable storage",
   "supports": "the Free tier storage"
  },
  {
   "id": "s16",
   "url": "https://about.gitlab.com/pricing/",
   "title": "GitLab pricing",
   "publisher": "vendor",
   "quote": "400 compute minutes per month",
   "supports": "the Free tier compute minutes"
  },
  {
   "id": "s17",
   "url": "https://docs.gitlab.com/subscriptions/manage_seats/",
   "title": "Manage seats",
   "publisher": "vendor",
   "quote": "You must have the Owner role for the group.",
   "supports": "who can remove billable users"
  },
  {
   "id": "s18",
   "url": "https://docs.gitlab.com/subscriptions/manage_seats/",
   "title": "Manage seats",
   "publisher": "vendor",
   "quote": "In the left sidebar, select Settings > Billing.",
   "supports": "where seats are managed"
  },
  {
   "id": "s19",
   "url": "https://docs.gitlab.com/subscriptions/manage_seats/",
   "title": "Manage seats",
   "publisher": "vendor",
   "quote": "In the Seats currently in use section, select See usage.",
   "supports": "the seat usage list"
  },
  {
   "id": "s20",
   "url": "https://docs.gitlab.com/subscriptions/manage_seats/",
   "title": "Manage seats",
   "publisher": "vendor",
   "quote": "Re-type the username and select Remove user.",
   "supports": "removing a billable user"
  },
  {
   "id": "s21",
   "url": "https://about.gitlab.com/pricing/",
   "title": "GitLab pricing",
   "publisher": "vendor",
   "quote": "We provide free Ultimate licenses, along with 50K compute minutes/month, to qualifying open source projects, educational institutions, and startups.",
   "supports": "community programs"
  },
  {
   "id": "s22",
   "url": "https://docs.gitlab.com/user/project/settings/import_export/",
   "title": "GitLab Docs: project file export",
   "publisher": "vendor",
   "quote": "In the left sidebar, select Settings > General.",
   "supports": "where the project export starts"
  },
  {
   "id": "s23",
   "url": "https://docs.gitlab.com/user/project/settings/import_export/",
   "title": "GitLab Docs: project file export",
   "publisher": "vendor",
   "quote": "Select Export project.",
   "supports": "the export button"
  },
  {
   "id": "s24",
   "url": "https://docs.gitlab.com/user/project/settings/import_export/",
   "title": "GitLab Docs: project file export",
   "publisher": "vendor",
   "quote": "Maintainer or Owner role for the project",
   "supports": "who can export"
  },
  {
   "id": "s25",
   "url": "https://docs.gitlab.com/user/project/settings/import_export/",
   "title": "GitLab Docs: project file export",
   "publisher": "vendor",
   "quote": "Project file exports are in NDJSON format.",
   "supports": "the export format"
  },
  {
   "id": "s26",
   "url": "https://docs.gitlab.com/user/project/settings/import_export/",
   "title": "GitLab Docs: project file export",
   "publisher": "vendor",
   "quote": "Every 24 hours, a worker deletes these export files.",
   "supports": "how long export files last"
  },
  {
   "id": "s27",
   "url": "https://docs.gitlab.com/user/project/settings/import_export/",
   "title": "GitLab Docs: project file export",
   "publisher": "vendor",
   "quote": "Project and wiki repositories",
   "supports": "what the export includes"
  },
  {
   "id": "s28",
   "url": "https://docs.gitlab.com/user/project/settings/import_export/",
   "title": "GitLab Docs: project file export",
   "publisher": "vendor",
   "quote": "Package and container registry images",
   "supports": "what the export leaves out"
  },
  {
   "id": "s29",
   "url": "https://docs.gitlab.com/user/project/settings/import_export/",
   "title": "GitLab Docs: project file export",
   "publisher": "vendor",
   "quote": "Download export",
   "supports": "downloading the export"
  },
  {
   "id": "s30",
   "url": "https://docs.gitlab.com/administration/license_file/",
   "title": "GitLab Docs: license file or key (Self-Managed)",
   "publisher": "vendor",
   "quote": "If the license has been expired for more than 30 days, you must purchase a new subscription to resume functionality.",
   "supports": "the 30-day renewal window after expiry"
  },
  {
   "id": "s31",
   "url": "https://docs.gitlab.com/administration/license_file/",
   "title": "GitLab Docs: license file or key (Self-Managed)",
   "publisher": "vendor",
   "quote": "Fifteen days before the license expires, a notification banner with the upcoming expiration date displays to GitLab administrators.",
   "supports": "the expiry warning"
  },
  {
   "id": "s32",
   "url": "https://docs.gitlab.com/administration/license_file/",
   "title": "GitLab Docs: license file or key (Self-Managed)",
   "publisher": "vendor",
   "quote": "To remove the read-only state and resume functionality, renew your subscription.",
   "supports": "renewing restores a read-only instance"
  },
  {
   "id": "s33",
   "url": "https://docs.gitlab.com/subscriptions/manage_subscription/",
   "title": "Manage subscription",
   "publisher": "vendor",
   "quote": "Sign in to the Customers Portal. You are taken to the Subscriptions & purchases page.",
   "supports": "where the cancel flow starts"
  },
  {
   "id": "s34",
   "url": "https://docs.gitlab.com/subscriptions/manage_subscription/",
   "title": "Manage subscription",
   "publisher": "vendor",
   "quote": "If the card displays Auto-renews on DATE, your subscription is set to automatically renew. To disable automatic renewal:",
   "supports": "the auto-renew status on the subscription card"
  },
  {
   "id": "s35",
   "url": "https://docs.gitlab.com/subscriptions/manage_subscription/",
   "title": "Manage subscription",
   "publisher": "vendor",
   "quote": "In Subscription actions (ellipsis_v), select Cancel subscription.",
   "supports": "the cancel step"
  },
  {
   "id": "s36",
   "url": "https://docs.gitlab.com/subscriptions/manage_subscription/",
   "title": "Manage subscription",
   "publisher": "vendor",
   "quote": "Select a reason for canceling.",
   "supports": "the reason step"
  },
  {
   "id": "s37",
   "url": "https://docs.gitlab.com/subscriptions/manage_subscription/",
   "title": "Manage subscription",
   "publisher": "vendor",
   "quote": "If the card displays Expires on DATE, your subscription is not set to automatically renew.",
   "supports": "how to confirm auto-renewal is off"
  },
  {
   "id": "s38",
   "url": "https://docs.gitlab.com/subscriptions/manage_subscription/",
   "title": "Manage subscription",
   "publisher": "vendor",
   "quote": "When a subscription is set to auto-renew, it renews automatically at midnight UTC on the expiration date without a gap in available service.",
   "supports": "when a renewal happens"
  },
  {
   "id": "s39",
   "url": "https://docs.gitlab.com/subscriptions/manage_subscription/",
   "title": "Manage subscription",
   "publisher": "vendor",
   "quote": "15 days before a subscription automatically renews, an email is sent with information about the renewal.",
   "supports": "the renewal email"
  },
  {
   "id": "s40",
   "url": "https://docs.gitlab.com/subscriptions/manage_subscription/",
   "title": "Manage subscription",
   "publisher": "vendor",
   "quote": "When your subscription expires, paid features are no longer available. However, you can continue to use free features.",
   "supports": "what happens at expiry"
  },
  {
   "id": "s41",
   "url": "https://docs.gitlab.com/subscriptions/manage_subscription/",
   "title": "Manage subscription",
   "publisher": "vendor",
   "quote": "Subscription renewals with fewer seats must have or exceed the current number of billable users.",
   "supports": "the seat floor at renewal"
  },
  {
   "id": "s42",
   "url": "https://about.gitlab.com/pricing/licensing-faq/",
   "title": "GitLab licensing and subscription FAQ",
   "publisher": "vendor",
   "quote": "If you do not have an Contact, please submit a request via our support portal to get in contact with our Billing team.",
   "supports": "how to ask for a refund without an Account Contact"
  }
 ],
 "verification": {
  "level": "partial",
  "checked_on": "2026-09-29",
  "by": "stackcut-research",
  "unverified": [
   "The GitLab Subscription Agreement (handbook.gitlab.com/handbook/legal/subscription-agreement/) couldn't be read in full, so its auto-renewal, notice-of-non-renewal and refund terms aren't confirmed",
   "What happens to GitLab.com data above Free limits (such as storage or users beyond 5) after a paid subscription expires is not stated",
   "How to end a sales-led contract with a GitLab Account Contact is not documented on the pages read"
  ],
  "review": {
   "by": "stackcut-review",
   "on": "2026-09-29",
   "result": "partial",
   "notes": [
    "Cancel steps from the now-readable Manage subscription page: Customers Portal, Subscription actions, Cancel subscription, reason, confirm",
    "confirm_by (Expires on DATE), renewal at midnight UTC on the expiration date, 15-day renewal email, GitLab.com keeps free features after expiry",
    "Seat reduction: the renewal count must cover current billable users; refund requests without an Account Contact go through the support portal",
    "Still unconfirmed: the Subscription Agreement's renewal, notice and refund terms (the Agreement couldn't be read in full)"
   ]
  }
 },
 "delete_account": {
  "url": "https://gitlab.com/-/profile/account",
  "difficulty": "easy",
  "source": "JustDeleteMe (MIT), https://github.com/jdm-contrib/jdm"
 },
 "stackcut": {
  "vendor_id": "gitlab",
  "name": "GitLab",
  "recipes": [
   {
    "id": "replace-gitlab",
    "title": "Git hosting",
    "best_year_one_net": 250
   }
  ]
 },
 "page": "https://stackcut.io/cancel/gitlab",
 "json": "https://stackcut.io/exits/gitlab.json",
 "evidence": {
  "packet_revision": "80a87876a4761dc829eafa83a05fd24122d54b0d65708ab8a3672960ce675d02",
  "docs_checked_on": "2026-09-29",
  "last_observed_success_on": null,
  "verification": "partial",
  "freshness": {
   "as_of": "2026-10-09",
   "status": "current",
   "checked_on": "2026-09-29",
   "age_days": 10,
   "stale_after_days": 30,
   "next_check_on": "2026-10-29"
  },
  "routes": [
   {
    "route_id": "gitlab--direct-web--r1",
    "channel": "direct_web",
    "checked_on": "2026-09-29",
    "freshness": {
     "as_of": "2026-10-09",
     "status": "current",
     "checked_on": "2026-09-29",
     "age_days": 10,
     "stale_after_days": 30,
     "next_check_on": "2026-10-29"
    }
   },
   {
    "route_id": "gitlab--reseller-or-partner--r2",
    "channel": "reseller_or_partner",
    "checked_on": "2026-09-29",
    "freshness": {
     "as_of": "2026-10-09",
     "status": "current",
     "checked_on": "2026-09-29",
     "age_days": 10,
     "stale_after_days": 30,
     "next_check_on": "2026-10-29"
    }
   }
  ]
 },
 "license": "CC-BY-4.0",
 "credit": "Stackcut Exits (https://stackcut.io/cancel), CC BY 4.0"
}
