Guideline 3.1.1 (In-App Purchase): Was tun, wenn Apple deinen Stripe-Checkout ablehnt
Deine Web-App rechnet über Stripe ab, und im Web ist das völlig in Ordnung. In der iOS-App verlangt Apple In-App-Käufe für alles Digitale, das in der App genutzt wird. Die Lösung ist nicht, Stripe rauszureißen, sondern den iOS-Build über RevenueCat StoreKit nutzen zu lassen, während das Web bei Stripe bleibt.
Ab $109 einmalig pro Plattform, oder unser Team erledigt alles ab $698.
Genehmigungsgarantie – oder Geld zurück innerhalb von 14 Tagen
Kein Programmieren nötig
Einmalzahlung, kostenlose Updates
24/7 Support von echten Menschen
Made in Germany seit 2014 · ISO 27001
9:41
Deine App
Deine AppJetzt auf dem Smartphone
App Store · Google Play Freigegeben
Was 3.1.1 sagt, in einfachen Worten
Wenn deine App Funktionen, Inhalte oder Dienste freischaltet, die innerhalb der App konsumiert werden (Abos, Premium-Stufen, KI-Credits, Vorlagen, Kurse), muss dieser Kauf über In-App Purchase (In-App-Kauf) laufen. Die Richtlinie verbietet außerdem Buttons, Links und Formulierungen in der App, die Nutzer zu einem anderen Zahlungsweg für diese digitalen Güter lenken. Apple wendet sie pro Storefront an, und es gibt regionale Ausnahmen (mehr dazu unten), aber für eine kleine App lautet die praktische Regel: Digitale Güter in der iOS-App laufen über IAP.
Lovable-, Bolt- und v0-Vorlagen verdrahten standardmäßig Stripe Checkout, und die KI setzt fröhlich einen "Upgrade for $9/month"-Button auf die Preisseite. Der Reviewer tippt darauf, sieht ein Stripe-Formular und schreibt die 3.1.1-Ablehnung. An deinem Geschäftsmodell ist nichts falsch; der Kanal in der App ist es.
Braucht dein Kauf In-App Purchase?
Was du verkaufst
In der iOS-App
Guideline
Abo für App-Funktionen, Premium-Stufe
IAP Pflicht
3.1.1
KI-Credits, Tokens, Generierungen
IAP Pflicht (Consumable)
3.1.1
Vorlagen, E-Books, Kurse, die in der App genutzt werden
IAP Pflicht
3.1.1
Physische Waren und Dienstleistungen außerhalb der App (versandte Produkte, Essenslieferung, eine Reinigung vor Ort)
Stripe oder jeder andere Zahlungsdienst erlaubt; IAP darf nicht verwendet werden
3.1.3(e)
Echtzeit-Eins-zu-eins-Dienste zwischen zwei Personen (Nachhilfe, Beratung)
Andere Zahlungsmethoden erlaubt; Eins-zu-viele muss IAP nutzen
3.1.3(d)
Im Web gekaufte Inhalte, die nur in der App konsumiert werden (Reader-Apps: Bücher, Audio, Video, News)
Dürfen ohne IAP freigeschaltet werden; keine Kauf-Buttons in der App und keine Links zum Kauf anderswo
3.1.3(a)
Stelle den iOS-Build mit RevenueCat auf In-App-Kauf um
Stripe bleibt im Web; die App ruft ein einziges URL-Schema auf.
Lege die Produkte in App Store Connect an
Unterschreibe das Paid-Apps-Agreement (Account Holder) und lege dann das Abo oder Consumable mit einem Identifier wie pro_monthly an. Füge unter Users and Access einen Sandbox-Tester zum Testen hinzu.
Richte RevenueCat und Config.swift ein
Lege ein RevenueCat-Projekt an, importiere die Produkte und trage Key und Projekt-ID in revenueCatAPIKey und revenueCatProjectID in Config.swift ein. Die Bundle-ID in Xcode, App Store Connect und RevenueCat muss übereinstimmen. Komplette Anleitung: RevenueCat-Setup für Web-Wrapper-Apps und die In-App-Purchases-Doku.
Lass die Web-App wissen, dass sie in der App läuft
Setze useragent_iphone in Config.swift auf den Standard-User-Agent plus eine Markierung wie MyAppiOS und prüfe dann navigator.userAgent in deiner Web-App. In der App ersetzt du den Stripe-Button durch einen Link auf revenuecat://purchase?external_id=USER_ID&product=pro_monthly oder öffnest eine native Paywall mit revenuecat://launchPaywall?external_id=USER_ID&offering=default (ab iOS 15).
Synchronisiere das Entitlement in dein Backend
Nutze RevenueCat-Webhooks (oder die injizierten Variablen planID und transactionIdentifier), um den Plan am Nutzerdatensatz in Supabase oder Firebase zu setzen, damit derselbe Account im Web und in der App Premium ist.
Füge Links zum Wiederherstellen und Verwalten hinzu
Ein sichtbarer "Käufe wiederherstellen"-Link auf restoreinapppurchases:// und ein "Abo verwalten"-Link auf cancelinapppurchase://, der Apples Abo-Verwaltung öffnet. Reviewer erwarten beide.
Entferne jeden Hinweis auf externe Zahlung aus der App
Kein "günstiger auf unserer Website", kein Stripe-Billing-Portal, keine aus der App ausgelöste E-Mail mit "Upgrade auf yourdomain.com", keine Preisseite, die beides vergleicht. Lade dann einen neuen Build hoch und antworte im Resolution Center mit den Produkt-IDs.
Das Web behält Stripe; der iOS-Build leitet zu RevenueCat. Erkenne die App über die eigene User-Agent-Markierung.
javascript
// Config.swift: useragent_iphone = default UA + " MyAppiOS"
var isIosApp = navigator.userAgent.indexOf("MyAppiOS") !== -1;
function buy(productId, userId) {
if (isIosApp) {
// StoreKit via RevenueCat inside the WebViewGold app
window.location.href = "revenuecat://purchase?external_id=" + encodeURIComponent(userId) + "&product=" + productId;
} else {
// Stripe Checkout on the web
window.location.href = "/checkout?plan=" + productId;
}
}
Externe Zahlungslinks: Die Regeln unterscheiden sich je nach Region
Die Regeln unterscheiden sich je nach Region. In den USA dürfen Apps im US-Storefront nach einem Gerichtsbeschluss von 2025 auf externe Kaufoptionen verlinken; die Europäische Union hat alternative Bedingungen unter dem Digital Markets Act; anderswo gilt die klassische Regel. Diese Regeln ändern sich und bringen eigene Hinweispflichten mit, prüfe also Apples aktuellen Text, bevor du dich darauf verlässt. Für eine Ein-Personen-App besteht IAP über RevenueCat das Review in jedem Storefront mit dem wenigsten Papierkram; die geschäftliche Seite behandelt der Entscheidungsguide Stripe vs. In-App-Kauf.
Häufig gestellte Fragen
Kann ich Stripe für die Web-Version behalten und IAP nur in der App nutzen?
Ja, das ist das normale Setup. Derselbe Account bekommt das Entitlement aus beiden Kanälen; dein Backend behandelt einen RevenueCat-Webhook und einen Stripe-Webhook gleich.
Kann ich die Preisseite in der App einfach ausblenden und Nutzer bitten, auf der Website zu abonnieren?
Den Kauf auszublenden ist bei Reader-Inhalten erlaubt, Nutzer in der App auf die Website zu verweisen nicht. Wenn es in der App selbst nichts zu kaufen gibt und sie nie woanders hinzeigt, akzeptieren Reviewer das in der Regel; die meisten Apps fahren mit IAP besser.
Brauchen Consumables wie KI-Credits wirklich IAP?
Ja. Credits, die in der App ausgegeben werden, sind digitale Inhalte. Lege sie als Consumable-In-App-Käufe an und schreibe das Guthaben in deinem Backend gut, sobald der RevenueCat-Webhook eintrifft.
Drei Wege, deine App in die Stores zu bringen
Gleiches Ergebnis, unterschiedlich viel Arbeit auf deiner Seite. Alle drei kommen mit Genehmigungsgarantie und 24/7 Support von echten Menschen.
Selbst machen
$109 pro Plattform, einmalig
Die WebViewGold-Lizenz: ein fertiges Xcode- oder Android-Studio-Projekt. URL einfügen, Name und Icon setzen, Features einschalten, bauen und einreichen. Kostenlose Updates für immer.
Kein Mac, kein Xcode, kein Android Studio: Du konfigurierst im Browser, wir bauen beide Apps in der Cloud und übergeben sie an App Store Connect und die Play Console.
Schick uns deine URL und dein Icon. Unser Team konfiguriert, baut und liefert deine App innerhalb von 72 Stunden, White-Label, inklusive Quellprojekten. Beide Plattformen für $1,158.
Erstattungen erfolgen zu den in unseren FAQ genannten Bedingungen: eine nicht inhaltsbedingte Ablehnung durch Apple und/oder Google, geltend gemacht innerhalb von 14 Tagen nach dem Kauf.