Install the Stripe Terraform provider
Set up the provider for local development.
The Stripe Terraform Provider enables you to manage Stripe resources using infrastructure as code. Configure products, prices, billing meters, and complex pricing plans with declarative Terraform syntax. Your Stripe infrastructure becomes version controlled, reproducible, and auditable. For API information, see the Stripe API reference.
Sample Workflow
Follow this workflow to create a product with a recurring price and webhook endpoint to receive events.
Create a new Terraform file, main.:
terraform { required_providers { stripe = { source = "stripe/stripe" version = "0.1.3" } } } provider "stripe" { # API key is read from STRIPE_API_KEY environment variable # Alternatively, set it explicitly (not recommended for production) # api_key = "sk_test_..." } # Define a product resource "stripe_product" "pro_plan" { name = "Pro Plan" description = "Professional tier with advanced features" } # Create a recurring price for the product resource "stripe_price" "pro_monthly" { product = stripe_product.pro_plan.id currency = "usd" unit_amount = 2900 recurring { interval = "month" } } # Set up a webhook endpoint for payment events resource "stripe_webhook_endpoint" "payments" { url = "https://api.example.com/webhooks/stripe" enabled_events = [ "payment_intent.succeeded", "payment_intent.payment_failed", "customer.subscription.created", "customer.subscription.deleted", ] } output "price_id" { value = stripe_price.pro_monthly.id }
Set your API Key:
export STRIPE_API_KEY="sk_test_BQokikJOvBiI2HlWgH4olfQ2"
Preview and apply changes:
terraform plan terraform apply terraform output
Supported resources
This section provides a quick reference of available resources. For detailed documentation and all configurable parameters, see Supported resources.
Product catalogue
| Resource | Description |
|---|---|
stripe_ | Product definitions |
stripe_ | Pricing configurations |
stripe_ | Discount coupons |
stripe_ | Shipping rate configurations |
stripe_ | Tax rate definitions |
stripe_ | Feature flags for entitlements |
Core resources
| Resource | Description |
|---|---|
stripe_ | Customer records |
stripe_ | Webhook endpoint configurations |
stripe_ | Usage tracking meters |
Advanced usage-based billing Private preview
These resources are part of the Billing v2 API and require access to the private preview.
| Resource | Description |
|---|---|
stripe_ | Pricing plan containers |
stripe_ | Plan components |
stripe_ | Licensed access items |
stripe_ | Subscription fees |
stripe_ | Usage-based billable items |
stripe_ | Pricing containers |
stripe_ | Individual rates |
stripe_ | Credits and adjustments |
Data sources
| Data Source | Description |
|---|---|
stripe_ | Look up existing billing meters |
Manage multiple environments with workspaces
Terraform workspaces let you manage separate Stripe environments (sandbox versus livemode) with isolated state files. This prevents accidental changes to production resources when working in test mode.
Set up workspaces
Create workspaces for a sandbox (test mode) and live mode:
# Create workspaces terraform workspace new sandbox terraform workspace new livemode # List available workspaces terraform workspace list
Switch between environments
Each workspace maintains its own state file. Switch workspaces and set the corresponding API key:
# Work in sandbox (test mode) terraform workspace select sandbox export STRIPE_API_KEY=terraform plan terraform apply # Work in livemode (production) terraform workspace select livemode export STRIPE_API_KEY="sk_live_..." terraform plan terraform applysk_test_BQokikJOvBiI2HlWgH4olfQ2