Billing and Payment Issues

Last updated March 20, 2026


Overview

LoopString uses Stripe for payment processing. Your subscription state is stored in Firestore at customers/{uid} and synced to the app in real time. Most billing issues resolve within a few minutes after a successful payment, but some require manual steps.


Payment Failed

Symptoms

A red banner appears at the top of the app reading "Payment failed — update your payment method within 7 days to avoid service interruption." Your account is marked as delinquent in the billing system.

What happens

When a Stripe invoice fails (expired card, insufficient funds, bank decline), Stripe marks your subscription as past due and the app sets a delinquent flag on your account. You have a 7-day window to update your payment method before service is interrupted.

Resolution steps

  1. Click Update payment in the red banner, or navigate to Settings > Billing and click Manage subscription.
  2. This opens the Stripe Customer Portal in a new tab.
  3. In the portal, go to Payment methods and add or update a card.
  4. Stripe will automatically retry the failed invoice within a few minutes.
  5. Once the invoice is paid, the delinquent banner disappears automatically — no page refresh needed.

If the portal does not open

Some browsers block pop-ups or new tabs opened after an async operation. If the portal tab does not appear:

  • Check your browser's pop-up blocker notification bar and allow the site.
  • Try the button again — the app pre-opens the tab synchronously to avoid most blockers.
  • On iOS Safari, disable any content blockers temporarily.

If the banner persists after payment

The banner clears when the Stripe webhook invoice.paid fires and updates your Firestore record. This normally takes under a minute. If it persists after 5 minutes:

  • Sign out and sign back in to force a fresh billing snapshot.
  • If still showing, contact support at support@loopstring.io with your account email.

Subscription Tier Not Updating After Payment

Symptoms

You completed a Stripe checkout and your card was charged, but the app still shows your old plan (e.g., Free instead of Hobby).

What happens

Stripe sends a webhook to a Firebase Cloud Function that updates the customers/{uid} Firestore document. The app subscribes to this document in real time. If the webhook is delayed or the update has not propagated yet, the app will continue showing the old tier.

Resolution steps

  1. Wait up to 2 minutes. Webhook delivery and Firestore propagation are usually near-instant but can lag under load.
  2. Sign out and sign back in. The billing subscription re-attaches on login and will pick up the latest tier.
  3. Hard-refresh the page (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows/Linux).
  4. Navigate to Settings > Billing to verify what tier the app is reporting versus what Stripe shows in the portal.
  5. If the tier is correct in the Stripe portal but wrong in the app after 10 minutes, contact support at support@loopstring.io. Include your account email and the Stripe subscription ID visible in the portal.

Wrong Tier Shown in Dashboard

Symptoms

The Billing page shows a different plan than what you believe you subscribed to, or the plan name does not match your Stripe invoice.

Common causes

  • You subscribed on a different account (different email address). Check all email addresses you may have used to sign up.
  • A previous subscription was cancelled and a new one was started on a different tier.
  • The subscription was created in Stripe test mode (used during development) and does not affect the live app.

Resolution steps

  1. Open Settings > Billing and note the plan name shown.
  2. Click Manage subscription to open the Stripe Customer Portal.
  3. In the portal, verify the active plan and its billing interval.
  4. If the portal shows a different plan than the app, sign out and back in to force a billing refresh.
  5. If you see no subscription in the portal but were charged, the payment may have been on a different Stripe account. Contact support with the charge confirmation email.

Cannot Access Paid Features After Payment

Symptoms

You upgraded your plan but features that should be unlocked on your tier still show an upgrade prompt or are blocked.

How feature gating works

Features are gated by the tier field read from the Firestore customers/{uid} document at login. The app checks tier on every protected feature render. If the tier has not updated yet, the gate still blocks access.

Resolution steps

  1. Navigate to Settings > Billing and confirm the correct tier is displayed there.
  2. If the correct tier is shown on the Billing page, sign out and back in to force all feature gates to re-evaluate with the new tier.
  3. Hard-refresh the page after signing back in.
  4. If the Billing page itself shows the old tier, follow the steps in the Subscription Tier Not Updating After Payment section above.
  5. If you have an active free trial that expired, the app will block paid-tier features until a subscription is active even if the tier field says free. Check whether a "trial expired" message appears anywhere on the Billing page.

Sensor slot and device limits

After upgrading, new slot and device limits take effect immediately once the tier updates. If you were blocked from adding sensors or devices, try again after confirming the tier has updated on the Billing page.


Annual vs Monthly Billing Confusion

How billing intervals work

LoopString offers both monthly and annual billing for paid tiers. Annual billing is a lump-sum charge once per year and includes a discount compared to twelve monthly payments.

Annual pricing:

  • Hobby: $58.80/yr (vs $84/yr monthly)
  • Maker: $168/yr (vs $240/yr monthly)
  • Pro: $369.60/yr (vs $528/yr monthly)
  • Business: $1,260/yr (vs $1,800/yr monthly)

Switching between monthly and annual

  1. Go to Settings > Billing and click Manage subscription.
  2. In the Stripe Customer Portal, locate the Plan section.
  3. Use the Update plan option to switch intervals. Stripe will prorate the change.
  4. Changes take effect at the next billing date unless you choose immediate switching in the portal.

I was charged annually but expected monthly

The interval (monthly or annual) is selected during the initial checkout flow on the pricing page. If you selected annual and were billed for the full year, this is the correct behavior. To switch to monthly, use the Stripe portal and Stripe will calculate the prorated credit.

My annual subscription renewed and I was charged

Annual subscriptions auto-renew at the end of the billing year. Stripe sends a renewal notification email 7 days before the renewal date to the email address on your account. To cancel before renewal, see the Cancellation section below.


Cancellation

How to cancel

  1. Go to Settings > Billing and click Manage subscription.
  2. In the Stripe Customer Portal, click Cancel plan.
  3. Choose whether to cancel immediately or at the end of the current billing period. Cancellation at period end is recommended — you retain access until the period expires.

What happens after cancellation

After the subscription ends, your account reverts to the Free tier. The Free tier includes:

  • 1 device
  • 8 sensor slots
  • 1-day data retention
  • 60-second minimum sample rate

Sensor data older than 1 day will no longer be accessible from the dashboard once you are on the Free tier. The data is not deleted immediately — resubscribing within a short window may restore access, but this is not guaranteed.

Refunds

LoopString does not offer self-service refunds. If you believe you are owed a refund (e.g., duplicate charge, accidental annual subscription), contact support at support@loopstring.io with your account email and the relevant Stripe charge ID from your invoice email.


Subscription Slot and Device Limit Enforcement

Sensor slot limit reached

Each tier includes a fixed number of sensor slots. When a Configurator deployment would exceed your slot count, the deployment is blocked with a slot limit error. The slot count is determined by the number of sensor signals in your active Node-RED flow.

To resolve:

  1. Remove unused sensors from your Configurator draft and redeploy.
  2. Or upgrade to a higher tier on the Billing page.

Sensor slot counts by tier: Free (8), Hobby (20), Maker (60), Pro (200), Business (500), Enterprise (unlimited).

Device limit reached

Each tier allows a maximum number of connected devices. When you attempt to add a new device beyond your limit, the add-device flow shows a limit warning.

Device limits by tier: Free (1), Hobby (2), Maker (5), Pro (15), Business (50), Enterprise (999).

To add more devices, upgrade on the Billing page.


Billing Page Shows No Subscription

Symptoms

The Billing page shows the Free plan and there is no Manage subscription button, but you believe you have an active paid subscription.

Causes

  • The payment was made with a different email address than your current login.
  • The customers/{uid} Firestore document was not created during onboarding (rare edge case during account provisioning).

Resolution steps

  1. Check that you are signed in with the correct account. Your account email is visible in Settings > Account.
  2. Search your email inbox for a Stripe receipt from LoopString. The receipt contains the email used for the charge.
  3. If the charge email differs from your login email, contact support at support@loopstring.io so we can link the Stripe customer to your account.

Contacting Support

For billing issues not resolved by the steps above:

  • Email: support@loopstring.io
  • Include your account email address, a description of the issue, and any relevant Stripe invoice or charge IDs from your receipt emails.
  • For urgent payment failures with service impact, mention that in the subject line for priority handling.
billingstripesubscription