# App Storen palautus: mitä kehittäjä näkee

> Apple päättää App Storen palautuksista yksin. Kehittäjä saa CONSUMPTION_REQUEST-ilmoituksen, voi vastata 12 tunnissa ja kuulee päätöksen REFUND-ilmoituksesta.

Alkuperäinen sivu: [App Storen palautus: mitä kehittäjä näkee](https://devoria.fr/fi/blog/app-store-palautus-mita-kehittaja-nakee)
Kirjoittaja: [Mehdi Azizi](https://devoria.fr/fi/mehdi-azizi)
Julkaistu: 2026-11-04
Sisältö tarkistettu viimeksi: 2026-11-04


App Storessa **palautuksen myöntää tai hylkää aina Apple, ei koskaan kehittäjä.** Asiakas tekee pyynnön Applen sivustolla tai sovelluksestasi. Jos olet kytkenyt käyttöön Applen palvelinilmoitukset, saat `CONSUMPTION_REQUEST`-ilmoituksen pyynnön hetkellä ja sitten `REFUND`- tai `REFUND_DECLINED`-ilmoituksen päätöksen jälkeen. Siinä välissä sinulla on 12 tuntia aikaa lähettää kulutustiedot ja oma toiveesi, kunhan asiakas on antanut siihen suostumuksensa.

Myönnetty palautus poistaa oston asiakkaan aktiivisista oikeuksista ja näkyy negatiivisena myyntiraporteissasi. Tämä opas käy läpi jokaisen vaiheen, sen mitä voit lähettää Applelle ja sen, mitä saat tehdä väärinkäytöksiä vastaan. Säännöt tulevat Applen sivuilta, jotka luin uudelleen 3.11.2026. Todellinen esimerkki tulee hälytyksestä, jonka kytkin sovelluksiini lokakuussa.

## Kuka päättää App Storen palautuksesta?

Apple, ja vain Apple. [Applen tukisivu](https://support.apple.com/en-us/118223) kuvaa asiakkaan polun: hän kirjautuu osoitteeseen reportaproblem.apple.com, valitsee "Request a refund", kertoo syyn ja valitsee kyseisen oston. Apple neuvoo häntä odottamaan vastausta 24-48 tuntia.

Asiakas voi pyytää palautusta myös sovelluksestasi. StoreKit tarjoaa tähän [pyyntöikkunan](https://developer.apple.com/documentation/storekit/transaction/beginrefundrequest%28in%3A%29-9k0pj), joka on saatavilla iOS 15:stä lähtien. Apple suosittelee avaamaan sen tilin asetuksista tai ohjevalikosta. Ikkuna näyttää oston ja listan syistä, ja Apple tekee päätöksen enintään 48 tunnissa.

**Kummassakaan tapauksessa sinun ei tarvitse hyväksyä mitään.** Voit vain antaa tietoja ja toiveen, jotka ovat yksi monista tekijöistä Applen päätöksessä.

## Mitä kukin näkee, vaihe vaiheelta

| Vaihe               | Asiakkaan puolella                         | Kehittäjän puolella                                         |
| ------------------- | ------------------------------------------ | ----------------------------------------------------------- |
| Pyyntö              | Applen lomake tai sovelluksen pyyntöikkuna | `CONSUMPTION_REQUEST`-ilmoitus                              |
| 12 tunnin sisällä   | Odottaa                                    | Kulutustiedot voi lähettää                                  |
| 48 tunnin sisällä   | Applen vastaus                             | `REFUND`- tai `REFUND_DECLINED`-ilmoitus                    |
| Myönnön jälkeen     | Rahat palautetaan maksutavalle             | Osto poistuu aktiivisista oikeuksista, negatiiviset yksiköt |
| Kiistämisen jälkeen | Apple peruu palautuksen                    | `REFUND_REVERSED`-ilmoitus, pääsy palautettava              |

App Store Connect näyttää vain jo myönnetyt palautukset, Sales and Trends -osiossa. **Itse pyyntö tulee vain palvelinilmoitusten kautta.** Ilman niitä huomaat palautuksen vasta jälkikäteen.

## Palautuksen palvelinilmoitukset

[App Store Server Notifications V2](https://developer.apple.com/documentation/appstoreservernotifications/notificationtype) lähettää viisi tässä hyödyllistä tyyppiä. Saat ne App Store Connectissa ilmoittamaasi HTTPS-osoitteeseen, yksi tuotannolle ja yksi sandboxille.

| Ilmoitus              | Mitä se kertoo                                        | Mitä teet                            |
| --------------------- | ----------------------------------------------------- | ------------------------------------ |
| `CONSUMPTION_REQUEST` | Asiakas pyytää palautusta                             | Vastaa 12 tunnissa, jos suostumus on |
| `REFUND`              | Apple on palauttanut maksun                           | Poista palautettu sisältö tai pääsy  |
| `REFUND_DECLINED`     | Apple hylkäsi pyynnön                                 | Ei mitään, pääsy jatkuu              |
| `REFUND_REVERSED`     | Apple peruu palautuksen asiakkaan kiistämisen jälkeen | Palauta se, minkä poistit            |
| `REVOKE`              | Perhejaossa jaettu osto ei ole enää saatavilla        | Poista perheenjäsenen pääsy          |

Palvelimesi täytyy vastata HTTP-koodilla väliltä 200-206. [Ilmoituksiin vastaamista käsittelevän sivun](https://developer.apple.com/documentation/appstoreservernotifications/responding-to-app-store-server-notifications) mukaan Apple yrittää muuten uudelleen viisi kertaa: 1, 12, 24, 48 ja 72 tuntia edellisen yrityksen jälkeen. Sandboxissa se lähettää vain kerran.

## Consumption API: mitä voit kertoa Applelle

Kun pyyntö tulee, voit vastata [Send Consumption Information](https://developer.apple.com/documentation/appstoreserverapi/send-consumption-information) -kutsulla. Sääntö mahtuu yhteen Applen lauseeseen: "Respond within 12 hours of receiving the `CONSUMPTION_REQUEST` notification." API:n versio 2 koskee kaikkia tuotetyyppejä, myös tilauksia.

[Pyynnön](https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest) kentät:

| Kenttä                  | Pakollinen | Mitä se kertoo Applelle                                    |
| ----------------------- | ---------- | ---------------------------------------------------------- |
| `customerConsented`     | Kyllä      | Asiakas on suostunut tietojensa jakamiseen                 |
| `deliveryStatus`        | Kyllä      | Osto on toimitettu ja toimii, tai miksi sitä ei toimitettu |
| `sampleContentProvided` | Kyllä      | Ennen ostoa tarjottiin kokeilu, näyte tai kuvaus           |
| `consumptionPercentage` | Ei         | Kulutettu osuus, 0-100 000 vastaa 0-100 %                  |
| `refundPreference`      | Ei         | Toiveesi: `DECLINE`, `GRANT_FULL` tai `GRANT_PRORATED`     |

Kaksi tarkennusta on tärkeitä. Jos `deliveryStatus` ei ole `DELIVERED`, kulutetun osuuden on oltava nolla. Ja kun kyse on tilauksen suhteellisesta palautuksesta, jätät kulutetun osuuden pois: Apple laskee sen.

**Suostumus on kaiken edellytys.** Apple kirjoittaa: "You must obtain valid consent from the customer before sharing their personal data with Apple in the Send Consumption Information API." Ilman suostumusta et vastaa. Apple kieltää myös käyttämästä mainosseurannan lupaikkunaa suostumuksen keräämiseen: "Don't use the AppTrackingTransparency prompt to obtain consent".

## Jos käytät RevenueCatia

RevenueCatin kanssa se vastaanottaa Applen ilmoitukset ja vastaa pyyntöön [Refund Control](https://www.revenuecat.com/docs/customers/refund-control) -toiminnolla. Valitset yhden neljästä käytännöstä: suosi täyttä palautusta, suosi hylkäystä, lähetä vain kulutustiedot tai älä vastaa.

Tietojen jakamisen käyttöönotto tarkoittaa, että vahvistat saaneesi asiakkaidesi suostumuksen. RevenueCat sanoo sen itse: "Enabling consumption data sharing confirms that you obtained consent from your Customers." Se neuvoo myös varaamaan "Prefer no refund" -vaihtoehdon rajatulle ryhmälle ja varoittaa, jos tämä toive koskee suurinta osaa asiakkaistasi.

Jos haluat ilmoitukset myös omalle palvelimellesi, RevenueCat tarjoaa sovelluksen asetuksissa kentän "Apple Server Notification Forwarding URL". Se on kuvattu [sen Applen ilmoituksia käsittelevällä sivulla](https://www.revenuecat.com/docs/platform-resources/server-notifications/apple-server-notifications). Käytän itse tätä. Tilauksen rakentaminen RevenueCatilla on kuvattu artikkelissa [RevenueCat ja iOS:n sovelluksensisäinen tilaus](https://devoria.fr/fi/blog/revenuecat-tilaus-ios-sovellus).

## Vaikutus tuloihisi ja tilaukseen

**Pääsyyn.** [`currentEntitlements`-dokumentaation](https://developer.apple.com/documentation/storekit/transaction/currententitlements) mukaan "Products that the App Store has refunded or revoked don't appear in the current entitlements". Jos sovelluksesi tarkistaa oikeudet `currentEntitlements`-kutsulla, palautettu pääsy katoaa itsestään. Transaktio sisältää poiston päivämäärän ja syyn kentissä `revocationDate` ja `revocationReason`.

**Raportteihin.** [Myyntiraportin ohjeen](https://developer.apple.com/help/app-store-connect/reference/reporting/summary-sales-report) mukaan palautus näkyy negatiivisina yksikköinä ja negatiivisena asiakashintana. Tilausten osalta [tilausdatan sivu](https://developer.apple.com/help/app-store-connect/measure-app-performance/view-subscription-data) laskee täydet ja osittaiset palautukset tapahtumiin ja vähentää ne päivittäisistä yksiköistä.

**Maineeseesi.** [Guideline 5.6.4](https://developer.apple.com/app-store/review/guidelines/#5.6.4) mainitsee liialliset palautuspyynnöt yhtenä merkkinä riittämättömästä laadusta. Korkea palautusaste ei ole pelkkää rahan menetystä: Apple voi ottaa sen huomioon arvioidessaan, noudatatko toimintaohjeita.

## Oma tapaukseni: sovelluksiini kytketty hälytys

Kytkin 12.10.2026 hälytyksen sovelluksiini. RevenueCat välittää Applen ilmoitukset devoria.fr:n reitille. Se tarkistaa Applen allekirjoituksen ja lähettää minulle hälytyksen ilman summaa. Halusin nähdä pyynnön heti sen saapuessa, en pelkkää lopputulosta.

18. lokakuuta ensimmäinen oikea pyyntö tuli TradaZeniin, kaupankäyntisimulaattoriini. Kyseessä oli vuositilaus, joka maksettiin 7 päivän ilmaisen kokeilun päätteeksi. Ilmoitettu syy: tahaton osto. Kolme opetusta:

1. **Sama pyyntö voi tulla useita kertoja.** Sain saman hälytyksen kolmesti samana iltana. Siitä lähtien jokainen hälytys on deduplikoitu ilmoitustyypin ja transaktiotunnisteen perusteella.
1. **Päätös tuli alle vuorokaudessa.** Apple hylkäsi pyynnön noin 22 tuntia sen jälkeen. Asiakas säilytti pääsynsä.
1. **Hylkäys ei ole loppu.** Sama asiakas teki uuden pyynnön kaksi päivää myöhemmin, samasta transaktiosta.

> Kokeilun päätteeksi tehtyä "tahaton osto" -pyyntöä ei voiteta vastauksella Applelle. Se ehkäistään paywallissa, ennen ensimmäistä maksua.

## Väärinkäytösten rajoittaminen sääntöjä rikkomatta

**Mikä on sallittua:**

- **Vastaa jokaiseen pyyntöön tarkoilla tiedoilla**, kun asiakas on antanut suostumuksensa.
- **Ilmaise kohdennettu toive**, esimerkiksi hylkäys jo kulutetulle ostolle, sen sijaan että toivoisit hylkäystä kaikille.
- **Yhdistä jokainen `REFUND` asiakastiliin.** [Applen palautusilmoituksia käsittelevä sivu](https://developer.apple.com/documentation/storekit/handling-refund-notifications) suosittelee tätä toistuvien palautusten tunnistamiseen.
- **Kerro selkeästi ennen ostoa, mitä ostetaan.** [Guideline 3.1.2(c)](https://developer.apple.com/app-store/review/guidelines/#3.1.2) edellyttää, että kuvaat, mitä käyttäjä saa hinnalla, ennen kuin tarjoat tilausta.

**Mikä on kiellettyä:**

- **Väärien tietojen lähettäminen** pyynnön hylkäyttämiseksi tai vastaaminen ilman suostumusta.
- **Suostumuksen kerääminen mainosseurannan lupaikkunalla**, minkä Apple kieltää suoraan.
- **Ostoon houkutteleminen ansalla.** [Guideline 5.6](https://developer.apple.com/app-store/review/guidelines/#5.6) kieltää painostamasta asiakkaita ei-toivottuihin ostoihin tai laskuttamasta siitä, mitä ei toimiteta.
- **Painostaminen** asiakasta, joka pyytää palautusta. Sama sääntö vaatii asiakaspalvelulta kunnioitusta, ilman pelottelua.

Paras keino on silti ennen ostoa: paywall, joka kertoo hinnan, ensimmäisen maksun päivämäärän ja peruutustavan. Vältettävät virheet ovat artikkelissa [paywallin virheet](https://devoria.fr/fi/blog/ios-paywall-aloittelijan-virheet-myynti), ja kokeilun säännöt artikkelissa [ilmainen kokeilu App Storessa](https://devoria.fr/fi/blog/introductory-offer-ilmainen-kokeilu-ios).

## Testaa ennen tuotantoa

[Pyyntöjen testaamista käsittelevän sivun](https://developer.apple.com/documentation/storekit/testing-refund-requests) mukaan sandbox ja Xcoden StoreKit-testit hyväksyvät palautuspyynnöt. Sandboxissa mikä tahansa syy johtaa automaattiseen myöntöön. Simuloidaksesi hylkäystä valitse "Other" ja kirjoita `DECLINE`. Suhteellista palautusta varten kirjoita `GRANT_PRORATED`. Sandboxissa kulutusvastauksesi on lähdettävä viiden minuutin sisällä.

## Tilaus, jota palautetaan harvemmin

[iOS & Android Kit](https://devoria.fr/fi/kits/ios) perustuu sovellusteni koodiin, ja siinä onboarding, paywall ja tilaukset on jo koodattu. Se etenee neljässä vaiheessa App Storeen asti, omaan tahtiisi. Koko rakenne on kuvattu sivulla [iOS:n sovelluksensisäinen tilaus](https://devoria.fr/fi/expertise/ios-sovelluksen-sisainen-tilaus), ja Applen tilaussäännöt artikkelissa [guideline 3.1.2](https://devoria.fr/fi/blog/guideline-3-1-2-sovellus-hylatty-tilaus).

Ennen kuin julkaiset paywallisi, [tee ilmainen diagnoosi](https://devoria.fr/fi/diagnostic): se kertoo, mikä projektiasi oikeasti jarruttaa, ja lähettää sinulle tarkistuslistani Applen hylkäysten välttämiseen.

## Usein kysytyt kysymykset

### Voiko kehittäjä hylätä App Storen palautuksen?

Ei. Apple päättää yksin. Voit lähettää kulutustiedot ja toiveen, esimerkiksi `DECLINE`, jotka ovat yksi monista tekijöistä. Viimeinen sana on Applella.

### Saako kehittäjä tiedon palautuspyynnöstä?

Kyllä, jos hän on ottanut käyttöön App Store Server Notifications V2:n. Apple lähettää `CONSUMPTION_REQUEST`-ilmoituksen pyynnön hetkellä ja sitten `REFUND`- tai `REFUND_DECLINED`-ilmoituksen päätöksen jälkeen. Ilman ilmoituksia näet raporteissasi vain myönnetyt palautukset.

### Kauanko Applella kestää käsitellä palautuspyyntö?

Apple lupaa asiakkaalle 24-48 tuntia. StoreKitin dokumentaatio puhuu enintään 48 tunnista. Sinulla on 12 tuntia aikaa lähettää kulutustiedot.

### Mitä pääsylle tapahtuu palautuksen jälkeen?

Palautettu osto poistuu asiakkaan aktiivisista oikeuksista: StoreKit 2 ei enää palauta sitä `currentEntitlements`-kutsussa. Jos Apple myöhemmin peruu palautuksen, saat `REFUND_REVERSED`-ilmoituksen ja sinun täytyy palauttaa pääsy.

### Tarvitaanko asiakkaan suostumus Applelle vastaamiseen?

Kyllä. Apple vaatii pätevän suostumuksen ennen tietojen jakamista Consumption API:n kautta. Ilman sitä et vastaa ilmoitukseen. Mainosseurannan lupaikkunaa ei saa käyttää sen keräämiseen.

### Vaikuttavatko palautukset sovellukseeni negatiivisesti?

Voivat vaikuttaa. Guideline 5.6.4 mainitsee liialliset palautuspyynnöt yhtenä merkkinä riittämättömästä laadusta, ja Apple voi ottaa sen huomioon arvioidessaan toimintaohjeiden noudattamista.


## Projektisi

[iOS & Android Kit](https://devoria.fr/fi/kits/ios): Tee iPhone- ja Android-sovelluksesi Claude Codella: sovellusteni pohjakoodi, polku kauppoihin asti ja kaikki kitit. 99 €.

[Diagnoosi: mikä erottaa sinut omasta iPhone-sovelluksestasi](https://devoria.fr/fi/diagnostic): 7 kysymystä, 60 sekuntia: tiedät, mikä oikeasti estää sinua julkaisemasta iPhone-sovellustasi, saat 4 vaiheen polkusi ja sinulle sopivan kitin.
