Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
56 changes: 54 additions & 2 deletions docs/accounts-billing/payments-billing.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@

---
slug: payment-billing
title: Payments and Billing
tags: []
toc_max_heading_level: 5
sidebar_position: 2
hide_table_of_contents: true
---

# Payments & Billing
This section contains information on the payment methods we accept and how to change your payment method.
Expand Down Expand Up @@ -50,4 +57,49 @@ You can change your default payment method for next month's purchase using these

:::note
You can change the default payment method by selecting the three dots next to the payment method and then selecting **Make Default.**
:::
:::

## FAQs

<details>
<summary>Can I add a Tax ID (e.g. VAT) to my invoice?</summary>

Yes! You can add a Tax Identification Number (VAT ID) to your FlutterFlow account so that it appears on **all future invoices**.

To do this, please contact our support team at [[email protected]](mailto:[email protected]) with the following information:

- VAT ID
- Company Name
- Company Address

Our team will verify your details and confirm once the VAT ID has been applied.

:::note
Due to Stripe’s current limitations, we cannot update past invoices with your VAT ID. It will only apply to **future invoices**.
:::

</details>

<details>
<summary>My payment failed, how can I change to a different credit card?</summary>

Failed subscription payments happen from time to time. These steps will help you troubleshoot the issue and update your payment method.

:::tip
The most common causes for failed payments are insufficient funds, payment blocked by your credit card provider, or an expired card. If your payment fails, please reach out to your credit card provider for more details on why the payment failed.
:::

### Steps to update your payment method:

1. Go to the **My Account** page.
2. Select **Manage Billing**.
3. Scroll to **Invoice History**.
4. Locate the invoice that failed (it should be at the top) and click the **edit icon**.

![](imgs/20250430121458849389.png)

5. Enter your updated payment information.

Once the transaction is successfully completed, your account access will be restored.

</details>
62 changes: 60 additions & 2 deletions docs/accounts-billing/subscriptions/flutterflow-for-teams.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,66 @@ To remove a user from the teams, click on the **red cancel button** and select *

## FAQs

#### Can I reduce my Teams plan to one seat?
<details>
<summary><strong>Can I reduce my Teams plan to one seat?</strong></summary>

No, you can't. The minimum requirement is two seats, which includes one for the owner's pro plan + an additional team seat.

</details>

<details>
<summary><strong>How do I upgrade my FlutterFlow account from Pro to Teams?</strong></summary>

To upgrade from a Pro account to a Teams account, follow these steps:

1. **Navigate to My Organization**
- Log into your FlutterFlow account.
- On the left-hand side of your dashboard, click **My Organization**.

2. **Create a Team**
- Inside **My Organization**, select **Create Team**.
- Follow the prompts to set up your team (e.g., choose a name).

3. **Subscribe to a Teams Account**
- Once your team is created, click **Subscribe** within the same section.

4. **Select the Number of Seats**
- Choose the number of team members (seats) you want.
- You can add more seats later if your team grows.

5. **Complete the Upgrade**
- Confirm your details and complete payment.

</details>

<details>
<summary><strong>Who becomes the team owner after upgrading?</strong></summary>

The person who initiates the upgrade from Pro to Teams becomes the **team owner**.

The owner can:
- Set permissions
- Manage billing
- Invite or manage members

</details>

<details>
<summary><strong>What are the benefits of upgrading to Teams?</strong></summary>

- Collaboration tools designed for teams
- Ability to invite and manage multiple members
- Centralized billing and permissions control
- Scalable seat-based subscription (grow with your team)

</details>

<details>
<summary><strong>Where can I get help if I run into issues upgrading?</strong></summary>

If you encounter problems upgrading, reach out to the **FlutterFlow Support Team** for assistance.

</details>

No, you can't. The minimum requirement is two seats, which includes one for the owner's pro plan + an additional team seat.


102 changes: 101 additions & 1 deletion docs/accounts-billing/subscriptions/subscriptions.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
slug: subscriptions
title: Subscriptions
tags: []
tags: ['subscription', 'billing', 'plans', 'upgrade', 'downgrade', 'cancel', 'free trial', 'pricing']
toc_max_heading_level: 5
sidebar_position: 0
---
Expand Down Expand Up @@ -76,3 +76,103 @@ You can confirm your account has been canceled from the My Plan section of the *

![img_3.png](../imgs/img_3.png)

## FAQs

<details>
<summary>How do I downgrade from a Teams plan to a Pro (or other) plan?</summary>

The best way to downgrade from a Teams plan to a different plan is to let your current subscription expire. You can do this by canceling your account to initiate the process.

1. Click on your name in the bottom-right corner of the screen at [app.flutterflow.io](https://app.flutterflow.io).

![](../imgs/20250430121153659010.png)

2. From the **My Account** page, click **Cancel** in the **My Plan** section.

![](../imgs/20250430121153891955.png)

3. After confirming your cancellation, you will see the expiration date of your subscription displayed in the **My Plan** section.

![](../imgs/20250430121154120311.png)

On the date your plan expires, your account will automatically switch to a **Free plan**. From there, you can upgrade to a **Pro** (or any other plan) by clicking the **Upgrade** button in the bottom-right corner.

If you need to downgrade from Teams to Pro *immediately*, please contact us at **[email protected]**.

</details>

<details>
<summary>How do I cancel my FlutterFlow subscription?</summary>

You can cancel your subscription at any time. Once canceled, you will still have access to paid features until your current billing cycle ends. After that, your account will automatically be converted to a **Free plan**.

### Steps to cancel your subscription

1. Log in to **[FlutterFlow](https://app.flutterflow.io)**.
2. Click on your **name/profile** in the bottom-right corner.
3. On the **My Account** page, go to the **My Plan** section.
4. Click **Cancel Subscription**.
![](../imgs/20250430121447630867.png)
5. Complete the **Cancelation Survey** and select **Cancel Subscription** to confirm.

Once complete, you’ll see a confirmation. The **My Plan** section will display:
> **Active until [date]**

This indicates your plan will remain active until the end of the billing cycle, after which your account will downgrade to the Free plan.

</details>

<details>
<summary>How do I upgrade to a paid plan?</summary>

To change your plan type, follow these steps:

1. Login to your account and visit **[app.flutterflow.io](https://app.flutterflow.io)**.
2. In the bottom right-hand corner, click **Upgrade**.

![](../imgs/20250430121445951298.png)

3. In the popup, choose your preferred plan. You can select **Monthly** or **Annual** billing.
- Annual plans save up to 28%.
- A 14-day free trial is available for new users on personal plans (Teams plans are not eligible).

![](../imgs/20250430121446291042.png)

4. Complete the payment page.
- A card is required, but you can cancel anytime.
- Trial users will see **Total due today = $0**.

![](../imgs/20250430121446674539.png)

5. Once confirmed, you’ll return to [app.flutterflow.io](https://app.flutterflow.io), where your new plan type will be shown in the bottom right corner.

</details>

<details>
<summary>What happens when I downgrade from a paid plan to a free plan?</summary>

When you cancel your FlutterFlow subscription, your account will automatically change to a **Free account**.

You will still be able to access the apps you created and make changes inside of FlutterFlow.

However, you won't be able to access any premium features such as:

- Custom APIs
- GitHub integration
- Codemagic
- Code downloads

Additionally, premium features will no longer work in **Preview** and **Run Mode**.

:::note
Downgrading from a paid plan to a free plan will **not** affect apps you’ve already deployed to Google Play or the App Store.
Your projects remain stable, and you can upgrade again at any time to regain access to premium features.
:::

</details>






Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
43 changes: 42 additions & 1 deletion docs/ff-integrations/payments/stripe.md
Original file line number Diff line number Diff line change
Expand Up @@ -270,4 +270,45 @@ Before you release the app to production, complete the following steps:

![unknown-error-occured](imgs/unknown-error-occured.avif)
</p>
</details>
</details>

<details>
<summary>How do I check if a Stripe Payment succeeds or fails?</summary>

### Understanding Action Output Variables in FlutterFlow
FlutterFlow actions allow you to define an **action output variable**, which stores the return value after execution. This is especially useful for tracking the status of payment operations.

### Default `paymentId` in Stripe Actions
When you use Stripe payment actions, FlutterFlow automatically assigns a default variable named **`paymentId`**.
This variable indicates the payment’s status.

- **Non-empty `paymentId`** → Payment succeeded.
- **Empty `paymentId`** → Payment failed.

![](imgs/20250430121315284187.png)

### Checking Payment Status
After a Stripe payment action runs:
- If `paymentId` is **set and non-empty**, it means Stripe returned a valid identifier and the transaction succeeded.
- If `paymentId` is **empty**, the transaction failed.

![](imgs/20250430121315556496.png)

![](imgs/20250430121315814333.png)

### Next Steps Based on Status
**If Payment Succeeds:**
- Show a confirmation message (e.g., Snack Bar).
- Navigate the user to a **success screen**.
- Trigger additional success actions like updating a database or sending an email.

**If Payment Fails:**
- Prompt the user to retry payment.
- Reset payment inputs or guide them through the process again.
- Provide feedback to help them understand what went wrong.

![](imgs/20250430121316063461.png)

By leveraging FlutterFlow’s **action output variables**, you can handle Stripe payment outcomes gracefully. This ensures your app delivers clear feedback and a smooth payment experience for your users.

</details>
3 changes: 3 additions & 0 deletions docs/troubleshooting/payments-billing/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"label": "Payment & Billing"
}
96 changes: 96 additions & 0 deletions docs/troubleshooting/payments-billing/revenuecat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
---
keywords: ['testing', 'revenuecat', 'error']
slug: revenuecat-integration-guide
title: Resolve RevenueCat Integration Errors
---

# Resolve RevenueCat Integration Errors
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how is this payments and billing?


This article outlines common issues encountered during RevenueCat integration and provides steps to ensure correct setup and testing of in-app subscriptions.

:::info[Prerequisites]
- Your app must be registered in RevenueCat.
- A valid FlutterFlow project with RevenueCat integration enabled.
- Subscription products must be set up in Google Play Console and App Store Connect.
:::

**Steps to Set Up and Verify RevenueCat Integration:**

1. Publish App for Store-Based Testing

RevenueCat in-app purchases require apps to be submitted to the app stores.

- Google Play Store

- Create and submit a release via **Google Play Console**.
- Use the **Internal Testing** track for quicker access.
- Upload the APK or App Bundle and submit it for review.
- Ensure testers are added to your internal test track.

- Apple App Store

- Submit the app using **App Store Connect**.
- Use **TestFlight** to test without a full App Store review.
- Ensure the app is built and uploaded using Xcode.

2. **Configure Subscription Products**

- Create unique product identifiers in Google Play Console and App Store Connect.
- Link these products to **Entitlements** and **Offerings** inside RevenueCat.
- Follow the **[RevenueCat Launch Checklist](https://docs.revenuecat.com/docs/launch-checklist)** for detailed setup.

3. **Set Up RevenueCat Dashboard**

- Register your app on the **RevenueCat dashboard**.
- Add product identifiers that match those in the app stores.
- Ensure correct **Entitlements**, **Products**, and **Offerings** are linked.
- Connect app store credentials (API access for App Store Connect, service account for Google Play).

4. **Enable Integration in FlutterFlow**

- Open **Settings & Integrations → RevenueCat** in FlutterFlow.
- Enter the correct **RevenueCat API keys** for both Android and iOS.
- Match the entitlement names and product IDs exactly.

5. **Test in Native Environments Only**

RevenueCat does **not** function in **FlutterFlow Test Mode** or **Run Mode**.

- **Emulator or Simulator Testing**

- **Android**: Use an emulator with Google Play Services and a signed-in tester account.
- **iOS**: Use a simulator with a sandbox Apple ID.

- **Real Device Testing**

- Test in **Google Play Internal Testing** or **TestFlight**.
- This provides the most accurate representation of production environments.

- **Check Logs and Errors**

- Use **TestFlight logs** or **Crashlytics** to debug errors.
- Enable **debug logging** in the `purchases_flutter` plugin for insights.
- Ensure product and entitlement identifiers are consistent.

6. **Common Causes of Integration Errors**

- Mismatched product identifiers between stores, RevenueCat, and FlutterFlow.
- Store credentials not linked or expired in RevenueCat.
- Testing in unsupported environments (e.g., web or preview mode).

:::tip
For best results:
- Keep identifiers consistent across all platforms.
- Test only in environments that reflect production.
- Regularly update the `purchases_flutter` package.
:::

:::note
RevenueCat supports subscriptions only in published or store-signed environments. Web or test mode usage will not simulate purchases correctly.
:::

:::info[Additional Resources]
- [**RevenueCat Integration Docs**](/integrations/payments/revenuecat/)
- [**In-App Subscriptions Using RevenueCat**](https://blog.flutterflow.io/in-app-subscriptions-using-revenue-cat/)
- [**RevenueCat Launch Checklist**](https://docs.revenuecat.com/docs/launch-checklist)
:::