---
name: rshankras/bundles-and-licensing
source: https://app.decimal.ai/s/rshankras-bundles-and-licensing@1/SKILL.md
source_sha256: 4c067372d1ca
---

# Bundles & Licensing

Four ways one piece of software earns more than one price tag.

## When This Skill Activates

- A portfolio developer asks how apps can sell each other ("bundle my apps?")
- Deciding whether to enable Family Sharing on a subscription or purchase
- Exploring partnerships with complementary indie apps
- Schools, clinics, or businesses keep asking "how do we buy 30 seats?"
- The store-growth audit flags P8.5, P8.6, or P8.7

## 1. Own-app bundles (available now)

App bundles group up to 10 of your own paid apps — or apps sharing a subscription — at a bundle
price, with **Complete My Bundle** crediting what a user already paid.

- ✅ Portfolio play: your catalog cross-sells itself on every member app's product page — a
  discovery surface, not just a discount (pairs with the checkbox-storefront and portfolio
  tactics in `app-store/marketing-strategy`).
- ✅ Price the bundle at "second app ~half off, third+ nearly free" — the goal is basket size
  and page presence, not margin per unit.
- ❌ Bundling apps with no shared audience; the bundle card confuses both product pages.
- Mechanics: paid apps only (or one subscription spanning the bundle); free apps can't bundle.

## 2. Family Sharing (available now — chronically under-enabled)

A checkbox per IAP/subscription in ASC, plus StoreKit handling for shared entitlements. One
purchase covers up to 5 additional family members — 6 entitlements, "6 for the price of 1".

- ✅ Enable for subscriptions whose *job* is shareable (utilities, education, health, home) —
  "the whole family for one price" beats a 6× cheaper feel at maybe 1.5× usage cost, and it's a
  paywall differentiator against non-sharing competitors.
- ✅ Drive paywall copy off `isFamilyShareable` rather than hardcoding "share with your family".
- ✅ Distinguish `ownershipType` — `PURCHASED` vs `FAMILY_PURCHASED` — to tailor onboarding;
  the family member never saw your paywall or purchase flow.
- ✅ Family entitlements arrive *outside* any purchase flow, and after a deliberate delay (the
  purchaser gets a window to disable sharing first) — listen on `Transaction.updates`, and
  check entitlement before merchandising (a family member may already be covered).
- ✅ Handle `revocationDate` + the REVOKE server notification by re-deriving entitlements from
  the full transaction history; test the revoked-from-family path.
- ❌ Enabling it on a per-seat B2B-ish product where sharing cannibalizes real seats — that's
  what volume licensing (below) is for.
- One-way door: enabling takes effect **within hours for new and existing customers** and is
  irreversible — turning it off only affects new purchases.

## 3. Cross-developer bundles & suites

Combined subscriptions spanning apps from *different* developers — the "indie suite" model
(several complementary tools, one subscription).

- The unlock: each partner's install base becomes the others' warm audience — distribution
  cheaper than any paid channel.
- ✅ Partner selection: same buyer, adjacent jobs, no feature overlap (writing tool + reference
  manager + focus timer, not three writing tools). Draft revenue-share on *attribution of the
  acquiring app*, not equal splits.
- ✅ Verify current ASC mechanics before promising a ship date — cross-developer suites are a
  recent capability and terms/tooling are still settling; the fallback is coordinated own-app
  pricing + mutual offer codes (`generators/offer-codes-setup`).
- ❌ Partnering with an app whose rating or privacy posture you wouldn't put your name on — a
  suite shares reputational blast radius (run `app-store/originality-check` thinking on partners).

## 4. Group Purchases & Volume Purchasing — institutional sales

Live for all auto-renewable subscriptions using StoreKit 2 (StoreKit 2 required). ON by default
for most new and existing StoreKit 2 subscriptions — but Family Sharing-enabled subscriptions
are opted OUT by default. Configure per subscription in ASC.

Two sale paths, same seat pool:
- **In-app group purchases** — a customer buys N seats, shares an invite link, and accepters are
  auto-assigned to seats.
- **Volume purchasing** through **Apple Business Manager / Apple School Manager** — the
  institutional channel for schools, clinics, and businesses.

Mechanics:
- **Volume pricing = up to 5 price bands**, with full control of seat thresholds and each band's
  price. The default is every seat at the current price — no discount exists until you configure
  bands (e.g., $19.99 → $13.99 at 21–40 seats → $10.99 at 41+; a 50-seat purchase then averages
  ~20% off).
- ✅ Prefer the built-in seat management (invites, acceptance tracking, seat lifecycle) unless
  you already run member management — then use the App Store Server API group endpoints instead.
- ✅ Merchandise the group value in-app — buyers won't discover multi-seat pricing on their own.
- ✅ Education/health apps: this often outearns consumer conversion optimization by an order of
  magnitude — one district buys more seats than a year of paywall A/B tests adds.
- ❌ Building custom seat management UI before validating a single institutional buyer exists —
  the built-in flow covers the first sale.
- Custom Apps via Apple Business Manager remain the path for bespoke B2B distribution; Group
  Purchases brings multi-seat to the mainstream store — different tools, same buyer.
- Reference: the WWDC26 session on group purchases and volume purchasing.

## Decision sketch

| You have | Reach for |
|---|---|
| 2+ paid apps, shared audience | Own-app bundle |
| A shareable-job subscription | Family Sharing on |
| A complementary indie peer with real traffic | Cross-developer suite (or mutual offer codes today) |
| Institutions asking to buy seats | Group Purchases / volume price bands (live — configure in ASC) |

## Output Format

```
Portfolio: bundle-eligible apps? bundle live? Complete-My-Bundle pricing sane?
Family Sharing: enabled where the job is shareable? entitlement handling tested?
Partnerships: candidate named? terms sketched?
Institutional: demand evidence? seats model drafted? volume price bands configured?
```

Each gap routed to the numbered section above; StoreKit implementation to
`generators/subscription-lifecycle`, offer distribution to `generators/offer-codes-setup`.

## References

- https://developer.apple.com/help/app-store-connect/create-an-app-bundle/
- https://developer.apple.com/documentation/storekit/supporting-family-sharing-in-your-app
- https://support.apple.com/guide/apple-business-manager/welcome/web
- Related skills: `monetization` (pricing/tiers), `generators/subscription-lifecycle`, `generators/offer-codes-setup`, `growth/store-growth-audit`