# Verdienmodel & pricing — formele vastlegging

> Peildatum: 2026-08-05 (§3 en §8 bijgewerkt met de definitieve prijs-/trial-besluiten; de rest is van 2026-07-11). Dit is het vastleggingsdocument voor het geldende verdienmodel: wat besloten is (met datum en bron), wat het verving, wat er in code van terug te zien is, en wat nog open staat. Bij tegenspraak tussen oudere documenten geldt de besluitgeschiedenis-tabel onderaan.

## 1. Geldend model in één alinea

Tendlo is **freemium, abonnement-only** (geen lifetime, geen ads, ooit). Gratis = de dagelijkse kern + een handvol modules, volledig lokaal en met handmatige invoer; **Plus** = de overige modules, cloud-/gezin-sync én alle AI — ook AI binnen gratis modules. Plus wordt per huishouden verkocht (Family), met een Solo-variant. Prijzen zijn besloten maar staan nog niet in de stores; enforcement staat in de app nog uit.

## 2. Freemium-grens (geldend besluit 2026-06-17)

**Scenario B "compleet gratis-gevoel" met 2 owner-correcties** (Recepten en Sportkalender blijven Plus), besloten 2026-06-17 (`../archive/superseded/2026-07-11-docs-overhaul/docs/proposals/01-module-tiering.html`):

- **Gratis (9):** Vandaag · Taken · Agenda · Boodschappen (de 4 kern-surfaces, buiten de registry) + Maaltijden · Verjaardagen · Schoolvakanties · Afvalkalender · Bewaarlijsten (5 registry-modules).
- **Plus (19 van de 28 regels in de tiering-matrix van 2026-06-17):** de 17 toenmalige overige registry-modules, plus AI en cloud/gezin-sync als aparte Plus-regels. Sindsdien zijn er registry-modules bijgekomen; de code-telling per 2026-07-11 is **5 Free / 23 Plus van 28 registry-modules** (zie hieronder) — de gratis set is ongewijzigd.

**In code geverifieerd (2026-07-11):** de 5 gratis registry-modules dragen `tier: ModuleTier.free` (`lib/features/{bewaarlijsten,planning,gezin}/*_module.dart`); registry-default is Plus (`lib/core/modules/module_descriptor.dart`); de 4 kern-tabs vallen buiten de registry en zijn altijd gratis (`lib/core/entitlement/plus_entitlement.dart`). Telling in code: 28 registry-modules, 5 Free / 23 Plus.

Aanvullende besluiten op de grens:

- **Free = local-only; cloud-sync is zélf een Plus-feature** (owner 2026-06-18, `../archive/superseded/2026-07-11-docs-overhaul/docs/OPEN-POINTS-2026-06-18.md` §A1).
- **AI valt altijd onder Plus, ook binnen gratis modules** — module-toegang staat los van AI-toegang; gratis modules = handmatige invoer (owner 2026-07-06, [`../design/tendlo-release-assessment.html`](../design/tendlo-release-assessment.html) §05).
- **Tiering is runtime-instelbaar zonder release** via de Supabase-tabel `module_tier_overrides` (besluit B2 2026-06-18; implementatie `lib/core/entitlement/module_tier_overrides.dart`).
- **Plus is per gezin** (entitlement per household), met data-migratie bij invite-merge waar mogelijk (2026-06-18, [invite-existing-user.md, 🗄 gearchiveerd](../archive/superseded/2026-07-11-docs-overhaul/docs/design/invite-existing-user.md)).

⚠️ **Bekende formulerings-drift:** enkele recentere plandocumenten en het projectgeheugen hanteren de strengere lezing "alleen de 4 kern-surfaces gratis, alle registry-modules Plus" (het besluit van 2026-06-16, één dag later herzien). De code op main en het tiering-beslisstuk van 2026-06-17 zijn leidend: **9 gratis**. OPEN-POINTS B2 (2026-06-18) vroeg al om formele herbevestiging van de modulelijn — die staat nog open (open vraag hieronder).

## 3. Prijzen (besloten 2026-06-17, herbevestigd 2026-07-06, **definitief bevestigd 2026-08-05**; nog niet in stores)

| Product | Jaar | Maand |
|---|---|---|
| **Plus Family** (hero; per huishouden, tot 6 leden, ~€10 p.p./jr) | **€59,99** | €7,99 |
| **Plus Solo** | **€39,99** | €5,99 |

- Prijzen incl. 21% BTW. Maandprijzen bewust hoog om naar jaarlijks te sturen; jaar default geselecteerd.
- "Op/boven Cozi Gold" is bewust: NL-betaalbereidheid ~62% boven VS (Adapty 2025) — zie [markt & doelgroep](markt-en-doelgroep.md).
- **Abo-only: géén lifetime** (owner 2026-06-17, herbevestigd 2026-06-18: "de €99-lifetime-optie vervalt"). NB: `docs/proposals/index.html` (gearchiveerd) noemde de lifetime nog — verouderd.
- **Verpakking per huishouden, niet per seat** (TimeTree's per-user-model wordt gehaat; family-plan = retentie-hefboom, −52% churn per Spotify-data uit het voorstel).
- **Definitief bevestigd 2026-08-05 (owner):** deze vier prijspunten gaan zo de stores in; de eerder geadviseerde NL-prijstest (39,99 vs 44,99 / 59,99 vs 69,99) is bewust overgeslagen. Daarmee is ook bevestigd dat Solo náást Family blijft en dat het maandabonnement bij launch meegaat — dus **vier** producten.
- Bron: [`../archive/superseded/proposals/03-monetization-proposal.html`](../archive/superseded/proposals/03-monetization-proposal.html) (besluit 2026-06-17); "prijzen bevestigd" in het release-assessment (2026-07-06); definitieve bevestiging 2026-08-05 ([roadmap besluit 38](../product/roadmap.md#a-besluitenlog)).
- Aanmaken in App Store Connect (product-id's, prijzen, proefperiode): [`../release/store-setup-handleiding.html`](../release/store-setup-handleiding.html).

**Trial & paywall — trial definitief 2026-08-05, paywall nog te bouwen bij B5/RevenueCat:** **14 dagen gratis proefperiode op alle vier de producten** (owner 2026-06-17, definitief bevestigd 2026-08-05). Aangeboden bij onboarding én zodra een gebruiker een Plus-module/feature selecteert; bij niet accepteren worden Plus-modules uitgevinkt maar zichtbaar als disabled mét upsell (besluit 2026-06-17). Paywall-timing-principe: ná het "family moment" (2e lid uitgenodigd), tonen aan ≥80%.

**Gezinsabonnement tijdens de trial (owner 2026-08-05):** bij Plus Family krijgt **élk lid van het huishouden** Plus, óók gedurende de 14 proefdagen — bewust, de gezinservaring moet in de proefperiode volledig zijn. Dit is geen extra bouwwerk: `plus_entitlements` met `tier='family'` geldt al huishouden-breed zonder begunstigde (`lib/core/entitlement/plus_entitlement.dart`), en de `revenuecat-webhook` zet een trial-start (RevenueCat-event `INITIAL_PURCHASE`) net zo op `active` als een gewone aankoop.

**Uitvoering per store:** iOS eerst helemaal af; **Google Play is bewust uitgesteld** (owner 2026-08-05).

**Grid-UX rond de freemium-grens** (besluiten 2026-06-17, `../archive/superseded/2026-07-11-docs-overhaul/docs/proposals/02-grid-ux-options.html`): onboarding-modulekeuze per module (niet per domein); "Populair"-rij = 4 gratis kern + Maaltijden (gratis) + Recepten (Plus-upsell mét badge); Plus-badge = subtiele slot-pil — bewust niet-zeurend (anti-FamilyWall).

## 4. AI-verdienmodel — geschiedenis en geldende stand

| # | Model | Datum | Status |
|---|---|---|---|
| a | Marktonderzoek-advies: AI nooit gratis; 5–10 gratis acties op basis-betaald; credits-model (100–500 credits/mnd, $20–50) | 2026-06-14 | ❌ **Superseded** — advies, nooit besloten model |
| b | Credit-packs: Plus bevat "normaal" limiet, daarboven koopbare packs; gedeelde credit-pool; weging 1/2/3 | 2026-06-18 (owner) | ❌ **Superseded** door (c); `ai-credits.md` zegt dit expliciet |
| c | **Unlimited + fair use**: Plus = alle AI inbegrepen, géén credit-teller/packs/consumable-SKU | 2026-06-19 (owner) | ✅ **Geldend** (met verfijning d) |
| d | Verfijning: FUP **per persoon** gemeten én geblokkeerd bij overmatig gebruik (niet één gedeelde gezinspool) | 2026-07-06 (owner) | ✅ **Geldend** — recentste besluit |

Onderbouwing van (c), uit [`../design/ai-credits.md`](../design/ai-credits.md) (2026-06-19): veilig omdat alle AI gebonden per-actie is (geen open chat) — lichte actie ~$0,002–0,005, document ~$0,003–0,01; zelfs 1000 acties/mnd ≈ $3–10, ruim binnen €59,99/jr. Meten op tokens in `ai_usage_logs`; interne weging (licht 1 / document 2 / bulk 3) blijft als soft-limit-input; handhaving voorlopig handmatig. NB: `ai-credits.md` (06-19) spreekt nog van meten per gezin; het per-persoon-besluit (07-06) prevaleert.

De assistent zelf is een **gegronde module-assistent** (router/formatter over eigen app-data, bevestigen vóór schrijven), géén open chatbot (owner 2026-06-19). Later moet de assistent achter een hoger pakketvlak (Plus → "Premium") gezet kunnen worden via een feature-tier-vlag; pakketnamen nog te bepalen.

Huidige technische rem: FUP 2.000.000 tokens/gebruiker/maand in de ai-proxy (env `AI_FUP_MONTHLY_TOKENS`, antwoordt 429) + globale OpenRouter-spend-cap $30/mnd.

## 5. Netto-marge-model (2026-06-17)

Uit het monetisatie-voorstel: reken op **~70% van de stickerprijs** — 21% NL-BTW (Apple/Google is merchant-of-record) → netto = prijs/1,21, daarna −~15% small-business-commissie: **€59,99 → ~€42 netto per Family-jaar**. Freemium-conversie behoudend inschatten op ~2–3% (RevenueCat 2026-benchmark). Billing-risico: 14% (App Store) tot 31% (Play) van opzeggingen zijn onvrijwillige betaalfouten. AI-COGS: zie §4 (~$3–10/gezin/mnd bij extreem gebruik; typisch veel lager).

## 6. Implementatiestatus (2026-07-11)

- **Plus-enforcement staat AAN** (gewijzigd sinds de server-side entitlements van migratie 0042; geverifieerd 2026-08-05): `plusEnforcementProvider => true` en `plusEntitlementProvider` leest `public.plus_entitlements` per huishouden — `lib/core/entitlement/plus_entitlement.dart`. De Plus-grens is dus een echte grens, geen badge meer. `PLUS_OVERRIDE` blijft als dev-vangnet voor eigen device-builds. *(De eerdere regel hier — "enforcement staat UIT" — was de stand van 2026-07-11.)*
- **Uitzondering:** AI is de facto wél Plus-gated via de `AiGate` (`lib/core/ai/ai_gate.dart`) — gratis gebruikers hebben nu feitelijk geen AI.
- **RevenueCat (blokker B5):** project klaar (entitlement `plus`, apps op `com.aquait.tendlo`, public SDK-keys ontvangen), maar purchases_flutter/paywall zijn NIET gewired. **Stand 2026-08-05:** de prijzen zijn niet langer open (besluit 38) — wat rest is dashboard-werk dat alleen de eigenaar kan doen: de Paid Apps Agreement activeren en de vier abonnementen in App Store Connect aanmaken (`../OWNER-INPUTS-NEEDED.md` §6, stap voor stap in [`../release/store-setup-handleiding.html`](../release/store-setup-handleiding.html)). NB: `plusEnforcementProvider` staat inmiddels op `true` — de tekst hierboven over "enforcement UIT" is van 2026-07-11 en achterhaald.
- **Upsell-sheet** bestaat (Instellingen → Tendlo Plus) met placeholder-prijzen en verborgen trial-CTA (`lib/features/plus/presentation/plus_upsell_sheet.dart`).
- Zie [product/status-overzicht.md](../archive/superseded/product/status-overzicht.md) voor de volledige app-status en [product/roadmap.md](../product/roadmap.md) voor milestone M1 (RevenueCat + trial + FUP-handhaving → gesloten beta).

## 7. Besluitgeschiedenis freemium-grens (alle drie generaties)

| Generatie | Datum | Inhoud | Status |
|---|---|---|---|
| "Gratis compleet" (≈ Scenario C) | 2026-06-16 (advies gap-analyse) | ALLE modules gratis on-device; Plus = alléén managed AI + cloud/sync | ❌ Niet gekozen |
| "Maximaal afschermen" (≈ Scenario A) | 2026-06-16 (owner-keuze) | Alleen de 4 kern-surfaces gratis; alle ~21 registry-modules + AI + sync = Plus (`../archive/superseded/2026-07-11-docs-overhaul/docs/OPEN-QUESTIONS-2026-06-17.md` §B1) | ❌ Een dag later herzien; leeft nog door in enkele latere docs (drift, zie §2) |
| **Scenario B met correcties** | **2026-06-17 (owner-besluit)** | 9 gratis (4 kern-surfaces + 5 modules); Recepten + Sportkalender expliciet Plus; overige registry-modules + AI + sync = Plus (`.../docs/proposals/01-module-tiering.html`; code-telling 2026-07-11: 5 Free / 23 Plus van 28) | ✅ **Geldend**, in code geverifieerd |

Afwijkende formuleringen in andere documenten (het conservatievere advies in het monetisatie-voorstel zelf; de te grofkorrelige samenvatting "gratis = local-only kern" in het release-assessment) zijn ondergeschikt aan dit besluit.

## 8. Open pricing-beslissingen

Uit het monetisatie-voorstel (2026-06-17), voor zover niet later beslist:

1. ~~Wel/geen **Plus Solo** naast Family, of family-only.~~ ✅ **Gesloten 2026-08-05:** Solo blijft naast Family.
2. ~~**Maand-abonnement** bij launch aanbieden of jaar-only.~~ ✅ **Gesloten 2026-08-05:** maand gaat mee bij launch — vier producten.
3. ~~Exacte €-storefront-punten (39,99 vs 44,99 solo; 59,99 vs 69,99 family) — NL-prijstest geadviseerd vóór vastleggen.~~ ✅ **Gesloten 2026-08-05 (owner):** de prijzen uit §3 zijn definitief — **Solo €39,99/jr + €5,99/mnd · Family €59,99/jr + €7,99/mnd**. De geadviseerde NL-prijstest is bewust niet gedaan; de prijzen gaan zo de stores in. Zie [`../release/store-setup-handleiding.html`](../release/store-setup-handleiding.html).
4. Latere **web-checkout** buiten de stores (marge vs. BTW/compliance-overhead, EU-prijsrichtlijn/ACM).
5. **Lifetime later** alsnog, en of AI daar dan buiten blijft.
6. Formele **herbevestiging van de modulelijn** vóór het aanmaken van de store-producten (OPEN-POINTS B2, 2026-06-18).
7. **AI fair-use-drempel**: de concrete soft-limit (tokens/acties p.p./mnd) is niet vastgelegd; automatische throttle nog te bouwen (nu handmatig + FUP-env-cap).
8. Pakketnamen / later "Premium"-vlak boven Plus ("apart sparren", `../design/ai-credits.md` 2026-06-19).

## Gaten — niet gedocumenteerd

- Financiële projecties (omzet/break-even/LTV/CAC/MRR-doelen): bestaan niet; alleen de categorie-benchmarks hierboven.
- Operationele kosten: geen bedragen voor Supabase/PowerSync/Resend/Sentry/PostHog/RevenueCat; geen totale runrate. Wel gedocumenteerd: Google Play Console €25 eenmalig; Apple Developer-account bestaat al.
- Conversie-/churn-doelen en KPI-raamwerk voor Tendlo zelf: niet vastgelegd.
- Go-to-market-plan: zie [README → gaten](README.md#wat-is-niet-gedocumenteerd-gaten).

---
*Bronnen: `docs/archive/superseded/2026-07-11-docs-overhaul/docs/proposals/01-module-tiering.html`, `02-grid-ux-options.html`, `index.html` en `docs/archive/superseded/2026-07-11-docs-overhaul/docs/OPEN-QUESTIONS-2026-06-17.md`, `docs/archive/superseded/2026-07-11-docs-overhaul/docs/OPEN-POINTS-2026-06-18.md` (alle gearchiveerd onder `docs/archive/superseded/2026-07-11-docs-overhaul/`), `docs/archive/superseded/proposals/03-monetization-proposal.html` (2026-06-17), `docs/design/ai-credits.md` (2026-06-19), `docs/design/tendlo-release-assessment.html` (2026-07-06), `docs/archive/superseded/2026-07-11-docs-overhaul/docs/design/invite-existing-user.md` (2026-06-18, gearchiveerd onder hetzelfde archiefpad), `docs/OWNER-INPUTS-NEEDED.md`; code: `lib/core/entitlement/plus_entitlement.dart`, `lib/core/entitlement/module_tier_overrides.dart`, `lib/core/modules/module_descriptor.dart`, `lib/core/ai/ai_gate.dart`, `lib/features/*/*_module.dart`. Geverifieerd op 2026-07-11.*
