# Stripe Projects

Stripe Projects lets you provision and manage third-party services such as databases, hosting providers, and authentication tools—and handle their credentials and billing from a single place using the Stripe CLI.
## How does Stripe Projects work?
Stripe Projects organizes the third-party services your app depends on. Using the Stripe CLI, you can provision services from supported providers, store their credentials securely, and pay for them through your Stripe account.
Stripe Projects doesn't affect your Stripe payments, customer records, or subscriptions. Those continue to be managed through your [Stripe Dashboard](https://dashboard.stripe.com/).
---
## Create your first project
You need the Stripe CLI installed before you can use Stripe Projects. For full CLI setup instructions, see the [Stripe Projects docs page](https://docs.stripe.com/projects).
1. Install the Projects plugin by running stripe plugin install projects in your terminal. If the plugin is already installed, run stripe plugin upgrade projects to update it.
1. In your app's directory, run stripe projects init and follow the prompts to name your project.
1. Stripe creates a .projects/ folder in your directory to store project state. The state.json file inside can be committed to version control so teammates can link to the same project.
---
## Add services to a project
After creating a project, you can provision services from supported providers.
1. Run stripe projects catalog to browse available providers and service tiers.
1. Run stripe projects link followed by your provider name to connect your provider account, or create a new one.
1. Run stripe projects add followed by your provider and service name (for example, stripe projects add vercel/project) to provision a service.
1. Run stripe projects env --pull to sync credentials from the Stripe Secret Store to a local .env file for development.
Stripe Projects encrypts your provider credentials and stores them in the Stripe Secret Store. The local .env file and .projects/vault/ folder contain sensitive credential data; don't commit them to version control. Stripe Projects adds both to your .gitignore automatically when you run stripe projects init.
For production environments, set environment variables directly on your hosting provider. The .env file created by Stripe Projects is for local development only.
---
## Set up billing for your project
Stripe Projects charges provider costs to a payment method on your Stripe account. Stripe tokenizes your payment credentials before sharing them with providers—your raw payment details are never sent to third-party providers.
To add or update a payment method:
* Run stripe projects billing add to add a new payment method.
* Run stripe projects billing show to view your current payment method.
To view and control spending:
* Run stripe projects spend to view your current and previous month's spend by provider.
* Run stripe projects billing update and follow the prompts to set a global spend limit or a per-provider spend limit. Per-provider limits take precedence over the global limit when both are set.
---
## Use Stripe Projects across multiple environments
Stripe Projects doesn't support multiple named environments within a single project.
Create a separate project for each environment. For example, my-app-staging and my-app-production, and initialize each in the appropriate directory.
---
## Rotate credentials or upgrade a service tier
* To rotate credentials for a provider resource, run stripe projects rotate followed by the provider and resource name.
* To upgrade to a higher service tier, run stripe projects upgrade and follow the prompts.
---
## Troubleshooting
### Credentials are not appearing in my local environment
Run stripe projects env --pull to re-sync credentials. Run stripe projects status to confirm the service provisioned successfully.
### I accidentally committed my vault or .env file to version control
Rotate your credentials immediately by running stripe projects rotate followed by the affected provider and resource. Then remove the sensitive files from your git history. See [GitHub's documentation on removing sensitive data](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository).
### A provider service failed to provision
Confirm you're authenticated by running stripe login, then retry. Run stripe projects catalog to confirm the service tier is available and stripe projects billing show to verify your payment method is valid.
### My spend limit is blocking a service from provisioning or upgrading
Run stripe projects billing update to increase your global limit. If per-provider limits are set, those take precedence. Update them individually for the affected provider.
### I don't know which services are linked to my project
Run stripe projects list to see all projects on your account, or stripe projects status to see the services linked to your current project.
---
## Related resources
* [Stripe Projects doc](https://docs.stripe.com/projects)s
* [Stripe CLI reference](https://docs.stripe.com/stripe-cli)
* [Projects.dev](https://projects.dev/)
