Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
Overview
Versioning
Changelog
Upgrade your API version
Upgrade your SDK version
Essentials
SDKs
API
Testing
Stripe CLI
    Overview
    Install the CLI
    Use the CLI
    Stripe Projects
      Provider intake
    Enable autocompletion
    CLI keys
    Trigger events
    Upgrade the CLI
Sample projects
Tools
Stripe Dashboard
Workbench
Developers Dashboard
Stripe for Visual Studio Code
Terraform
Stripe Discord server
Features
Workflows
Batch jobs
Event destinations
Stripe health alertsStripe SignalsFile uploads
AI solutions
Agent toolkit
Model Context ProtocolBuild agentic AI SaaS Billing workflows
Security and privacy
Security
Activity logsStripebot web crawler
Privacy
Extend Stripe
Overview
Build Stripe apps
Use apps from Stripe
Build extensions
Custom objects
Partners
Partner ecosystem
Partner certification
United States
English (United States)
  1. Home/
  2. Developer resources/
  3. Stripe CLI
Public preview

Stripe Projects CLIPublic preview

Add third-party services to your app, sync credentials to your project, and manage upgrades.

For more details, see the Stripe CLI reference.

A Stripe project represents a single app or codebase, and groups together a provider account’s services and resources.

  • Provider account: The account with your provider, such as Vercel, Supabase, Clerk, or PostHog.
  • Service: The provider’s product offerings, such as a database, authorization, or analytics.
  • Resource: An instance of the service for your account, and the associated credentials and environment variables. For example, test-db-1, auth, or test-analytics-1.

You can use a project to:

  • Associate an existing provider account or create a new one
  • Provision resources, such as databases, authorization instances, and analytics projects
  • Store credentials in the vault and sync them to your environment (.env) as environment variables
  • Manage upgrades and rotate credentials

After you associate a provider account with your Stripe account, it remains authorized until you explicitly remove the association. You can reuse a provider account for new projects in the same Stripe account. If you want to use a different Stripe account, you must associate the provider account again.

You can initialize a project in a new directory or an existing codebase. If you use an existing codebase and add services, new credentials and environment variables are merged into your existing environment (.env) and project configuration.

Before you begin

  • A Stripe account
  • The Stripe CLI installed and up to date
  • The Projects plugin installed:
Command Line
stripe plugin install projects

If you need to upgrade the projects plugin, run:

Command Line
stripe plugin upgrade projects

If your current Stripe CLI version doesn’t support the Projects plugin, upgrade the Stripe CLI.

Use a coding agent

You can install the Stripe Projects agent skill and ask the coding agent to provision services directly without an existing project. From an empty directory, describe the services you want and the agent installs the required CLIs, initializes the project, and configures everything automatically.

Command Line
npx skills add https://docs.stripe.com provision a database, hosting, and analytics

You can also ask a coding agent to install the Stripe CLI, and Projects plugin:

Command Line
Install the Stripe CLI, install the `projects` plugin, verify `stripe projects --help` works.

How credentials work

Stripe Projects fetches credentials from each provider on your behalf, encrypts them in .projects/vault/vault.json, and stores them in the Stripe Secret Store:

  • Local files: .projects/vault/vault.json stores an encrypted copy of your credentials. Your .env is plaintext for local development. The CLI creates both files with 600 permissions, so only you can read them on your machine. Don’t commit either file to version control—stripe projects init adds them to .gitignore automatically.
  • On removal: Running stripe projects remove <service> deprovisions the resource and removes it from your project state. The CLI doesn’t delete any credentials previously written to .env or .projects/vault/. Remove those manually, or run stripe projects env --pull to overwrite them with the current credential set.

To use your credentials in a production hosting environment, see Set up production environment variables.

Quickstart

This example attaches hosting, a database, authentication, and analytics to a project, then syncs credentials into your local environment.

Command Line
# Create a project stripe projects init # Associate a provider account or add a service stripe projects link vercel # or stripe projects add vercel/project # Add more services stripe projects add clerk/auth stripe projects add posthog/analytics

Stripe Projects stores credentials in the vault, and syncs the environment variables to your local environment (.env) automatically:

Command Line
VERCEL_PROJECT_ID=... SUPABASE_DATABASE_URL=... CLERK_SECRET_KEY=... POSTHOG_PROJECT_API_KEY=...

Create a project

Run init in the directory you want to use for your project:

Command Line
stripe projects init [name]

This initializes a Stripe project for that directory. If you omit the name, Stripe Projects uses the folder name.

Stripe Projects writes the project state under .projects/, which tracks the associated provider accounts, provisioned resources, and local project configuration. You can see the tools your project uses in .projects/state.json. The .projects/state.local.json file in your private repo contains the resource IDs that your team needs to share the same project state.

File reference

File or folder Purpose Commit to version control?
state.jsonShared project state for the services, resources, and configuration your team uses.Yes
state.local.jsonYour local overrides and machine-specific settings. Stores associations between your project resources and your personal provider accounts.Yes1
.projects/vault/Encrypted credential cache written by the CLI after provisioning or env --pull.No, added to .gitignore automatically2
.projects/cache/CLI metadata cache used for performance.No, added to .gitignore automatically
.envPlaintext credentials for local development, written by env --pull.No, added to .gitignore automatically

1 Despite the .local naming convention, you still commit state.local.json. It stores the associations between your project resources and your personal provider accounts. Your teammates need this file to link their own accounts correctly with stripe projects link. If you exclude it from version control, your teammates receive an error when they try to link.

2 This is a local credential cache, not a shared secrets distribution system. Each teammate runs stripe projects env --pull on their own machine to fetch their own credentials from the Stripe Secret Store.

Use a coding agent

When you initialize a project, Stripe Projects writes coding agent skills into the local project directory. These skills provide context and actions for your agent to work with your project through the Stripe Projects workflow.

You can then ask your agent to complete tasks, such as:

  • “Link my existing Neon account and provision a database.”
  • “Add Turso auth and PostHog on the free tier.”
  • “Set up the services this repo needs and explain what changed.”

Your agent uses the same Stripe Projects CLI commands. This means you can provision, upgrade, configure, and sync credentials using the same deterministic, auditable path as using the CLI directly.

To avoid browser pop-ups during provisioning and credential exchange, we recommend the following flow:

  • Sign in to your Stripe account.
  • Associate your existing provider account (or create a new one) with stripe projects link.
  • Add a payment method with stripe projects billing add.
  • Start the agent session.

Check project status

After you’ve added services or connected providers, run status to review your project:

Command Line
stripe projects status

This shows your project name, Stripe account, associated provider accounts, provisioned resources, current tiers, and health status.

List projects

Use stripe projects list to view all projects on your Stripe account.

Command Line
stripe projects list

The command returns each project’s name, ID, and creation date. Use the project ID with stripe projects pull.

Pull a project

Use stripe projects pull to set up an existing project in a new local directory. Run it from an empty directory:

Command Line
stripe projects pull <projectID>

The command creates .projects/state.json and .projects/state.local.json, then writes your .env file by running env --pull. It connects you to the project’s existing service instances — it doesn’t provision new ones.

To find a project ID, run stripe projects list.

Integrate projects into your workflow

You can use Stripe Projects for new apps, existing codebases, and active setups.

Start a new project

If you have a new app, you can create a project, associate provider accounts or create new ones, and provision resources, such as a database, authorization, and analytics.

Add services to an existing codebase

You can initialize Stripe Projects in an existing application directory. If you use an existing directory and add services, new credentials and environment variables are merged into your existing environment (.env) and project configuration. This is useful when an app already has hosting but requires services, such as a database, authentication, analytics, feature flags, or other managed infrastructure.

Manage an existing setup

When you associate the provider accounts you already use with your Stripe account, the project is represented in a single location. This also allows you to associate existing resources and add relevant environment variables.

Browse the service catalog

Use catalog to list all available providers, their service categories, plan tiers, add-ons, and pricing:

Command Line
stripe projects catalog stripe projects catalog <provider> stripe projects catalog <category>

Use search to explore all available provider services related to a keyword:

Command Line
stripe projects search <keyword>

Manage a service

Add a service

Add a provider’s service to your project:

Command Line
stripe projects add <provider>/<service>

When you add a service, this action associates an existing provider account with your Stripe account or creates one, before adding the service.

Adding a service provisions a resource in your provider account. Use the add command to provision a database, auth instance, analytics project, feature flags, or other managed infrastructure for your app.

Associate a provider with the link command

Associate a provider account or create an account without provisioning a resource. This is helpful in agent-driven workflows, when you want to establish a connection with the provider before provisioning resources.

Command Line
stripe projects link <provider>

Remove a service

Remove a service from your provider account and local project:

Command Line
stripe projects remove <provider>/<service> #or stripe projects remove <resource_name>

Rotate a credential

Rotate credentials for a specific service:

Command Line
stripe projects rotate <provider>/<service> #or stripe projects rotate <resource_name>

Upgrade a service tier

You can upgrade the service tier when a service needs more capacity, features, or limits than the current tier provides.

Command Line
stripe projects upgrade <provider> | <provider>/<service> | <resource_name>

Before upgrading, review the current tier for each service in the status or your provider dashboard.

You only need to add your payment method to Stripe once. When you select a paid plan in the CLI, Stripe tokenizes your payment credentials into a Shared Payment Token and grants the provider a payment credential for that upgrade. The provider charges using that token. Your underlying payment credentials aren’t shared.

Regional considerations

See which countries support paid services.

Open a provider dashboard

Open a provider’s dashboard in your default browser:

Command Line
stripe projects open <provider>

Manage environment variables

Stripe Projects stores credentials in the vault, and syncs environment variables to your local environment (.env) automatically when you add or change services.

List variables

Display all project environment variables. Values aren’t revealed in the output:

Command Line
stripe projects env

Environment variables also sync automatically after resource provisioning.

Sync variables

Update your local .env files and replenish your credentials vault. It also updates automatically after resource provisioning.

Command Line
stripe projects env --pull

When to run env --pull

env --pull runs automatically after you provision a service, rotate credentials, or upgrade a resource. You don’t need to run it manually in those cases.

Run env --pull manually when:

  • You’re setting up the project on a new machine or after cloning the repo.
  • A teammate provisioned or rotated a resource and you need to pick up the updated credentials.
  • Your .env was deleted or corrupted and you need to restore it.
  • You want to verify that your local credentials match the current project state.
Command Line
stripe projects env --pull

Set up production environment variables

stripe projects env --pull writes credentials to a local .env file for local development. It doesn’t write environment variables to your production host.

To use the same credentials in production, add them to your host’s environment variable settings. Stripe Projects doesn’t automate this step.

Note

Often providers have their own CLI tools that can read from a .env file. Check your provider’s documentation for the recommended import workflow.

Manage multiple environments

Stripe Projects doesn’t support named environments (development, staging, production) within a single project. Create a separate project for each environment instead (for example, development, staging, and production). Each project has its own independent state and credentials.

Command Line
# Staging environment stripe projects init my-app-staging # Production environment stripe projects init my-app-production

Manage billing

Payment methods are associated with your Stripe account.

View the payment method

Display your payment method on file:

Command Line
stripe projects billing show

Add or update a payment method

Add a payment method or replace an existing one:

Command Line
stripe projects billing add

Generate LLM context

Display and write a local file that combines your project context with all provider-supplied LLM context files:

Command Line
stripe projects llm-context

Share a project

Use stripe projects share to generate a URL that encodes your project’s service stack. The URL captures which services you’ve added, but not your credentials or configuration values.

Run this from a project directory that has at least one service:

Command Line
stripe projects share

Copy the URL and share it with anyone. The URL is self-contained and doesn’t expire.

Set up a new project from a shared stack

Run stripe projects init with the --from flag in an empty directory:

Command Line
stripe projects init --from <URL>

This initializes a new project and provisions fresh instances of each service in the shared stack.

Add services to an existing project

Run stripe projects import from an already-initialized project directory:

Command Line
stripe projects import <URL>

This provisions the services from the shared stack and adds them to your existing project.

Available providers

These providers co-designed the integration protocol with Stripe. The protocol standardizes provisioning, plan selection, upgrades, and credential handoff.

ProviderPrimary categories
AgentMailEmail
AlgoliaSearch
AmplitudeAnalytics, feature flags
Auth0Auth
BrowserbaseBrowser, AI
ChromaDatabase, AI
ClerkAuthentication
CloudflareHosting, database, storage, domains, cache, queues, browser
DaytonaSandboxes, hosting
ElevenlabsAI
FirecrawlSearch
Fly.ioHosting, database
GitLabCI/CD, observability, storage
Hugging FaceAI, hosting, storage
InngestQueue
MixpanelAnalytics
NeonDatabase, authentication
NetlifyHosting
OpenRouterAI
PlanetScaleDatabase
PostHogAnalytics, feature flags
PrivyPayments, authentication
RailwayHosting, database, storage, cache
RenderHosting, database
RunloopSandboxes, AI
SentryObservability
SquarespaceDomains
SupabaseDatabase, authentication, storage
TursoDatabase
TwilioCommunications
UpstashCache, search, database
VercelHosting
WorkOSAuth

Run stripe projects catalog at any time to view the most current list of providers and available service tiers. Or view the directory at projects.dev/providers.

Request a provider

Contact provider-request@stripe.com if you’re interested in becoming a provider on the Stripe Projects network or want to request a specific provider.

Use non-interactive environments

Every command supports flags for non-interactive environments such as CI/CD pipelines, scripts, and agents.

Global flags

FlagDescription
-v, --versionShow current plugin version.
--jsonReturn output as structured JSON instead of formatted text.
--no-interactiveDisable interactive prompts and confirmation dialogs. Commands fail when required input is missing.
--auto-confirmAccept confirmation prompts automatically, for example when you remove a service.
--quietSuppress non-essential output and only return final results or errors.
--accept-tosAccept provider ToS without prompting.
--streamEnable streaming output animations.
--debugEnable debug logging for Stripe API requests.

Command reference

CommandDescription
add <provider>/<service>Add a service to your project.
billing addAdd or replace a payment method.
billing showView the current payment method.
billing updateUpdate an existing payment method or change the spend limit.
catalogList available providers, categories, and services.
downgrade <service_reference> [service]Downgrade to a lower tier or free plan if supported by provider.
env [--pull]List or sync project environment variables.
import <URL>Add services from a shared stack URL to an existing project.
init <name>Create a project and sign in or register.
link <provider>Connect a provider to your project.
listView all projects on your Stripe account.
llm-contextGenerate a combined LLM context file.
open <provider>Open a provider’s dashboard in the browser.
pull <projectID>Set up an existing project in a new local directory.
remove <service_reference>Remove a service from your project.
rotate <service_reference>Rotate credentials for a service.
searchList available provider services based on a keyword.
services listShows all services in a project.
shareGenerate a shareable URL that encodes your project’s service stack.
statusView project name, services, tiers, and health.
switch-accountSwitch to a different Stripe account.
unlink <provider>Disconnect a provider from your project.
update <service_reference> [service]Update a resource within the same provider.
upgrade <service_reference> [service]Change the tier of a service.
Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Chat with Stripe developers on Discord.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc
On this page