Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/franckverrot/terraform-provider-stripe
A Terraform Provider for Stripe
https://github.com/franckverrot/terraform-provider-stripe
golang stripe stripe-api terraform terraform-provider
Last synced: 26 days ago
JSON representation
A Terraform Provider for Stripe
- Host: GitHub
- URL: https://github.com/franckverrot/terraform-provider-stripe
- Owner: franckverrot
- License: mpl-2.0
- Created: 2018-09-03T17:03:51.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2023-08-14T22:24:44.000Z (over 1 year ago)
- Last Synced: 2024-11-01T03:32:56.221Z (about 1 month ago)
- Topics: golang, stripe, stripe-api, terraform, terraform-provider
- Language: Go
- Homepage: https://registry.terraform.io/providers/franckverrot/stripe/latest
- Size: 5.01 MB
- Stars: 242
- Watchers: 4
- Forks: 51
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Authors: AUTHORS.md
Awesome Lists containing this project
- awesome-terraform - terraform-provider-stripe - Provider for Stripe. (Providers / Miscellaneous)
- awesome-tf - terraform-provider-stripe - Provider for Stripe. (Providers / Vendor supported providers)
README
# Terraform Stripe Provider
This provider enables Stripe merchants to manage certain parts of their
Stripe infrastructure—products, plans, webhook endpoints—via Terraform.**Example use cases**
* Create and update resources in a repeatable manner
* Clone resources across multiple Stripe accounts (e.g. different locales or brands)Since Terraform 13 and the Terraform Registry, no need to download a release
or compile this on your own machine (unless you really want to.) Just jump
to the [Basic Usage](#basic-usage) section and get going!## Requirements
* [Terraform](https://www.terraform.io/downloads.html) 0.11.x to 0.13.x
* [Go](https://golang.org/doc/install) 1.8 to 1.14 (to build the provider plugin)## Building The Provider
Clone repository anywhere:
```sh
$ git clone https://github.com/franckverrot/terraform-provider-stripe.git
```Enter the provider directory and build the provider
```sh
$ cd terraform-provider-stripe
$ make compile
```Or alternatively, to install it as a plugin, run
```sh
$ cd terraform-provider-stripe
$ make install
```## Using the provider
If you're building the provider, follow the instructions to [install it as a plugin.](https://www.terraform.io/docs/plugins/basics.html#installing-a-plugin) After placing it into your plugins directory, run `terraform init` to initialize it.
### Basic Usage
Set an environment variable, `TF_VAR_stripe_api_token` to store your Stripe
API token. This helps ensure you do not accidentally commit this sensitive
token to your repository.export TF_VAR_stripe_api_token=
Your token is now accessible in your Terraform configuration as
`var.stripe_api_token`, and can be used to configure the provider.The example below demonstrates the following operations:
* create a product
* create a plan for that product
* create a webhook endpoint for a few events```hcl
terraform {
required_providers {
stripe = {
source = "franckverrot/stripe"
version = "1.8.0"
}
}
}provider "stripe" {
# NOTE: This is populated from the `TF_VAR_stripe_api_token` environment variable.
api_token = "${var.stripe_api_token}"
}resource "stripe_product" "my_product" {
name = "My Product"
type = "service"
}resource "stripe_plan" "my_product_plan1" {
product = "${stripe_product.my_product.id}"
amount = 12345
interval = "month" # Options: day week month year
currency = "usd"
}resource "stripe_webhook_endpoint" "my_endpoint" {
url = "https://mydomain.example.com/webhook"enabled_events = [
"charge.succeeded",
"charge.failed",
"source.chargeable",
]
}resource "stripe_coupon" "mlk_day_coupon_25pc_off" {
code = "MLK_DAY"
name = "King Sales Event"
duration = "once"amount_off = 4200
currency = "usd" # lowercasemetadata = {
mlk = "<3"
sales = "yes"
}max_redemptions = 1024
redeem_by = "2019-09-02T12:34:56-08:00" # RFC3339, in the future
}
```### Supported resources
- [x] [Products](https://stripe.com/docs/api/products)
- [x] name
- [x] type
- [x] active (Default: true)
- [x] attributes (list)
- [x] metadata (map)
- [x] statement descriptor
- [x] unit label
- [x] [Prices](https://stripe.com/docs/api/prices)
- [x] active (Default: true)
- [x] currency
- [x] metadata (map)
- [x] nickname
- [x] product
- [x] recurring
- [x] unit_amount
- [x] billing_scheme
- [x] unit_amount_decimal
- [x] tiers (Stripe API doesn't provide the API to update this at the moment, so the deletion should be done via dashboard page)
- [x] tiers mode
- [x] [Plans](https://stripe.com/docs/api/plans)
- [x] active (Default: true)
- [x] aggregate usage
- [x] amount
- [x] amount_decimal
- [x] billing scheme (Default: per_unit)
- [x] currency
- [x] interval
- [x] interval_count (Default: 1)
- [x] metadata (map)
- [x] nickname
- [x] product
- [x] tiers
- [x] tiers mode
- [x] transform_usage
- [x] trial period days
- [x] usage type (Default: licensed)
- [x] [Webhook Endpoints](https://stripe.com/docs/api/webhook_endpoints)
- [x] url
- [x] enabled_events (list)
- [x] connect
- Computed:
- secret
- [x] [Coupons](https://stripe.com/docs/api/coupons)
- [x] code (aka `id`)
- [x] name
- [x] amount off
- [x] currency
- [x] percent off
- [x] duration
- [x] duration_in_months
- [x] max redemptions
- [x] metadata
- [x] redeem by (should be RC3339-compliant)
- Computed:
- [x] valid
- [x] created
- [x] livemode
- [x] times redeemed
- [x] [TaxRates](https://stripe.com/docs/api/tax_rates)
- [x] code (aka `id`)
- [x] active
- [x] description
- [x] display_name
- [x] inclusive
- [x] jurisdiction
- [ ] DELETE API (Stripe API doesn't provide the API at the moment, so the deletion should be done via dashboard page)
- Computed:
- [x] created
- [x] livemode- [x] [Customer Portal](https://stripe.com/docs/api/customer_portal)
- [x] business_profile
- [x] headline
- [x] privacy_policy_url
- [x] terms_of_service_url
- [x] features
- [x] customer_update
- [x] allowed_updates
- [x] invoice_history
- [x] payment_method_update
- [x] subscription_cancel
- [x] subscription_pause
- [x] subscription_update
- [x] default_return_url
- [x] metadata### Importing existing resources
Scenario: you create something manually and would like to start managing it
with Terraform instead.This provider support a straightforward/naive import procedure, here's how
you could do it for a coupon.First, import the resource:
```
$ terraform import stripe_coupon.mlk_day_coupon_25pc_off MLK_DAY...
Before importing this resource, please create its configuration in the root module. For example:resource "stripe_coupon" "mlk_day_coupon_25pc_off" {
# (resource arguments)
}
```Then after adding these lines to your Terraform file, a plan should result in:
```
$ terraform plan...
-/+ stripe_coupon.mlk_day_coupon_25pc_off (new resource required)
id: "MLK_DAY" => (forces new resource)
amount_off: "4200" => "4200"
code: "" => "MLK_DAY"
created: "" =>
currency: "usd" => "usd"
duration: "once" => "once"
livemode: "false" =>
max_redemptions: "1024" => "1024"
metadata.%: "2" => "2"
metadata.mlk: "<3" => "<3"
metadata.sales: "yes" => "yes"
name: "King Sales Event" => "King Sales Event"
redeem_by: "" => "2019-09-02T12:34:56-08:00" (forces new resource)
times_redeemed: "0" =>
valid: "true" =>
```Some updates might require replacing existing resources with new ones.
## Developing the Provider
If you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (version 1.8+ is *required*). You'll also need to correctly setup a [GOPATH](http://golang.org/doc/code.html#GOPATH), as well as adding `$GOPATH/bin` to your `$PATH`.
To compile the provider, run `make`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory.
```sh
$ make bin
...
$ $GOPATH/bin/terraform-provider-stripe
...
```## License
Mozilla Public License Version 2.0 – Franck Verrot – Copyright 2018-2020