Alle Artikel
Tiefenanalyse8 Min. Lesezeit

Eine Erstattung über die Advanced Commerce API ist der einzige Weg, wie ein iOS-Entwickler eine Rückerstattung auslösen kann, und Apple entscheidet trotzdem am Ende

Die meisten iOS-Entwickler können Kunden kein Geld erstatten. Apps mit Apples Advanced Commerce API können eine Erstattung beantragen, ein Abo widerrufen oder einen eigenen Betrag zurückzahlen. So funktioniert jeder Endpoint, das kann Apple weiterhin ablehnen, und hier geht beim Geld etwas schief.

Eine Frau im Homeoffice stöbert auf einem iPad neben einem Laptop in einer großen Bibliothek mit Hörbüchern und Kursen, die Art App mit großem Katalog, die Apple über die Advanced Commerce API eine Erstattungsanfrage senden kann

Wichtigste Erkenntnisse

  • Ein Apple-Ingenieur sagte im Juni 2026, dass ein Entwickler für einen gewöhnlichen App-Store-Kauf keine Erstattung direkt veranlassen kann. Der einzige Beitrag des Entwicklers sind die Nutzungsdaten und die refundPreference, die er als Antwort auf einen CONSUMPTION_REQUEST sendet.
  • Apps, die für Apples Advanced Commerce API zugelassen sind, erhalten den Endpoint Request Transaction Refund. Er bittet den App Store, eine Einmalzahlung oder eine Abo-Transaktion zu erstatten. Dazu kommen die Endpoints Revoke Subscription und Cancel a Subscription.
  • Um die Endpoints der Advanced Commerce API für Erstattung, Widerruf und Kündigung aufzurufen, muss der Account Holder des Entwicklers das Advanced Commerce API Addendum unterzeichnen. Laut Apple liefert der Aufruf einen Fehler, wenn die neueste Fassung nicht akzeptiert wurde.
  • Der Endpoint Request Transaction Refund akzeptiert einen refundType von FULL, PRORATED oder CUSTOM. Ein refundAmount in Tausendstel der Währungseinheit ist nur mit CUSTOM erlaubt. Laut Apple muss der Betrag in allen Regionen außer Kanada und den USA die Steuer enthalten.
  • Apples Feld refundRiskingPreference steht standardmäßig auf true. Damit darf der App Store zur eigenen Erstattungsanfrage des Entwicklers einen CONSUMPTION_REQUEST senden. Apple erwartet eine Antwort innerhalb von 12 Stunden.
  • Die Endpoints der Advanced Commerce API für Erstattung, Widerruf und Kündigung sind in der Produktion auf 5 Anfragen pro Sekunde pro App begrenzt. Die Sandbox erhält 10 Prozent davon.
  • Nach einem erfolgreichen Aufruf von Revoke Subscription sendet Apple eine REFUND-Benachrichtigung. Entwickler sollen den Dienst zum revocationDate beenden, nicht bevor die Benachrichtigung eintrifft.

Gewöhnliche iOS-Entwickler können Kunden kein Geld erstatten. Im Juni 2026 beantwortete ein App Store Commerce Engineer eine Frage im Entwicklerforum mit einem Satz: Derzeit ist es einem Entwickler nicht möglich, eine Erstattung direkt zu veranlassen. Es gibt eine Ausnahme, und sie steckt in der Advanced Commerce API. Apps, die Apple dafür zulässt, können eine Erstattungsanfrage über die Advanced Commerce API senden, ein Abo mit Rückzahlung widerrufen oder einen eigenen Betrag anfordern. Ob das Geld fließt, entscheidet weiterhin Apple.

Was die Advanced Commerce API ist und wer sie bekommt

Apple hat die Advanced Commerce API am 23. Januar 2025 veröffentlicht. Sie wickelt Apple In-App-Käufe für außergewöhnlich große Kataloge ab: individuelle Einmalkäufe, Abos und Abos mit optionalen Add-ons. Sie legen nicht jedes Produkt in App Store Connect an. Sie definieren SKUs auf Ihrem eigenen Server und übermitteln sie Apple beim Kauf.

Der Zugang wird pro App gewährt. Sie füllen ein Antragsformular aus, und Apples Seite zur Berechtigung nennt drei Geschäftsmodelle, die für die App zentral sein müssen:

  • Außergewöhnlich große Kataloge von Einmalkäufen, etwa Hörbücher, Kurse, Lehrgänge oder Mini-Apps.
  • Außergewöhnlich große Kataloge von Abo-Inhalten, bei denen das Angebot jedes Creators ein eigenes Abo ist.
  • Ein Abo mit optionalen Add-ons, die sich gemeinsam als ein Kauf verlängern, etwa Premium-Kanäle oder Sport.

Apple lässt Apps auch dann einen Antrag stellen, wenn ein anderes Programm die API voraussetzt. Das Mini Apps Partner Program, das Mitgliedern 85% der qualifizierten In-App-Kauf-Umsätze in gehosteten Mini-Apps auszahlt, verlangt sie.

Die Erstattungs-Endpoints kamen später, und sie brauchen eine Unterschrift

Version 1.1 vom 24. März 2025 brachte Request Transaction Refund und Revoke Subscription. Laut Apples Programmseite können Apps mit Abo-Inhalten auch für die Cancel-, Revoke- und Refund-APIs berechtigt sein, um Kündigungen abzuwickeln, Inhalte nach dem Kauf zu prüfen und ihre Kataloge zu verwalten. Jede Endpoint-Seite nennt dieselbe Bedingung: Ihr Account Holder muss das Advanced Commerce API Addendum unterzeichnen, und ist die neueste Fassung nicht akzeptiert, liefert der Aufruf einen Fehler. Das Addendum, nicht die Dokumentation, legt fest, für welche Anwendungsfälle jeder Endpoint gedacht ist.

Die drei Endpoints im Vergleich

Cancel a SubscriptionRevoke SubscriptionRequest Transaction Refund
PfadadvancedCommerce/v1/subscription/cancel/{transactionId}advancedCommerce/v1/subscription/revoke/{transactionId}advancedCommerce/v1/transaction/requestRefund/{transactionId}
UmfangAutomatisch verlängerbare AbosEin Abo und alle seine ArtikelEinmalzahlungen und Abo-Transaktionen
Geld zurückKeinesFULL oder PRORATEDFULL, PRORATED oder CUSTOM, pro SKU
ZugangLäuft bis zum Ende des ZeitraumsEndet zum revocationDatePro Artikel über das Revoke-Flag
Rate-Limit in Produktion5 pro Sekunde5 pro Sekunde5 pro Sekunde

Cancel a Subscription stoppt die nächste Abbuchung

Cancel schaltet die automatische Verlängerung ab. Laut Apple behält der Kunde den Zugang bis zum Ende des laufenden Zeitraums. Erstattet wird nichts. Das ist der richtige Aufruf, wenn ein Kunde aussteigen will und die bezahlte Zeit bereits genutzt hat.

Revoke Subscription beendet alles sofort

Revoke setzt die automatische Verlängerung auf false und widerruft das Abo mit voller oder anteiliger Erstattung. Der Body enthält refundReason, refundRiskingPreference, refundType und requestInfo. Apple sendet dann eine REFUND-Benachrichtigung an Ihren Endpoint für App Store Server Notifications V2. Apples Anweisung ist eindeutig: Beenden Sie den Dienst zum revocationDate aus dieser Benachrichtigung, und beenden Sie ihn nicht, bevor die Benachrichtigung eintrifft.

Request Transaction Refund arbeitet Artikel für Artikel

Das ist das präzise Werkzeug. Sie senden eine Liste von Artikeln, und jeder nennt eine SKU, einen refundReason, einen refundType und ein Revoke-Flag. Bei CUSTOM senden Sie zusätzlich refundAmount in Tausendstel der Währungseinheit, 4990 bedeutet also 4,99. Senden Sie einen Betrag mit FULL oder PRORATED, lehnt Apple ihn mit Fehler 4000155 ab. Die Antwort enthält eine signierte Transaktion und bei Abos signierte Verlängerungsinformationen.

Apple akzeptiert diese refundReason-Werte: UNINTENDED_PURCHASE, FULFILLMENT_ISSUE, UNSATISFIED_WITH_PURCHASE, LEGAL, OTHER und MODIFY_ITEMS_REFUND. Ein siebter Wert, SIMULATE_REFUND_DECLINE, dient nur Tests in Sandbox und TestFlight. Es gibt ihn, weil der App Store Nein sagen kann.

Apple kann auch Ihre eigene Erstattungsanfrage ablehnen

Der Name des Endpoints ist ehrlich. Es ist eine Anfrage. Zwei Felder zeigen, wo die Entscheidung tatsächlich liegt.

refundRiskingPreference lädt zu einer Nutzungsprüfung ein

Apple beschreibt refundRiskingPreference als Angabe, ob der App Store Sie nach Nutzungsdaten fragt, um die Erstattungsentscheidung zu stützen. Standardwert ist true. Ist der Wert true, erhalten Sie zu Ihrer eigenen Erstattungsanfrage einen CONSUMPTION_REQUEST und antworten über Send Consumption Information. Apple bittet Entwickler, innerhalb von 12 Stunden nach Eingang eines CONSUMPTION_REQUEST zu antworten. Setzen Sie den Wert auf false, kommt diese Benachrichtigung nicht.

Die Fehler, die Nein sagen

FehlerCodeWas Apple sagt
AlreadyRefundedError4030021Die Transaktion wurde bereits erstattet
PendingRefundError4000181Für die Transaktion laufen Erstattungen
TransactionNotRefundableError4030024Die Transaktion ist nicht erstattungsfähig
TransactionCannotBeRefundedContactSupportError4030025Der Kunde kann sich an den Apple Support wenden
RefundAmountWithoutCustomError4000155Ein Betrag wurde ohne CUSTOM gesendet

Mit PendingRefundError sollten Sie rechnen. Eine wahrscheinliche Ursache: Der Kunde hat Apple bereits über Report a Problem gefragt, bevor Ihr Support-Team gehandelt hat. Apples Zulassungsregeln verlangen von diesen Apps ohnehin einen In-App-Weg zur Erstattung, entweder einen Report-a-Problem-Link oder die API beginRefundRequest. Beide Türen stehen also gleichzeitig offen.

Ein Entwickler hält ein iPhone über ein ausgedrucktes Transaktionsbuch und prüft, welchen Artikel eine Erstattung über die Advanced Commerce API abdecken soll

Was Sie eine Erstattung über die Advanced Commerce API an Geld kostet

Aus eigener Initiative zu erstatten wirkt günstiger als ein Streitfall. Es bleibt trotzdem ein Geldabfluss, und die API macht manche Fehler leicht im großen Maßstab wiederholbar.

Steuer im individuellen Betrag

Laut Apple muss ein angeforderter refundAmount in allen Regionen außer Kanada und den USA die Steuer enthalten. Ein Team, das eine CUSTOM-Erstattung aus dem Nettopreis seiner SKU berechnet, erstattet Kunden in jeder anderen Storefront zu wenig und zahlt dann mit Support-Zeit, um jeden Fall zu korrigieren.

Kosten, die nicht zurückkommen

  • Auszahlungen: In einem Creator-Katalog oder bei einem Mini-App-Host wird der Anteil des Creators oft beim Verkauf ausgezahlt. Eine Erstattung an den Kunden holt ihn nicht zurück.
  • Content-Lizenzen: Gebühren pro Titel an einen Rechteinhaber für ein Hörbuch oder einen Kurs können je nach Vertrag schon durch den Zugriff entstehen, und eine Erstattung macht sie nicht rückgängig.
  • Rechenleistung: Streaming, Transcoding und alle Serverarbeit für den Kauf stehen bereits auf Ihrer Rechnung.
  • API-Aufrufe: Drittanbieterdienste, die pro Anfrage abrechnen, von Sprache bis Modell-Inferenz, bleiben nach der Erstattung abgerechnet.

Alles erstattet, obwohl ein Artikel gemeint war

Revoke Subscription erstattet und beendet das gesamte Abo, Add-ons eingeschlossen. Beanstandet der Kunde nur ein Add-on, können Sie mit Request Transaction Refund genau diese SKU erstatten, mit gesetztem Revoke-Flag nur für diesen Artikel. Wer bei einer Beschwerde über einen Artikel Revoke Subscription aufruft, gibt auch den Umsatz des Basistarifs zurück.

Eine Checkliste für den Aufbau, bevor Sie das einschalten

  • Stellen Sie sicher, dass Ihr Account Holder das aktuelle Advanced Commerce API Addendum akzeptiert hat, und lassen Sie sich bei dem Fehler alarmieren, der bei Ablauf zurückkommt.
  • Erzeugen Sie für jede Anfrage eine neue requestReferenceId als UUID, und verwenden Sie dieselbe nur erneut, um einen abgelaufenen Aufruf zu wiederholen.
  • Stellen Sie Erstattungsaufrufe in eine Warteschlange. Das Limit liegt bei 5 pro Sekunde pro App, und ein 429 enthält einen Retry-After-Header in UNIX-Millisekunden.
  • Testen Sie Ablehnungen in der Sandbox mit SIMULATE_REFUND_DECLINE, und denken Sie daran, dass die Sandbox-Limits 10 Prozent der Produktion betragen.
  • Entscheiden Sie refundRiskingPreference im Einzelfall, und halten Sie einen Responder für Nutzungsdaten für das 12-Stunden-Fenster bereit, wenn der Wert true bleibt.
  • Beenden Sie den Zugang erst, wenn die REFUND-Benachrichtigung eintrifft, und zwar zu ihrem revocationDate.
  • Protokollieren Sie Grund, Betrag und SKU jeder Anfrage, damit Sie Ihre eigene Erstattungsquote sehen, bevor Apple sie sieht.

Häufig gestellte Fragen

Kann ein iOS-Entwickler einem Kunden direkt Geld erstatten?
Nicht bei einem gewöhnlichen App-Store-Kauf. Ein Apple-Ingenieur sagte im Juni 2026, dass ein Entwickler eine Erstattung nicht direkt veranlassen kann. Apps, die für die Advanced Commerce API zugelassen sind und das Addendum unterzeichnet haben, können über den Endpoint Request Transaction Refund eine Erstattung beantragen. Entscheiden tut weiterhin Apple.
Was ist der Unterschied zwischen Cancel und Revoke in der Advanced Commerce API?
Cancel schaltet die automatische Verlängerung ab, und der Kunde behält den Zugang bis zum Ende des Zeitraums, ohne Erstattung. Revoke beendet das Abo und alle seine Artikel sofort und erstattet den vollen oder anteiligen Betrag. Nach einem Revoke sendet Apple eine REFUND-Benachrichtigung.
Kann ich mit der Advanced Commerce API einen individuellen Betrag erstatten?
Ja. Setzen Sie refundType auf CUSTOM und übergeben Sie refundAmount in Tausendstel der Währungseinheit. Laut Apple muss der Betrag in allen Regionen außer Kanada und den USA die Steuer enthalten. Ein Betrag mit FULL oder PRORATED führt zu Fehler 4000155.
Bekomme ich einen CONSUMPTION_REQUEST für eine Erstattung, die ich selbst beantragt habe?
Das kann passieren. refundRiskingPreference steht standardmäßig auf true. Damit darf der App Store Sie über einen CONSUMPTION_REQUEST nach Nutzungsdaten fragen, und Apple erwartet eine Antwort innerhalb von 12 Stunden. Setzen Sie den Wert auf false, wird diese Benachrichtigung laut Apple nicht gesendet.
Warum ist meine Erstattungsanfrage über die Advanced Commerce API fehlgeschlagen?
Prüfen Sie den Fehlercode. 4030021 bedeutet, die Transaktion wurde bereits erstattet, 4000181 bedeutet, eine Erstattung läuft bereits, 4030024 bedeutet, sie ist nicht erstattungsfähig, und 4030025 bedeutet, der Kunde soll sich an den Apple Support wenden. Ein nicht unterzeichnetes oder veraltetes Addendum führt ebenfalls zu einem Fehler.

Quellen und weiterführende Informationen

RefundHalt

Der Rückerstattungs-Autopilot für App Store und Google Play

Weiterlesen

Die nächste Rückerstattungsanfrage ist bereits unterwegs.

Richten Sie RefundHalt in der Zeit ein, die Sie brauchen, um eine weitere Support-E-Mail über eine Rückerstattung zu lesen, die Sie nicht anfechten konnten.