Bubble Docs
Search…
Stripe
The Stripe Plugin charges credit cards and handles subscriptions for users. Strong Customer Authentication (SCA) is supported and can be enabled from the plugin menu by selecting “Checkout v3” in the dropdown.
See Stripe’s documentation for more information.

Charge the current user

This action charges the current user and prompts them to enter their credit card information. The response from Stripe, e.g., the Stripe charge ID, amount, confirmation, etc., can be accessed in the subsequent actions as 'Result of previous step.' In a failed transaction, the workflow will stop running. See Stripe's documentation for more details.

Payer email

Define the email of the user to charge. Often, it will be 'Current user's email.'

Amount

Enter the amount to be charged. It can be dynamic using the 'Insert dynamic data' button.

Name

Enter the product name that will appear in the checkout flow and in the email users receive from Stripe.

Description

Enter the description that will appear in the checkout flow and in the email users receive from Stripe.

Image

The image that will appear in the checkout flow.

Currency

Enter the currency of the transaction. If the currency is not in the list you can type it.

Button caption

This is the caption for the button on the Stripe Checkout form. The amount will be added to the caption in Live mode.

Statement descriptor

Optional, use this to change how this payment will show up on the customer's statement. What you enter will be appended to the "shortened descriptor set in your Stripe account, in the manner of "YOUR-APP*DESCRIPTOR". This overall string has a character limit of 21; anything past that will be truncated. In Stripe's v3 checkout, this field will comprise the entirety of the statement descriptor.

Authorize the charge only

This determines whether to immediately capture the charge. When checked, the charge issues an authorization and will need to be captured later. Uncaptured charges expire in 7 days. You can then capture the charge in your Stripe dashboard.

The payee of this transaction is another user

When setting up a marketplace, check this box so payment will go to another user instead of your own Stripe account. For this to work, you must build a flow where users can register as a seller, connecting their Stripe account to get paid.

Transaction payee

In the case of a marketplace, define who gets the payment. This is likely the 'Current list thing's creator.' This user must register as a seller for the transaction to process.

App fee

You can charge a fee on transactions, but it must a currency amount and not a percentage.You can, however, compute the value in the field using the Composer.

Allow promotion codes (v3)
🆕

Check this box to allow your users to enter a promotion or discount code when they are sent to checkout. Coupon codes can be created in your Stripe Dashboard. See Stripe Documentation for more details.

Add tax rate to checkout (v3)
🆕

Check this box to add a tax rate or list of tax rates to the user's invoice. Before you check this box, be sure to create your Tax Rate objects in your Stripe Dashboard. If the transaction payee is another user, make sure the Tax Rate object is from the Connected account, not your own Stripe account.
While Stripe offers both Fixed & Dynamic Tax rates, the Stripe Plugin only supports Fixed tax rates at this time. See Stripe Documentation to learn more about Fixed vs Dynamic tax rates.

Tax rate IDs source

This dropdown element allows you to input your tax rate IDs as static choices or dynamic data from the application database or Option set. In this dropdown menu, choose between Static IDs or Dynamic IDs.

Tax rate IDs (press Enter between each ID)

This static input allows you to paste in your Stripe tax rate ID or list of tax rate IDs by separating each entry with a new line. All tax rates entered here will be applied to the user checkout session.

Tax rate IDs

This dynamic input allows you to select a list of tax rate ids dynamically from your application, whether from the database, option set, or other datasource. This selection must evaluate to a list of texts.
If you'd like to specify a single tax rate ID, use the :converted to list operator. See the example below:
If your tax rate IDs are stored in an Option set named Tax Rates, and you'd like to select a single option named "Sales Tax" with the attribute "ID", your dynamic expression would look like:Sales Tax:converted to list's ID

Do not show success message

By default, Bubble displays an alert informing the user when the action is successful. Deactivate this behavior by deselecting this box if you want to display a custom message instead of the default Bubble message.

Collect the user's CC information

This action prompts the user to enter their credit card information without actually charging the card. Use this to delay the payment, for instance, if you are building a crowdfunding-based system. If the user fails to enter their card information, the workflow will stop running.

Update existing main card

If you check this box, the current user's card, if any, will be updated. If the box is not check, a new card will be added to the user.

Do not show success message

By default, Bubble displays an alert informing the user when the action is successful. Deactivate this behavior by deselecting this box if you want to display a custom message instead of the default Bubble message.

Charge a user using saved CC

This action charges a user who has already entered their credit card information. It does not have to be the current user in this case. If no credit card information is available, the action will fail. The response from Stripe, e.g., the Stripe charge ID, amount, confirmation, etc., can be accessed in the subsequent actions as 'Result of previous step.' In a failed transaction, the workflow will stop running.

Charged user

Define the user to charge. This user must be signed up already because we need to have their saved credit card information. The user does not need to be logged in for the transaction to happen.

Amount

Enter the amount to charge. It can be dynamic using the 'Insert dynamic data' button.

Currency

Enter the currency of the transaction. If the currency is not in the list you can type it.

Name

Enter the product name that will appear in the checkout flow and in the email users receive from Stripe.

Description

Enter the description that will appear in the checkout flow and in the email users receive from Stripe.

Image

The image that will appear in the checkout flow.

The payee of this transaction is another user

When setting up a marketplace, check this box so payment will go to another user instead of your own Stripe account. For this to work, you must build a flow where users can register as a seller, connecting their Stripe account to get paid.

Transaction payee

In the case of a marketplace, define who gets the payment. This is likely the 'Current list thing's creator.' This user must register as a seller for the transaction to process.

App fee

You can charge a fee on transactions, but it must a currency amount and not a percentage.You can, however, compute the value in the field using the Composer.

Card ID to charge

You can optionally specific a card ID to charge. If this field is not filled, the default card of the user will be used.

Do not show success message

By default, Bubble displays an alert informing the user when the action is successful. Deactivate this behavior by deselecting this box if you want to display a custom message instead of the default Bubble message.

Capture an authorized charge

This action lets you capture a charge that has already been authorized by Stripe. Note that uncaptured charges expire after 7 days, per Stripe's documentation.

Charge ID

Charge ID of the charge you want to capture.

Do not show success message

By default, Bubble displays an alert informing the user when the action is successful. Deactivate this behavior by deselecting this box if you want to display a custom message instead of the default Bubble message.

Register the user as a seller

This action enables users to become merchants on your platform. For example, if you want to build a marketplace where users can sell their work to someone else, then they need to be able to credit their account when a transaction occurs. Your app will usually take a commission, which can be set when setting up the actions "Charge a user using saved cc" and "Charge the current user". You must create an application on Stripe to enable this type of transaction.
Note: In v3, the registering seller will be directed to a Stripe-hosted seller onboarding experience.
In v3 of the plugin, the registering seller will be directed to a Stripe-hosted seller onboarding experience. At this time, only Connect Standard account onboarding is supported with this method.
See Stripe Connect for more information. Important: You need to set the redirection URIs in Stripe as 'https://bubble.io/poststripeauth' or 'https://d##.bubble.is/poststripeauth' for Dedicated environments in order for this to work. In addition, be sure to add the Connect client ID to your Stripe Plugin settings. Both the client ID and redirect URI settings can be found in your Stripe Dashboard > Settings > Connect settings.

Business email

Prefill information to ease the process with Stripe. Enter the email the user is likely to use.

Business URL

Prefill information to ease the process with Stripe. Enter the URL the user is likely to use.

Business name

Prefill information to ease the process with Stripe. Enter the name the user is likely to use.

Business address

Prefill information to ease the process with Stripe. Enter the address the user is likely to use.

Product category

Prefill information to ease the process with Stripe. Enter the product category the user is likely to sell.

Sold products are physical products

Prefill information to ease the process with Stripe. Enter whether the user is likely to sell a physical product.

Product description

Prefill information to ease the process with Stripe. Enter the type of product the user is likely to sell.

Subscribe the user to a plan

This action subscribes a user to a plan, which was previously defined in Stripe. Then, the card will be charged on a regular basis. If the user is already on a plan, their subscription will be updated to the new plan. If the user fails to enter their credit card information, the workflow will stop running.
Since the app has two versions, Development and Live, you need to have both versions of your account in Stripe to have the same plans with the same IDs.

Apply this action to the current user

By default, the 'Subscribe user' action applies to the currently logged in user. To apply the operation to another user, uncheck this box.

Subscribed user

Define the user to subscribe to a plan. This user must be signed up already because we need to have their saved credit card information. The user does not need to be logged in for the transaction to happen.

Update existing subscription

If you check this box, the current user's subscription, if any, will be updated. If the box is not check, a new subscription will be added to the user.

Subscription ID (opt.)

If you want to update an existing subscription, you can define here the subscription ID (returned by Stripe). If this is empty, the action will modify the first subscription returned by Stripe.

Dynamically specify plan

By default, the plan is chosen in a dropdown menu. To make the plan dynamic, check this box.

Subscription type

You can either pick one plan (most common case), or include more than one plan in the subscription.

Plan name

Once you enter your keys in the Stripe section in the Plugins Tab, we fetch the plans you created with Stripe to populate this list. Select the plan to subscribe the user to. If the plan is dynamic, the value must be one of the plans defined in your Stripe account.
Since the app has two versions, Development and Live, you need to have both versions of your account in Stripe to have the same plans with the same IDs.

Quantity

Enter the quantity to apply to the plan. In most cases it will be 1, but to have variable pricing on the plan, use this.

Subscription Items

You can define a list of plans/quantity to add to the subscriptions

Apply a coupon to this subscription (v2)

To provide discounts to certain customers, create coupon codes in the Stripe Dashboard. Check this box to enter a coupon ID.

Coupon ID

Enter the coupon ID. It can be dynamic information coming from an input.

Allow promotion codes (v3)
🆕

Check this box to allow your users to enter a promotion or discount code when they are sent to checkout. Coupon codes can be created in your Stripe Dashboard. See Stripe Documentation for more details.

Add tax rate to checkout (v3)
🆕

Check this box to add a tax rate or list of tax rates to the user's invoice. Before you check this box, be sure to create your Tax Rate objects in your Stripe Dashboard.
While Stripe offers both Fixed & Dynamic Tax rates, the Stripe Plugin only supports Fixed tax rates at this time. See Stripe Documentation to learn more about Fixed vs Dynamic tax rates.

Tax rate IDs source

This dropdown element allows you to input your tax rate IDs as static choices or dynamic data from the application database or Option set. In this dropdown menu, choose between Static IDs or Dynamic IDs.

Tax rate IDs (press Enter between each ID)

This static input allows you to paste in your Stripe tax rate ID or list of tax rate IDs by separating each entry with a new line. All tax rates entered here will be applied to the user checkout session.

Tax rate IDs

This dynamic input allows you to select a list of tax rate ids dynamically from your application, whether from the database, option set, or other datasource. This selection must evaluate to a list of texts.
If you'd like to specify a single tax rate ID, use the :converted to list operator. See the example below:
If your tax rate IDs are stored in an Option set named Tax Rates, and you'd like to select a single option named "Sales Tax" with the attribute "ID", your dynamic expression would look like:Sales Tax:converted to list's ID

Tax percent (v2)

Enter the tax percentage, which should be a positive decimal between 1 and 100. It can be dynamic using the Composer. This represents the percentage of the subscription invoice subtotal that will be calculated and added as tax to the final amount for each billing period. For example, a plan that charges $10/month with a tax percent of 20.0 will charge $12 per invoice.

End of the trial

Enter the date representing the end of the trial period. After this time, the customer will be charged. When selected, this setting overrides the default trial period of the plan the customer is subscribed to.

Do not show success message

By default, Bubble displays an alert informing the user when the action is successful. Deactivate this behavior by deselecting this box if you want to display a custom message instead of the default Bubble message.

Apply a coupon to the user's subscription

This action applies a coupon/discount to the current user's subscription

Apply this action to the current user

By default, the 'Apply a coupon to the user's subscription' action applies to the currently logged in user. To apply the operation to another user, uncheck this box.

Subscribed user

Define the user to apply a coupon to. This user must be signed up already because we need to have their saved credit card information. The user does not need to be logged in for the transaction to happen.

Subscription ID

If you want to update an existing subscription, you can define here the subscription ID (returned by Stripe). If this is empty, the action will modify the customer object in Stripe and all plans will have the coupon applied to them.

End of the trial

Enter the date when the trial period should end. If left empty, no trial period will apply.

Do not show success message

By default, Bubble displays an alert informing the user when the action is successful. Deactivate this behavior by deselecting this box if you want to display a custom message instead of the default Bubble message.

Create an invoice item

This action creates an invoice item for the user. The invoice item will be paid with the next invoice.
Note: Since the introduction of the Bubble Stripe plugin, Stripe has clarified and updated some of its terminology. For this plugin, what Bubble calls a "line item" is what Stripe calls an "invoice line item" - these have Stripe IDs starting with 'il_' and are entries on an existing invoice. The change Stripe made was to have its own concept of "line items" which correspond to future entries on the next invoice; these Stripe IDs start with 'ii_' and can exist separately from an invoice. Bubble still uses its original definition of 'line items' (i.e. as Stripe's 'invoice line items') for the time being.

User

Define the user to charge. If the user does not have a credit card on file, the action will fail.

Amount

Enter the amount to charge. It can be dynamic using the 'Insert dynamic data' button.

Currency

Enter the currency of the transaction. If the currency is not in the list you can type it.

Description

Enter the description that will appear in the email users receive from Stripe.

Pay an invoice

This action immediately charges a pending invoice. It uses the card the user has on file.

Invoice ID

Enter the Stripe invoice ID to charge.

Cancel the current user's plan

This action cancels a subscription with Stripe. The card will not be charged anymore.

Apply this action to the current user

By default, the 'Cancel Plan' action applies to the currently logged in user. To apply the operation to another user, uncheck this box.

Subscribed user

Define the user to unsubscribe. This user must be signed up already. The user does not need to be logged in for the transaction to happen.

Cancel all subscriptions

If this box is checked, all subscriptions on the user will be canceled. If not, you will be able to specify a subscription ID.

Subscription ID

If you want to cancel an existing subscription (and keep the other subscriptions running), you can define here the subscription ID (returned by Stripe).

Do not show success message

By default, Bubble displays an alert informing the user when the action is successful. Deactivate this behavior by deselecting this box if you want to display a custom message instead of the default Bubble message.

Create a subscription item

This action adds a plan to an existing subscription.

Subscription ID

Define here the subscription ID (returned by Stripe) to add the plan to.

Plan name

Once you enter your keys in the Stripe section in the Plugins Tab, we fetch the plans you created with Stripe to populate this list. Select the plan to subscribe the user to. If the plan is dynamic, the value must be one of the plans defined in your Stripe account.
Since the app has two versions, Development and Live, you need to have both versions of your account in Stripe to have the same plans with the same IDs.

Quantity

Enter the quantity to apply to the plan. In most cases it will be 1, but to have variable pricing on the plan, use this.

Update a subscription item

This action modifies a plan to an existing subscription that has more than one plan.

Subscription Item ID

Define here the subscription item D (returned by Stripe) to update.

Plan name

Once you enter your keys in the Stripe section in the Plugins Tab, we fetch the plans you created with Stripe to populate this list. Select the plan to subscribe the user to. If the plan is dynamic, the value must be one of the plans defined in your Stripe account.
Since the app has two versions, Development and Live, you need to have both versions of your account in Stripe to have the same plans with the same IDs.

Quantity

Enter the quantity to apply to the plan. In most cases it will be 1, but to have variable pricing on the plan, use this.

Delete a subscription item

This action deletes a plan to an existing subscription that has more than one plan. The subscription will still keep going after the deletion.

Subscription Item ID

Define here the subscription item ID (returned by Stripe) to delete.

Make a card new default

This action modifies the current user and makes a card the new default payment mean.

Credit Card ID

Define here the card ID (returned by Stripe) to use.

Delete a credit card

This action deletes a credit card on the current user.

Credit Card ID

Define here the card ID (returned by Stripe) to delete.

Retrieve all user invoices

This user call retrieves all user invoices based on the email of the user.
Because of limitations associated with the Stripe API, we can only retrieve up to 100 invoices per user at this moment.

Set a user's credit balance

This action uses the Stripe Customer API to set an absolute value for a customer's balance.
Note: This replaces the old "Adjust a user's balance" action.

User

Define the user that corresponds to the Stripe customer whose balance you'd like to set. The user must already be a Stripe customer in your system.

Amount

Specify the absolute value of the above user's balance. For example, setting the value to $0 will wipe out any positive (amount owed) or negative (amount credited) value for the current customer balance.

Adjust a user's credit balance
🆕

This action uses the Stripe Credit Balance API to increase (debit) or decrease (credit) a user's Credit Balance. This action can be used to issue a credit to a user that will be documented as a Transaction on their account and applied to their next invoice. See Stripe Documentation for more detail.

User

Define the user that corresponds to the Stripe customer whose balance you'd like to adjust. The user must already be a Stripe customer in your system.

Type of adjustment

Select the type of adjustment you would like to issue to the above user. The options are credit, meaning you owe them money, or debit, meaning they owe you money.

Amount

Specify the amount you would like to credit or debit from the user's Stripe credit balance, depending of the type of adjustment you selected above.

Currency

Specify the currency (USD, EUR, etc.) of the amount. This currency must match the one set by the customer. If the customer’s currency is not set, it will be updated to this value.

Transfer to seller

This action uses the Stripe Transfer API to send funds from your Stripe account to a Connected (seller) account.

Amount

Enter the amount to send. It can be dynamic using the 'Insert dynamic data' button.

Currency

Enter the currency of the transaction. If the currency is not in the list you can type it.

Destination seller

Enter the User that the money will be sent to. Note, the user must be a registered seller with a valid Connected account for the transfer to be valid.

Description

Optionally enter a description of the Transfer to be shown on the record of the transaction.

Source charge ID

Optionally enter the pre-authorized charge ID as the source of this transfer instead of the parent Stripe account balance.

Transfer group

Optionally enter a text identifier for this individual transaction as a part of a group of transactions. More information on transfer groups can be found in the Stripe Connect Documentation.

Create payout

This action sends a payout in the amount specified from your Stripe account balance to the bank account linked to your Stripe account.

Amount

Enter the amount to send. It can be dynamic using the 'Insert dynamic data' button.

Currency

Enter the currency of the transaction. If the currency is not in the list you can type it.

Enter API Key

This button will appear if not all of your Live keys (Client ID, Secret Key, Publishable Key) are filled out in the Stripe plugin settings. Clicking this button will bring you to the plugin settings page so you can fill them out. Refer to the Setup section below for more information on these keys.

Setup

You will need an active Stripe account before you can set up the Stripe plugin. Go to Stripe to create an account.
Note: Stripe has two environments (like Bubble) Live and Test. If both environment keys are set below, your Bubble app will use the development (test) keys in development and the Live keys in Live.

Live Client ID

Enter the Client ID from the Stripe Live environment. This information can be found in the Stripe Dashboard > Settings > Connect settings.
Note: This key is only relevant if you will be using Stripe Connect functionality.

Live Secret Key

Enter your Secret Key from the Stripe Live environment. This information can be found in the Stripe Dashboard > Developers > API Keys settings.

Live Publishable Key

Enter your Publishable Key from the Stripe Live environment. This information can be found in the Stripe Dashboard > Developers > API Keys settings.

Client ID - development

Enter the Client ID from the Stripe Test environment. This information can be found in the Stripe Dashboard > Settings > Connect settings.

Secret Key - development

Enter your Secret Key from the Stripe Test environment. This information can be found in the Stripe Dashboard > Developers > API Keys settings.

Publishable Key - development

Enter your Publishable Key from the Stripe Test environment. This information can be found in the Stripe Dashboard > Developers > API Keys settings.

Image for Stripe Checkout

Add a default image to be included in your Stripe Checkout sessions.

Name for Stripe Checkout

Enter a default product name that will appear in the checkout flow and in the email users receive from Stripe.

Stripe Checkout Version

Select the version of the Stripe Plugin that you will like to use.
Note: v3 is strongly recommended as v2 relies on an outdated version of Stripe Checkout and is no longer supported.

Collect the user's address with Checkout

Check this box if you would like to collect the user's address when collecting a customer's payment information during a Checkout session.

FAQ

Stripe and Privacy Rules

Privacy rules currently bundle certain fields under “Social Networks,” including Stripe customer data. If you would like to get the customer ID and subscription information, this field will need to be enabled. This privacy rule controls plugin-borne fields, most commonly social network signup fields. When you sign up with an OAuth provider like Facebook, for example, this controls your Facebook name and profile picture.

Stripe and iFrames (v2)

By default, iFrames are blocked for your Bubble application, which will cause the Stripe v2 checkout to navigate to a broken page on mobile if this setting is not updated.

Android Webview (v2)

The webview browser on Android is not supported by Stripe’s legacy Checkout (v2), which can make it fail. Given that the webview controls its own user agent, however, you can “pretend” that your browser is another one by setting your webview’s user agent to another browser’s, for example:
    Desktop Chrome
webView.getSettings().setUserAgentString("any user agent string");
    iOS 9 webview
webView.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13E233 Safari/601.1");
You can experiment with similar settings at the top of your Android application, if wrapping your Bubble app.

Test Mode Plans vs Live Mode Plans

If both dev and live keys are set, your app will be interacting with Stripe's test environment when you are in development mode, and Stripe's live environment when you deploy to live. If your Stripe plan ids are different between your test mode and live mode, and you are selecting a plan id in dev, this can lead to errors in live as this plan id will not exist in this environment. Consider adjusting your Stripe plans to have matching ids between environments. If this is not possible, try dynamically setting the plan id with Isn't live version:formatted as text and set the text value of "yes" to the dev plan id and "no" to the live plan id.

Language Support (v2)

Stripe Plugin version v2 uses an older version of the Stripe Checkout API that has limited language support, including for languages like Portuguese. Consider upgrading to v3 for more robust language support. When an unsupported language is detected, v2 will default to English.
Last modified 19d ago
Copy link
Contents
Charge the current user
Payer email
Amount
Name
Description
Image
Currency
Button caption
Statement descriptor
Authorize the charge only
The payee of this transaction is another user
Transaction payee
App fee
Allow promotion codes (v3)
Add tax rate to checkout (v3)
Do not show success message
Collect the user's CC information
Update existing main card
Do not show success message
Charge a user using saved CC
Charged user
Amount
Currency
Name
Description
Image
The payee of this transaction is another user
Transaction payee
App fee
Card ID to charge
Do not show success message
Capture an authorized charge
Charge ID
Do not show success message
Register the user as a seller
Business email
Business URL
Business name
Business address
Product category
Sold products are physical products
Product description
Subscribe the user to a plan
Apply this action to the current user
Subscribed user
Update existing subscription
Subscription ID (opt.)
Dynamically specify plan
Subscription type
Plan name
Quantity
Subscription Items
Apply a coupon to this subscription (v2)
Coupon ID
Allow promotion codes (v3)
Add tax rate to checkout (v3)
Tax percent (v2)
End of the trial
Do not show success message
Apply a coupon to the user's subscription
Apply this action to the current user
Subscribed user
Subscription ID
End of the trial
Do not show success message
Create an invoice item
User
Amount
Currency
Description
Pay an invoice
Invoice ID
Cancel the current user's plan
Apply this action to the current user
Subscribed user
Cancel all subscriptions
Subscription ID
Do not show success message
Create a subscription item
Subscription ID
Plan name
Quantity
Update a subscription item
Subscription Item ID
Plan name
Quantity
Delete a subscription item
Subscription Item ID
Make a card new default
Credit Card ID
Delete a credit card
Credit Card ID
Retrieve all user invoices
Set a user's credit balance
User
Amount
Adjust a user's credit balance
User
Type of adjustment
Amount
Currency
Transfer to seller
Amount
Currency
Destination seller
Description
Source charge ID
Transfer group
Create payout
Amount
Currency
Enter API Key
Setup
Live Client ID
Live Secret Key
Live Publishable Key
Client ID - development
Secret Key - development
Publishable Key - development
Image for Stripe Checkout
Name for Stripe Checkout
Stripe Checkout Version
Collect the user's address with Checkout
FAQ
Stripe and Privacy Rules
Stripe and iFrames (v2)
Android Webview (v2)
Test Mode Plans vs Live Mode Plans
Language Support (v2)