diff --git a/docs/accounts-billing/imgs/20250430121153659010.png b/docs/accounts-billing/imgs/20250430121153659010.png new file mode 100644 index 00000000..f99af59d Binary files /dev/null and b/docs/accounts-billing/imgs/20250430121153659010.png differ diff --git a/docs/accounts-billing/imgs/20250430121153891955.png b/docs/accounts-billing/imgs/20250430121153891955.png new file mode 100644 index 00000000..382fe54b Binary files /dev/null and b/docs/accounts-billing/imgs/20250430121153891955.png differ diff --git a/docs/accounts-billing/imgs/20250430121154120311.png b/docs/accounts-billing/imgs/20250430121154120311.png new file mode 100644 index 00000000..768dc546 Binary files /dev/null and b/docs/accounts-billing/imgs/20250430121154120311.png differ diff --git a/docs/accounts-billing/imgs/20250430121445951298.png b/docs/accounts-billing/imgs/20250430121445951298.png new file mode 100644 index 00000000..a57fccc5 Binary files /dev/null and b/docs/accounts-billing/imgs/20250430121445951298.png differ diff --git a/docs/accounts-billing/imgs/20250430121446291042.png b/docs/accounts-billing/imgs/20250430121446291042.png new file mode 100644 index 00000000..80a2389e Binary files /dev/null and b/docs/accounts-billing/imgs/20250430121446291042.png differ diff --git a/docs/accounts-billing/imgs/20250430121446674539.png b/docs/accounts-billing/imgs/20250430121446674539.png new file mode 100644 index 00000000..b228c56e Binary files /dev/null and b/docs/accounts-billing/imgs/20250430121446674539.png differ diff --git a/docs/accounts-billing/imgs/20250430121447630867.png b/docs/accounts-billing/imgs/20250430121447630867.png new file mode 100644 index 00000000..742b4232 Binary files /dev/null and b/docs/accounts-billing/imgs/20250430121447630867.png differ diff --git a/docs/accounts-billing/imgs/20250430121458849389.png b/docs/accounts-billing/imgs/20250430121458849389.png new file mode 100644 index 00000000..614585b9 Binary files /dev/null and b/docs/accounts-billing/imgs/20250430121458849389.png differ diff --git a/docs/accounts-billing/payments-billing.md b/docs/accounts-billing/payments-billing.md index b92af815..bf1addb7 100644 --- a/docs/accounts-billing/payments-billing.md +++ b/docs/accounts-billing/payments-billing.md @@ -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. @@ -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.** -::: \ No newline at end of file +::: + +## FAQs + +
+Can I add a Tax ID (e.g. VAT) to my invoice? + +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 [support@flutterflow.io](mailto:support@flutterflow.io) 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**. +::: + +
+ +
+My payment failed, how can I change to a different credit card? + +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. + +
diff --git a/docs/accounts-billing/subscriptions/flutterflow-for-teams.md b/docs/accounts-billing/subscriptions/flutterflow-for-teams.md index 536b2cd0..597739c9 100644 --- a/docs/accounts-billing/subscriptions/flutterflow-for-teams.md +++ b/docs/accounts-billing/subscriptions/flutterflow-for-teams.md @@ -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? +
+Can I reduce my Teams plan to one seat? + +No, you can't. The minimum requirement is two seats, which includes one for the owner's pro plan + an additional team seat. + +
+ +
+How do I upgrade my FlutterFlow account from Pro to Teams? + +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. + +
+ +
+Who becomes the team owner after upgrading? + +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 + +
+ +
+What are the benefits of upgrading to Teams? + +- 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) + +
+ +
+Where can I get help if I run into issues upgrading? + +If you encounter problems upgrading, reach out to the **FlutterFlow Support Team** for assistance. + +
-No, you can't. The minimum requirement is two seats, which includes one for the owner's pro plan + an additional team seat. diff --git a/docs/accounts-billing/subscriptions/subscriptions.md b/docs/accounts-billing/subscriptions/subscriptions.md index 92d69db2..0894eb5f 100644 --- a/docs/accounts-billing/subscriptions/subscriptions.md +++ b/docs/accounts-billing/subscriptions/subscriptions.md @@ -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 --- @@ -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 + +
+How do I downgrade from a Teams plan to a Pro (or other) plan? + +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 **support@flutterflow.io**. + +
+ +
+How do I cancel my FlutterFlow subscription? + +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. + +
+ +
+How do I upgrade to a paid plan? + +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. + +
+ +
+What happens when I downgrade from a paid plan to a free plan? + +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. +::: + +
+ + + + + + diff --git a/docs/ff-integrations/payments/imgs/20250430121315284187.png b/docs/ff-integrations/payments/imgs/20250430121315284187.png new file mode 100644 index 00000000..933e917d Binary files /dev/null and b/docs/ff-integrations/payments/imgs/20250430121315284187.png differ diff --git a/docs/ff-integrations/payments/imgs/20250430121315556496.png b/docs/ff-integrations/payments/imgs/20250430121315556496.png new file mode 100644 index 00000000..6922ab10 Binary files /dev/null and b/docs/ff-integrations/payments/imgs/20250430121315556496.png differ diff --git a/docs/ff-integrations/payments/imgs/20250430121315814333.png b/docs/ff-integrations/payments/imgs/20250430121315814333.png new file mode 100644 index 00000000..9b849513 Binary files /dev/null and b/docs/ff-integrations/payments/imgs/20250430121315814333.png differ diff --git a/docs/ff-integrations/payments/imgs/20250430121316063461.png b/docs/ff-integrations/payments/imgs/20250430121316063461.png new file mode 100644 index 00000000..7293d6c6 Binary files /dev/null and b/docs/ff-integrations/payments/imgs/20250430121316063461.png differ diff --git a/docs/ff-integrations/payments/stripe.md b/docs/ff-integrations/payments/stripe.md index 0d5c6e1d..f49fd510 100644 --- a/docs/ff-integrations/payments/stripe.md +++ b/docs/ff-integrations/payments/stripe.md @@ -270,4 +270,45 @@ Before you release the app to production, complete the following steps: ![unknown-error-occured](imgs/unknown-error-occured.avif)

- \ No newline at end of file + + +
+How do I check if a Stripe Payment succeeds or fails? + +### 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. + +
diff --git a/docs/troubleshooting/payments-billing/_category_.json b/docs/troubleshooting/payments-billing/_category_.json new file mode 100644 index 00000000..877c409d --- /dev/null +++ b/docs/troubleshooting/payments-billing/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Payment & Billing" +} \ No newline at end of file diff --git a/docs/troubleshooting/payments-billing/revenuecat.md b/docs/troubleshooting/payments-billing/revenuecat.md new file mode 100644 index 00000000..3f16e80d --- /dev/null +++ b/docs/troubleshooting/payments-billing/revenuecat.md @@ -0,0 +1,96 @@ +--- +keywords: ['testing', 'revenuecat', 'error'] +slug: revenuecat-integration-guide +title: Resolve RevenueCat Integration Errors +--- + +# Resolve RevenueCat Integration Errors + +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) +::: \ No newline at end of file