Die App Store Order ID auf dem Beleg eines Kunden zeigt dir, was er gekauft hat und ob Apple es schon erstattet hat
Apples Endpunkt Look Up Order ID macht aus der Order ID auf dem App Store Beleg eines Kunden signierte Transaktionen, samt Erstattungsdatum und Grund. So nutzt du ihn bei Erstattungsanfragen, das kann er nicht, und so schneidet die Order ID von Google Play im Vergleich ab.

Wichtigste Erkenntnisse
- Apple schickt bei jedem In-App-Kauf einen Beleg mit Order ID per E-Mail, und Kunden finden ihre Order IDs auch in ihrem Kaufverlauf im App Store.
- Apples App Store Server API Endpunkt Look Up Order ID (GET /inApps/v1/lookup/{orderId}) liefert zu einer gültigen Order ID eine oder mehrere signierte Transaktionen, sodass der Support productId und purchaseDate sieht, ohne zu raten.
- Eine dekodierte App Store Transaktion enthält revocationDate und revocationReason, also zeigt eine Abfrage der Order ID, ob Apple den Kauf schon erstattet hat. Grund 1 bedeutet, dass Apple wegen eines tatsächlichen oder vermuteten Problems in der App erstattet hat.
- Look Up Order ID liefert OrderLookupStatus 1 und kein signedTransactions Array, wenn die Order ID für deine App nicht gültig ist. Das deutet auf einen falschen Beleg oder einen Kauf aus einer anderen App hin.
- Look Up Order ID ist in Apples Sandbox-Umgebung nicht verfügbar, und das Rate Limit in Produktion liegt bei 10 Anfragen pro Sekunde pro App, durchgesetzt auf Stundenbasis.
- Entwickler können keine App Store Erstattungen auslösen. Apple entscheidet darüber auf reportaproblem.apple.com, und der einzige Beweisschritt des Entwicklers ist die Antwort auf einen CONSUMPTION_REQUEST innerhalb von 12 Stunden.
- Google Play schickt für jeden einmaligen Kauf und jede Abo-Verlängerung eine Order ID per E-Mail, und der Entwickler kann diese Order ID in der Play Console suchen und direkt erstatten. Laut Play Console lässt sich eine Erstattung nicht rückgängig machen.
Bevor du auf die Erstattungs-Mail eines iPhone-Kunden antwortest, frag nach der App Store Order ID auf seinem Apple-Beleg. Diese eine Zeichenfolge, durch Apples Endpunkt Look Up Order ID geschickt, sagt dir, welches Produkt er gekauft hat, wann, und ob Apple es schon erstattet hat. Ohne sie gleichst du einen Screenshot und eine E-Mail-Adresse mit deiner Datenbank ab und hoffst. Mit ihr weißt du in Sekunden, ob du mit einem zahlenden Kunden sprichst, mit einem Kunden, dem Apple das Geld schon zurückgezahlt hat, oder mit jemandem, der einen Beleg aus einer anderen App in der Hand hält.
Woher die App Store Order ID kommt
Apples Dokumentation ist eindeutig. Wenn Kunden einen oder mehrere In-App-Käufe in deiner App tätigen, schickt der App Store ihnen einen Beleg per E-Mail, und dieser Beleg enthält eine Order ID. Kunden finden ihre Order IDs auch in ihrem Kaufverlauf im App Store. Apples Kaufverlauf liegt auf reportaproblem.apple.com und in der App Store App unter Apps & Kaufverlauf, und er zeigt standardmäßig die letzten 90 Tage, mit Filtern für ältere Käufe.
Der Kunde hat den Schlüssel also schon. Dein Support-Formular muss nur danach fragen.
Warum eine E-Mail-Adresse nicht reicht
Apple gibt dir die E-Mail-Adresse des Apple Accounts nicht weiter. Die Adresse, die an deinen Support schreibt, hat vielleicht nichts mit dem Account zu tun, der bezahlt hat. Wenn du beim Kauf ein appAccountToken setzt, kannst du eine Transaktion deiner eigenen Nutzer-ID zuordnen, aber nur von deiner Seite aus. Die Order ID funktioniert von der Seite des Kunden, über einen Beleg, den er mit einem Tippen weiterleiten kann.
Was Look Up Order ID zurückgibt
Look Up Order ID gehört zur App Store Server API und ist ab Version 1.1.0 verfügbar. Du rufst GET https://api.storekit.apple.com/inApps/v1/lookup/{orderId} mit deinem signierten JWT auf. Laut Apple basiert die Antwort auf dem In-App-Kaufverlauf des Kunden, unabhängig davon, ob er die App installiert, gelöscht oder neu installiert hat.
| Feld oder Verhalten | Was Apples Dokumentation sagt | Was der Support damit macht |
|---|---|---|
| OrderLookupStatus 0 | Gültige Order ID. Die Antwort enthält ein Array mit einer oder mehreren signierten Transaktionen | Jede einzelne dekodieren und den Kauf lesen |
| OrderLookupStatus 1 | Die Antwort enthält kein signedTransactions Array | Die Order ID als ungültig für deine App behandeln. Nach dem richtigen Beleg fragen |
| productId und purchaseDate | Apple nennt diese Felder für den Kundensupport | Bestätigen, was wann gekauft wurde |
| revocationDate | Der Zeitpunkt, an dem der App Store die Transaktion erstattet oder aus der Familienfreigabe entzogen hat | Ist es gesetzt, hat Apple dem Kunden das Geld schon zurückgezahlt |
| revocationReason | 0: aus anderen Gründen erstattet, etwa bei einem versehentlichen Kauf. 1: wegen eines tatsächlichen oder vermuteten Problems in deiner App erstattet | Eine 1 ist ein Produktsignal, nicht nur ein Support-Ticket |
| appAccountToken | Die UUID, die du beim Kauf gesetzt hast, falls du eine gesetzt hast | Die Bestellung deinem eigenen Nutzerdatensatz zuordnen |
| price und currency | Apple sagt, sie nicht für die Umsatzabstimmung zu nutzen | Für das Geld die Berichte in App Store Connect nutzen |
| Sandbox | Der Endpunkt ist in der Sandbox-Umgebung nicht verfügbar | Nur mit Order IDs aus der Produktion testen |
| Rate Limit | 10 Anfragen pro Sekunde pro App, stündlich durchgesetzt. Darüber gibt es HTTP 429 mit einem Retry-After Header | Reichlich für einen Support-Desk, nicht für Massenabfragen |
Ist der Beleg für meine App gültig?
Genau diese Frage beantwortet OrderLookupStatus zuerst. Eine 1 bedeutet, dass die Order ID zu keinen Käufen in deiner App passt. Die üblichen Fälle sind ein Tippfehler, ein Beleg für eine andere App oder ein Beleg, der gar nicht aus dem App Store stammt. Bei einer 1 nichts erstatten, gutschreiben oder wiederherstellen. Bitte den Kunden, den Beleg noch einmal zu prüfen.
Hat Apple diesen Kauf schon erstattet?
Prüf revocationDate in jeder dekodierten Transaktion. Ist es gesetzt, hat Apple den Kauf schon erstattet oder aus der Familienfreigabe entzogen, und der Kunde hat sein Geld. Deine App Store Server Notifications sollten für dieselbe Transaktion ein REFUND geschickt haben, also ist das auch ein günstiger Weg, um zu bestätigen, dass dein Server den Zugang wirklich entzogen hat.

Was die Order ID im App Store nicht kann
Sie kann keine Erstattung auslösen. Entwickler haben keinen Erstattungsknopf im App Store. Apple entscheidet über Erstattungen, und Apples Support-Artikel schickt Kunden zu reportaproblem.apple.com, wo sie „Ich möchte“ wählen, dann „Rückerstattung anfordern“, einen Grund angeben und den Artikel auswählen. Apple sagt außerdem, dass eine ausstehende Belastung erst erstattet werden kann, wenn der Kunde den Beleg per E-Mail hat.
Mitreden darfst du nur beim CONSUMPTION_REQUEST von Apple. Wenn ein Kunde Apple um eine Erstattung bittet, kann Apple diese Benachrichtigung schicken, und du hast 12 Stunden, um mit Send Consumption Information zu antworten. Die Abfrage der Order ID ist ein Support-Werkzeug. Sie öffnet dieses Zeitfenster nicht und verlängert es auch nicht.
Was eine Erstattungs-Mail kostet, wenn du die Abfrage auslässt
Support ohne Order ID ist die Stelle, an der still Geld versickert. Drei Muster tauchen immer wieder auf.
- Kulanz zusätzlich zur Erstattung. Apple erstattet den Kauf, der Kunde schreibt auch dir, und der Support vergibt Gratis-Credits oder einen Extra-Monat. Jeder Credit, den du verschenkst, läuft auf Rechenleistung, API-Aufrufen und Speicher, die du bezahlst, und das auf einem Account, der sein Geld schon zurückhat.
- Zugang, der nie entzogen wurde. Wenn deine REFUND-Verarbeitung fehlgeschlagen ist, erzeugt der erstattete Kunde weiter Nutzung. Eine Abfrage, die ein revocationDate zeigt, während deine Datenbank noch aktiv sagt, ist ein Fehlerbericht mit Preisschild.
- Falscher Account, falsche Lösung. Wenn du den Account hinter einer weitergeleiteten E-Mail wiederherstellst oder ihm etwas gutschreibst, obwohl die Order ID jemand anderem gehört, bekommt eine Person bezahlten Service, die nie etwas gekauft hat.
Keines dieser Muster braucht eine Rückbuchung oder eine Frist, um wehzutun. Es sind einfach Support-Antworten ohne Fakten. Ein API-Aufruf pro Ticket beendet das Raten.
Heißt revocationReason 1, dass ich etwas falsch gemacht habe?
Nicht unbedingt. Laut Apple bedeutet Grund 1, dass Apple den Kauf wegen eines tatsächlichen oder vermuteten Problems in deiner App erstattet hat. Das Wort vermutet trägt dabei viel. Aber eine Häufung von Erstattungen mit Grund 1 bei einem Produkt, nach einem Release, ist das deutlichste Produkt-Feedback, das Apple dir gibt. Zähl sie.
Wie sich die Order ID von Google Play unterscheidet
Google Play funktioniert andersherum. Laut Googles Billing-Dokumentation bekommen Nutzer eine E-Mail mit einer eindeutigen Order ID für jeden einmaligen Produktkauf, für den ersten Abo-Kauf und für jede wiederkehrende Verlängerung, und du kannst die Order ID nutzen, um Erstattungen in der Play Console zu verwalten. Du durchsuchst die Bestellverwaltung nach Order ID oder nach der vollständigen E-Mail-Adresse des Nutzers und erstattest dann selbst.
| Frage | App Store Order ID | Google Play Order ID |
|---|---|---|
| Wo der Kunde sie findet | E-Mail-Beleg und Kaufverlauf im App Store | E-Mail-Beleg für jeden Kauf und jede Verlängerung |
| Wie du sie abfragst | Look Up Order ID in der App Store Server API | Suche in der Bestellverwaltung der Play Console |
| Kannst du damit erstatten | Nein. Apple entscheidet | Ja. Volle Erstattungen und Teilerstattungen bei In-App-Käufen und Abos |
| Beweisfenster für die Erstattung | CONSUMPTION_REQUEST, 12 Stunden, Apple entscheidet | Chargeback-Prüfung über orders.reviewrefund, 24 Stunden |
| Lässt sich eine Erstattung rückgängig machen | Nicht von dir | Nein. Laut Play Console lässt sich eine Erstattung nicht rückgängig machen |
Bei Google Play zählt die Order ID mehr, weil du selbst den Knopf drückst. Laut Play Console entfernt die Erstattung der neuesten Abo-Bestellung das Abo sofort und storniert künftige Verlängerungen, während die Erstattung einer älteren Bestellung nur eine Erstattung ist und das Abo aktiv lässt. Teilerstattungen gibt es nur für Bestellungen ab März 2018, und eine kostenpflichtige App kannst du nicht teilweise erstatten.
Stell die Order ID an den Anfang deines Erstattungs-Supports
- Frag in deinem Support-Formular nach der Order ID, mit einem Hinweis in einer Zeile: Sie steht in der Beleg-E-Mail von Apple oder Google Play.
- Ruf unter iOS Look Up Order ID auf, dekodiere jede Transaktion und zeig dem Support productId, purchaseDate, revocationDate und revocationReason auf einem Bildschirm.
- Ist OrderLookupStatus 1, halt an und frag nach dem richtigen Beleg. Gewähr nichts.
- Ist revocationDate gesetzt, bestätige, dass der Zugang auf deinem Server schon entzogen ist, und schließ dann das Ticket. Keine Kulanz obendrauf.
- Ist es nicht gesetzt und der Kunde will sein Geld zurück, schick ihn zu reportaproblem.apple.com und halte deinen CONSUMPTION_REQUEST Handler für das 12-Stunden-Fenster bereit. RefundHalt beantwortet diese Anfrage mit den Verbrauchsdaten, die Apple verlangt.
- Unter Android such die genaue Bestellung in der Play Console, bevor du erstattest, und entscheide bewusst zwischen reiner Erstattung und Erstattung mit Entzug.
Häufig gestellte Fragen
- Wie frage ich als Entwickler eine App Store Order ID ab?
- Ruf den App Store Server API Endpunkt Look Up Order ID auf, GET https://api.storekit.apple.com/inApps/v1/lookup/{orderId}, mit deinem signierten JWT. Eine gültige Order ID liefert OrderLookupStatus 0 und eine oder mehrere signierte Transaktionen, die du dekodierst, um productId, purchaseDate und etwaige Erstattungsdetails zu lesen. Der Endpunkt ist in der Sandbox nicht verfügbar.
- Wo findet ein Kunde seine App Store Order ID?
- Im Beleg, den Apple bei jedem In-App-Kauf per E-Mail schickt, und in seinem Kaufverlauf im App Store auf reportaproblem.apple.com oder unter Apps & Kaufverlauf in der App Store App. Der Kaufverlauf zeigt standardmäßig die letzten 90 Tage, mit Filtern für ältere Käufe.
- Kann ich einen App Store Kauf mit der Order ID erstatten?
- Nein. Entwickler können keine App Store Erstattungen auslösen. Apple entscheidet, wenn der Kunde auf reportaproblem.apple.com eine Erstattung anfordert. Dein Beitrag ist die Antwort auf Apples CONSUMPTION_REQUEST innerhalb von 12 Stunden mit Send Consumption Information.
- Wie erkenne ich, ob Apple einen Kauf schon erstattet hat?
- Frag die Order ID ab und prüf revocationDate in jeder dekodierten Transaktion. Ist es gesetzt, hat Apple den Kauf erstattet oder aus der Familienfreigabe entzogen. revocationReason 0 steht für andere Gründe wie einen versehentlichen Kauf, und 1 für ein tatsächliches oder vermutetes Problem in deiner App.
- Was bedeutet OrderLookupStatus 1?
- Es bedeutet, dass die Order ID für deine App nicht gültig ist, und die Antwort hat kein signedTransactions Array. Meist hat der Kunde einen Beleg aus einer anderen App geschickt, sich bei der ID vertippt oder einen Beleg geschickt, der nicht aus dem App Store stammt. Frag nach dem richtigen Beleg, bevor du etwas gewährst.
Quellen und weiterführende Informationen
- Apple Developer Documentation: Look Up Order ID
- Apple Developer Documentation: orderId
- Apple Developer Documentation: revocationReason
- Apple Developer Documentation: Identifying rate limits
- Apple Support: See your purchase history for the App Store, iTunes Store, and more
- Apple Support: Request a refund for apps or content that you bought from Apple
- Play Console Help: Refund orders and subscriptions
- Android Developers: Integrate the Google Play Billing Library into your app
RefundHalt
Der Rückerstattungs-Autopilot für App Store und Google Play
Weiterlesen
Erstattungen beim iOS-Web-Checkout landen bei Ihnen statt bei Apple, und die Bankrückbuchungen auch
US-iPhone-Apps dürfen Käufer jetzt zu einem Web-Checkout weiterleiten. Apple sagt, dass es bei Erstattungen für diese Käufe nicht helfen kann. Erstattungsanfragen, Rückbuchungen und die Streitfallgebühren von $15 gehen also auf Sie über. Hier lesen Sie, was sich ändert, was es kostet und wie Sie Streitfälle gering halten.
Die Erstattung einer kostenpflichtigen App erreicht nie Ihren Server, also muss die App sie selbst bemerken
Erstattungen für vorab bezahlte Apps umgehen jede Benachrichtigung, auf die Ihr Server hört. Google gibt Käufern eine Rückgabe innerhalb von zwei Stunden und deinstalliert die App, Apple kann nach Ihrem Vertrag innerhalb von 90 Tagen erstatten, und keiner der beiden verlangt Belege. Hier steht, was jeder Store Ihnen mitteilt, was es kostet und wie Sie in der App prüfen.