App Store Connect — your one-sitting session
Everything happens at appstoreconnect.apple.com, signed in as the Account Holder (only that role can accept agreements and enroll in the Small Business Program). Active time ≈ 45–60 minutes. Two waits are outside your control: bank verification and SBP approval. Ticks save in this browser.
A1 — Paid Applications Agreement GATES EVERYTHING
Nothing IAP works — not even sandbox test purchases — until this shows Active. StoreKit returns an empty product list until then.
- App Store Connect → Business (older guides call it "Agreements, Tax, and Banking").
- Under Agreements, find Paid Applications → View and Agree to Terms. Read, tick, accept.
- Status becomes "Pending — add banking and tax info". That is expected; A2 clears it.
A2 — Banking and tax WAIT: hours–48h
- Bank account: the account that receives Apple payouts. You need: bank name, IBAN, SWIFT/BIC, account-holder name exactly as the bank has it. UAE accounts are fine.
- Tax forms: the U.S. W-8BEN — a short digital questionnaire inside ASC, not a paper form. "No U.S. activities" is the normal path. Complete only what ASC marks required.
- Contacts: senior / financial / technical / legal — you for all of them is fine.
A3 — Small Business Program 15% NOT 30%
Free, ~5 minutes, no downside at our scale.
- Go to the SBP page → Enroll (as Account Holder).
- You confirm: latest Paid Apps Agreement accepted (A1) · Associated Developer Accounts: none · prior-year proceeds under US$1M (new accounts qualify automatically).
The 15% rate starts 15 days after the end of the Apple fiscal month in which approval lands — enrolling now, before launch, makes that lag irrelevant. ($1M is measured in proceeds ≈ $1.18M gross; crossing it mid-year puts the remainder of that year at 30%.)
A4 — Server notifications + API key
- Notifications URL: ASC → Apps → ELA → General → App Information → App Store Server Notifications → set Production URL https://api.ela.now/webhooks/appstore and the staging URL as Sandbox, version 2. (I can do this step if you prefer — say so.)
- In-App Purchase API key: ASC → Users and Access → Integrations → In-App Purchase → generate a key. Download the .p8 ONCE (it can never be re-downloaded), note the Key ID and Issuer ID, and hand all three to me over a secure channel — it goes root-only on the VPS like the APNs key.
A5 — Sandbox test account 5 MIN
ASC → Users and Access → Sandbox → Test Accounts → +. One tester, fresh email alias (e.g. stevan+elasandbox1@…), region United Arab Emirates (so sandbox prices render in AED). Never sign a real device's main Apple ID into it — it is entered only when a StoreKit sandbox sheet prompts.
A6 — Subscription group + the three products
ASC → Apps → ELA → Monetization → Subscriptions.
Create the group
- Reference Name (internal): ELA Essential Membership
- Add an English group localization: Display Name ELA Membership (what members see in iOS Settings → Subscriptions). App Name Display Option: "Use App Name".
Create the three products (repeat ×3 — Product IDs are IMMUTABLE, type exactly)
| Field | Weekly | Monthly | Annual |
|---|---|---|---|
| Reference Name | Essential Weekly | Essential Monthly | Essential Annual |
| Product ID | ela.essential.weekly | ela.essential.monthly | ela.essential.annual |
| Duration | 1 Week | 1 Month | 1 Year |
| Price (UAE, AED) | 24.99 | 79.99 | 749.99 |
| Display Name (en) | Essential — Weekly | Essential — Monthly | Essential — Annual |
| Description (en) | Emergency legal response membership, billed weekly. | Emergency legal response membership, billed monthly. | Emergency legal response membership, billed yearly. |
Copy law: every tier gets the full firm response — never write "notification-only" or imply weekly is lesser.
Per-product settings
- Family Sharing: OFF for all three (entitlement-security law — and Apple never lets you turn it off once on).
- Tax category: leave the default unless the accountant says otherwise.
- Availability: all countries and regions — Dubai expats keep UK/US/IN/PH Apple IDs; restricting to UAE refuses real customers. KYC in our onboarding stays the territory gate.
- Pricing: base storefront United Arab Emirates (AED), enter the price, let ASC auto-generate the other 174 storefronts, then review Saudi / Qatar / UK / US against the matrix below. If the picker doesn't offer the exact value, pick the nearest and tell me the final numbers.
- Review Information: leave blank today (needed for submission, not sandbox). P5 uploads a real paywall screenshot + review notes.
Ranking
Put all three at the SAME level (level 1). Same service, different durations → interval switches take effect at the next renewal, no proration — exactly your ruling. (Different levels would fire immediate prorated refunds — noise we don't want.)
Billing Grace Period
On the Subscriptions page, Set Up Billing Grace Period: duration 16 days (Apple auto-caps weekly at 6) · All Renewals · Production and Sandbox.
Tell engineering
Send me: the agreement's Active date · the final confirmed price points per storefront (if any differed from the tables) · the .p8 key trio (A4). Sandbox drills start the moment the agreement is Active and the products exist.
Reference — the research behind the numbers
Prices: .95 endings don't exist on Apple's AED grid
All three targets are verified live on the UAE storefront today: AED 24.99 (Crunchyroll et al.), AED 79.99 (TOD by beIN et al.), AED 749.99 (Zoho Books yearly). Annualized: weekly ≈ 1,304 AED/yr (your ≈1,297 holds within 1%), monthly ≈ 960, annual 749.99.
| Interval | Gross/yr | Net @15% SBP | Net @30% |
|---|---|---|---|
| Weekly | 1,304 AED | ≈1,056 AED | ≈869 AED |
| Monthly | 960 AED | ≈777 AED | ≈640 AED |
| Annual | 749.99 AED | ≈607 AED | ≈500 AED |
(Apple deducts UAE VAT 5% before commission. Web-Stripe annual 750 nets ≈692 AED — the ≈85 AED/yr delta is the recorded trade for in-app purchase.)
Storefront matrix (net-parity targets, confirm against the picker)
| Storefront | Currency | Weekly | Monthly | Annual |
|---|---|---|---|---|
| UAE (base) | AED | 24.99 | 79.99 | 749.99 |
| Saudi Arabia | SAR | 27.99 | 89.99 | 849.99 |
| Qatar | QAR | 24.99 | 79.99 | 749.99 |
| Kuwait / Bahrain / Oman (+RoW) | USD | 6.99 | 21.99 | 199.99 |
| United Kingdom | GBP | 5.99 | 17.99 | 169.99 |
| United States | USD | 6.99 | 21.99 | 199.99 |
Grace + billing retry
ASC offers 3 / 16 / 28 days app-level; weekly is auto-capped at 6. With the 16-day choice: weekly = 6d, monthly/annual = 16d. Billing retry runs up to 60 days regardless. The server stores Apple's own grace-expiry date, never computes it.
Group mechanics
One group = one active subscription per member; interval switches at the same level land at the next renewal with zero proration. Weekly subs draw stricter App Review attention on paywall hygiene — price and period unabbreviated ("AED 24.99 per week"); our paywall does this.
Full citations live in the repo: docs/business/payments-unbundling-2026-08-22/p0-asc-runbook.md (Part B).