Subscription & Billing Policy
Subscription & Billing Policy — FishFinder Engine™
Status: DRAFT — for attorney review. Effective Date: [Effective Date] Version: 0.1-draft Read alongside: EULA / Terms of Use, Privacy Policy, Mobile App Terms Addendum.
This Subscription & Billing Policy explains how FishFinder Engine™ subscriptions, trials, quotas, and refunds work. It is incorporated into the EULA / Terms of Use.
1. Tiers and prices (introductory "beta launch" pricing)
| Tier | Price | Billing cycle | Trial | What it includes |
|---|---|---|---|---|
| Free | $0 | n/a | n/a | Lake search, lake maps, lake profiles (morphology + species + invasives + regulations), AI lake report card (read-only), 5 AI search prompts/day |
| Pro | $9.99 / month (beta launch price) | Monthly via Stripe (web) | None | Everything in Free, plus: full survey data, FishFinder cross-lake comparison, species profiles, stocking reports, AI species recommendations, AI fishing guides, AI natural-language search (25 prompts/day) |
| Elite | $19.99 / month (beta launch price) | Monthly via Stripe (web) | 1-day no-credit-card Elite trial (once per account) | Everything in Pro, plus: Data Explorer, Fish Index, Personal Hub (catch logging with photos, favorites, bookmarks, lure library, saved searches, public profile, activity feed), AI follow-up Q&A (30 prompts/calendar month), unlimited AI natural-language search |
The current canonical feature list is in app/core/access.py (PLAN_TIERS).
If this document and the application disagree, the application is authoritative
and we will correct this document. [Attorney Review Needed] to confirm
which side should be authoritative going forward.
2. Beta pricing and rate changes
Pro and Elite are sold at introductory ("beta launch") prices. We may raise prices at any time. We will give existing paid subscribers at least 30 days' notice before any rate change, by email and via in-app notice. If you do not want the new rate, you can cancel before the change takes effect and you will not be charged the new rate.
We do not guarantee that beta-pricing rates will be honored indefinitely for any class of subscribers. [Attorney Review Needed] — set whether "beta lifetime" is offered to early subscribers, and the exact notice period.
3. The 1-day Elite trial
- Once per account.
- No credit card required.
- Activates immediately upon trial start.
- Lasts 24 hours from activation, after which the account automatically reverts to Free.
- The trial is non-renewable; you cannot start a second trial on the same account.
- The trial does not extend, prorate, or apply to any later paid subscription.
- The trial may be revoked at our discretion if it is being abused (for example, by creating multiple accounts to chain trials).
4. Quotas and feature limits
Some features are subject to quotas to manage AI usage costs and abuse:
| Feature | Free | Pro | Elite |
|---|---|---|---|
| AI natural-language search ("ai_prompt") | 5 / day | 25 / day | unlimited |
| AI follow-up Q&A | not available | not available | 30 / calendar month |
| Photos per catch | n/a | n/a | up to 5 (10 MB each) |
| SMS Trip Companion outbound | (per-tier limits TBD; current cap is 15 messages / day / user; 25 AI replies / trip) | same | same |
Quotas reset at the start of the next applicable period (daily quotas at
local midnight; monthly quotas at the first of the month). Current quotas
for your account can be viewed at GET /api/me/features (visible inside
your account page when implemented).
We may add, change, or remove quotas at any time. Material changes will be announced before they take effect.
5. Admin and promotional accounts
We may grant unpaid Pro or Elite access to staff, beta testers, partners,
guides, content creators, or for promotional reasons. These accounts are
flagged internally with tier_override = true so that Stripe webhooks do
not downgrade them. If you are the holder of a comp account, you are still
bound by these Terms and may not use your access for commercial republication
of the Service.
6. How billing works
Web (Stripe). Web subscriptions are processed by Stripe. We do not see
or store your credit-card number. When you subscribe, we receive a Stripe
customer ID and subscription ID, and we update your account tier when we
receive Stripe webhook events (checkout.completed,
subscription.updated, subscription.deleted, payment.failed).
iOS / watchOS (StoreKit, when available). If we sell Elite directly inside the iOS or Apple Watch apps in the future, those purchases will be processed through Apple's StoreKit and governed by Apple's billing rules. Cancellation, refunds, family-sharing eligibility, and subscription management will be handled through your Apple ID account settings.
Android / Google Play (when available). Same general rule applies — Google's billing terms govern.
[Attorney Review Needed] — confirm whether the iOS app currently sells subscriptions through StoreKit or only routes to the web checkout. Apple's guideline 3.1.1 requires StoreKit for any digital subscription consumed in the iOS app.
7. Cancellation, downgrade, and access through end of period
You may cancel your paid subscription at any time:
- Web (Stripe): through your account page or the Stripe customer portal.
- iOS / Watch: through your Apple ID subscription settings.
- Android: through your Google Play subscription settings.
Cancellation takes effect at the end of your current paid period. You keep access until then. We do not automatically pro-rate or refund partial periods on cancellation. After expiration, your account reverts to Free.
If you upgrade or downgrade mid-cycle, the change is handled by the billing processor's prorating rules (Stripe's default behavior). We do not modify those rules.
8. Refunds
Except as required by law, paid fees are non-refundable. Refunds for purchases made through Apple or Google must be requested through the respective app store, per their terms. Refunds for purchases made through Stripe may, at our discretion, be issued for billing errors. Email [Contact Email] within 14 days of the disputed charge to request review.
[Attorney Review Needed] — set the refund posture (none / discretionary / prorated / 7-day money-back / etc.) and how to handle service outages.
9. Payment failures
If a recurring Stripe payment fails, Stripe will retry per its standard schedule and email you. If retries continue to fail, Stripe will mark the subscription as past-due. As of the Effective Date we do not auto-suspend or auto-downgrade after payment failure; access continues until Stripe cancels the subscription. We may change this policy. [Attorney Review Needed] — define when access is suspended or terminated for non-payment.
10. No catch-logging promotion in effect
This draft removes any promotion that ties Elite access to the number of
catches logged. The pricing page may still display such a promotion (lines
112–139 of app/templates/pricing.html), but as of the Effective Date the
backend enforcement does not exist. Until the enforcement is built and
audited, the operator agrees not to display the promotion publicly. Any
catches you have already logged are not redeemable for Elite credit.
[Attorney Review Needed] — decide before launch: remove the UI block, or build and audit the enforcement.
11. Taxes
Prices listed are in U.S. dollars and exclude any applicable sales, use, or VAT taxes that may be added at checkout per your jurisdiction. Stripe and the app stores handle tax calculation where applicable.
12. Authorization to charge
By providing a payment method, you authorize us (and the applicable billing processor) to charge that method for the subscription you select on a recurring basis until you cancel.
13. Notice of price changes
We will notify you at the email address on file at least 30 days before any price increase. If you do not cancel before the new price takes effect, you will be billed at the new price on your next renewal date.
14. Changes to this policy
We may update this policy. Material changes will be posted at
/billing and announced via email and/or in-app notice.
[Attorney Review Needed] — confirm refund posture, beta-pricing grandfathering, payment-failure suspension policy, App Store IAP requirement, and resolve the catch-logging promotion before launch.
This document is a non-attorney first pass and is not legal advice.