# Vračilo denarja v App Store: kaj vidi razvijalec

> O vračilu denarja v App Store odloča samo Apple. Razvijalec prejme CONSUMPTION_REQUEST, lahko odgovori v 12 urah, odločitev pa izve prek REFUND.

Izvirna stran: [Vračilo denarja v App Store: kaj vidi razvijalec](https://devoria.fr/sl/blog/vracilo-denarja-app-store-razvijalec)
Avtor: [Mehdi Azizi](https://devoria.fr/sl/mehdi-azizi)
Objava: 2026-11-04
Zadnja revizija vsebine: 2026-11-04


V App Store **vračilo denarja odobri ali zavrne Apple, nikoli razvijalec.** Stranka zahtevo odda na Applovi spletni strani ali v tvoji aplikaciji. Če imaš povezana Applova strežniška obvestila, ob zahtevi prejmeš obvestilo `CONSUMPTION_REQUEST`, ob odločitvi pa `REFUND` ali `REFUND_DECLINED`. Vmes imaš 12 ur, da pošlješ podatke o porabi in svojo preferenco, če je stranka v to privolila.

Odobreno vračilo odstrani nakup iz strankinih aktivnih pravic in se v poročilih o prodaji pokaže kot negativna vrednost. Ta vodnik opisuje vsak korak, kaj lahko pošlješ Applu in kaj smeš narediti proti zlorabam zahtev. Pravila izhajajo iz Applovih strani, ki sem jih ponovno prebral 3. novembra 2026. Resnični primer izhaja iz opozorila, ki sem ga oktobra povezal s svojimi aplikacijami.

## Kdo odloča o vračilu denarja v App Store?

Apple, in samo Apple. [Applova stran za podporo](https://support.apple.com/en-us/118223) opisuje pot stranke: prijavi se na reportaproblem.apple.com, izbere »Request a refund«, navede razlog in nato izbere nakup. Apple ji svetuje, naj na odgovor počaka 24 do 48 ur.

Stranka lahko vračilo zahteva tudi iz tvoje aplikacije. StoreKit za to ponuja [obrazec za zahtevo](https://developer.apple.com/documentation/storekit/transaction/beginrefundrequest%28in%3A%29-9k0pj), ki je na voljo od iOS 15. Apple svetuje, da ga odpreš iz nastavitev računa ali menija za pomoč. Prikaže nakup in seznam razlogov, Apple pa za odločitev potrebuje do 48 ur.

**V obeh primerih ti ničesar ne potrjuješ.** Lahko samo posreduješ informacije in preferenco, ki sta le dva izmed več kriterijev pri Applovi odločitvi.

## Kaj kdo vidi, korak za korakom

| Korak        | Stran stranke                           | Stran razvijalca                                      |
| ------------ | --------------------------------------- | ----------------------------------------------------- |
| Zahteva      | Applov obrazec ali obrazec v aplikaciji | Obvestilo `CONSUMPTION_REQUEST`                       |
| V 12 urah    | Čakanje                                 | Možno pošiljanje podatkov o porabi                    |
| V 48 urah    | Applov odgovor                          | Obvestilo `REFUND` ali `REFUND_DECLINED`              |
| Po odobritvi | Denar vrnjen na plačilno sredstvo       | Nakup odstranjen iz aktivnih pravic, negativne enote  |
| Po ugovoru   | Apple prekliče vračilo                  | Obvestilo `REFUND_REVERSED`, dostop je treba obnoviti |

App Store Connect ti v Sales and Trends pokaže samo že odobrena vračila. **Sama zahteva pride samo prek strežniških obvestil.** Brez njih za vračilo izveš šele naknadno.

## Strežniška obvestila pri vračilu

[App Store Server Notifications V2](https://developer.apple.com/documentation/appstoreservernotifications/notificationtype) pošiljajo pet tipov, ki so tu uporabni. Prejmeš jih na naslov HTTPS, ki si ga vpisal v App Store Connect, enega za produkcijo in enega za sandbox.

| Obvestilo             | Kaj sporoča                                               | Kaj narediš                           |
| --------------------- | --------------------------------------------------------- | ------------------------------------- |
| `CONSUMPTION_REQUEST` | Stranka zahteva vračilo                                   | Odgovoriš v 12 urah, če je privolitev |
| `REFUND`              | Apple je vrnil denar za transakcijo                       | Odstraniš vrnjeno vsebino ali dostop  |
| `REFUND_DECLINED`     | Apple je zahtevo zavrnil                                  | Nič, dostop ostane                    |
| `REFUND_REVERSED`     | Apple prekliče vračilo po strankinem ugovoru              | Obnoviš, kar si odstranil             |
| `REVOKE`              | Nakup, deljen prek družinske skupne rabe, ni več na voljo | Družinskemu članu odstraniš dostop    |

Tvoj strežnik mora odgovoriti s kodo HTTP med 200 in 206. Po [strani o odgovarjanju na obvestila](https://developer.apple.com/documentation/appstoreservernotifications/responding-to-app-store-server-notifications) Apple sicer poskusi še petkrat, 1, 12, 24, 48 in nato 72 ur po prejšnjem poskusu. V sandboxu pošlje samo enkrat.

## Consumption API: kaj lahko poveš Applu

Ko zahteva pride, lahko odgovoriš s [Send Consumption Information](https://developer.apple.com/documentation/appstoreserverapi/send-consumption-information). Pravilo je zajeto v enem Applovem stavku: »Respond within 12 hours of receiving the `CONSUMPTION_REQUEST` notification.« Različica 2 API-ja velja za vse vrste izdelkov, tudi za naročnine.

Polja [zahteve](https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest):

| Polje                   | Obvezno | Kaj pove Applu                                                 |
| ----------------------- | ------- | -------------------------------------------------------------- |
| `customerConsented`     | Da      | Stranka je privolila v deljenje svojih podatkov                |
| `deliveryStatus`        | Da      | Nakup je bil dostavljen in deluje, ali zakaj ni bil            |
| `sampleContentProvided` | Da      | Pred nakupom je bil na voljo preizkus, odlomek ali opis        |
| `consumptionPercentage` | Ne      | Porabljeni delež, od 0 do 100 000 za 0 do 100 %                |
| `refundPreference`      | Ne      | Tvoja preferenca: `DECLINE`, `GRANT_FULL` ali `GRANT_PRORATED` |

Pomembni sta dve podrobnosti. Če `deliveryStatus` ni `DELIVERED`, mora biti porabljeni delež nič. Pri sorazmernem vračilu za naročnino porabljeni delež izpustiš: Apple ga izračuna sam.

**Privolitev je pogoj za vse.** Apple piše: »You must obtain valid consent from the customer before sharing their personal data with Apple in the Send Consumption Information API.« Brez privolitve ne odgovoriš. Apple tudi prepoveduje, da bi privolitev pridobil z oknom za oglaševalsko sledenje: »Don't use the AppTrackingTransparency prompt to obtain consent«.

## Če uporabljaš RevenueCat

Z RevenueCat obvestila od Appla prejme on in on odgovori na zahtevo, z [Refund Control](https://www.revenuecat.com/docs/customers/refund-control). Izbereš eno izmed štirih politik: daješ prednost polnemu vračilu, daješ prednost zavrnitvi, pošlješ samo podatke o porabi ali ne odgovoriš.

Vklop deljenja podatkov pomeni, da potrjuješ, da imaš privolitev strank. RevenueCat to pove sam: »Enabling consumption data sharing confirms that you obtained consent from your Customers.« Svetuje tudi, da »Prefer no refund« uporabiš samo za ciljno skupino, in te opozori, ko ta preferenca zajame večino tvojih strank.

Če želiš obvestila prejemati tudi na svoj strežnik, ima RevenueCat v nastavitvah aplikacije polje »Apple Server Notification Forwarding URL«. Opisano je na [njegovi strani o Applovih obvestilih](https://www.revenuecat.com/docs/platform-resources/server-notifications/apple-server-notifications). To uporabljam jaz. Postavitev naročnine z RevenueCat je opisana v [RevenueCat in naročnina v aplikaciji iOS](https://devoria.fr/sl/blog/revenuecat-narocnina-v-aplikaciji-ios).

## Vpliv na prihodke in naročnino

**Na dostop.** Po [dokumentaciji `currentEntitlements`](https://developer.apple.com/documentation/storekit/transaction/currententitlements) »Products that the App Store has refunded or revoked don't appear in the current entitlements«. Če tvoja aplikacija pravice preverja s `currentEntitlements`, vrnjeni dostop izgine sam od sebe. Transakcija nosi datum in razlog odvzema v `revocationDate` in `revocationReason`.

**Na poročila.** Po [pomoči za poročilo o prodaji](https://developer.apple.com/help/app-store-connect/reference/reporting/summary-sales-report) se vračilo pokaže z negativnimi enotami in negativno ceno za stranko. Pri naročninah [stran o podatkih o naročninah](https://developer.apple.com/help/app-store-connect/measure-app-performance/view-subscription-data) šteje polna in delna vračila med dogodke in jih odšteje od dnevnih enot.

**Na tvoj ugled.** [Smernica 5.6.4](https://developer.apple.com/app-store/review/guidelines/#5.6.4) navaja pretirane zahteve za vračilo med znaki nezadostne kakovosti. Visoka stopnja vračil ni le izguba denarja: Apple jo lahko upošteva pri presoji, ali spoštuješ kodeks ravnanja.

## Moj primer: opozorilo na mojih aplikacijah

12. oktobra 2026 sem na svoje aplikacije povezal opozorilo. RevenueCat posreduje Applova obvestila na pot na devoria.fr. Ta preveri Applov podpis in mi pošlje opozorilo, brez zneska. Zahtevo sem hotel videti takoj, ko pride, ne samo rezultata.

13. oktobra je prišla prva prava zahteva, na TradaZen, moj simulator trgovanja. Letna naročnina, plačana po koncu 7-dnevnega brezplačnega preizkusa. Navedeni razlog: nenameren nakup. Tri lekcije:

14. **Ista zahteva lahko pride večkrat.** Isti večer sem trikrat prejel isto opozorilo. Od takrat vsako opozorilo odstranim kot dvojnik glede na tip obvestila in ID transakcije.
15. **Odločitev je prišla v manj kot dnevu.** Apple je zavrnil približno 22 ur po zahtevi. Stranka je obdržala dostop.
16. **Zavrnitev ni konec.** Ista stranka je dva dni pozneje oddala novo zahtevo za isto transakcijo.

> Zahteve zaradi »nenamernega nakupa« ob koncu preizkusa ne dobiš z odgovorom Applu. Prepreči jo na paywallu, pred prvim plačilom.

## Kako omejiti zlorabe zahtev, ne da bi kršil pravila

**Kaj je dovoljeno:**

- **Na vsako zahtevo odgovoriti z natančnimi podatki**, ko je stranka privolila.
- **Izraziti ciljno preferenco**, na primer zavrnitev za že porabljen nakup, namesto zavrnitve za vse.
- **Vsak `REFUND` povezati z računom stranke.** [Applova stran o obvestilih o vračilu](https://developer.apple.com/documentation/storekit/handling-refund-notifications) to priporoča za odkrivanje ponavljajočih se vračil.
- **Pred nakupom jasno povedati, kaj kupec dobi.** [Smernica 3.1.2(c)](https://developer.apple.com/app-store/review/guidelines/#3.1.2) zahteva, da opišeš, kaj uporabnik dobi za ceno, preden mu ponudiš naročnino.

**Kaj je prepovedano:**

- **Pošiljati lažne podatke**, da bi bila zahteva zavrnjena, ali odgovoriti brez privolitve.
- **Pridobiti privolitev z oknom za oglaševalsko sledenje**, kar Apple izrecno izključuje.
- **Zvabiti v nakup.** [Smernica 5.6](https://developer.apple.com/app-store/review/guidelines/#5.6) prepoveduje, da stranke potiskaš v nakupe, ki jih nočejo, ali zaračunavaš, česar ne dostaviš.
- **Pritiskati na stranko**, ki zahteva vračilo. Isto pravilo zahteva spoštljivo podporo strankam, brez ustrahovanja.

Najboljši vzvod ostaja prej: paywall, ki pove ceno, datum prvega plačila in način preklica. Napake, ki se jim izogni, so v [napakah na paywallu](https://devoria.fr/sl/blog/paywall-ios-napake-zacetnikov-prodaja), pravila preizkusa pa v [brezplačnem preizkusu v App Store](https://devoria.fr/sl/blog/uvodna-ponudba-app-store-connect-brezplacni-preizkus).

## Testiranje pred produkcijo

Po [strani o testiranju zahtev](https://developer.apple.com/documentation/storekit/testing-refund-requests) sandbox in StoreKit testi v Xcode sprejemajo zahteve za vračilo. V sandboxu katerikoli razlog sproži samodejno odobritev. Za simulacijo zavrnitve izberi »Other« in vpiši `DECLINE`. Za sorazmerno vračilo vpiši `GRANT_PRORATED`. V sandboxu mora tvoj odgovor o porabi oditi v petih minutah.

## Naročnina z manj vračili

[iOS & Android Kit](https://devoria.fr/sl/kits/ios) izhaja iz kode mojih aplikacij, z že sprogramiranim onboardingom, paywallom in naročninami, in te v štirih korakih pripelje do App Store, v tvojem tempu. Celotna postavitev je opisana na strani [naročnina v aplikaciji iOS](https://devoria.fr/sl/expertise/narocnina-v-aplikaciji-ios), Applova pravila o naročninah pa v [smernici 3.1.2](https://devoria.fr/sl/blog/guideline-3-1-2-zavrnjena-aplikacija-narocnina).

Preden zaženeš paywall, [opravi brezplačno diagnozo](https://devoria.fr/sl/diagnostic): pove ti, kaj tvoj projekt zares ovira, in ti pošlje moj kontrolni seznam proti Applovim zavrnitvam.

## Pogosta vprašanja

### Ali lahko razvijalec zavrne vračilo denarja v App Store?

Ne. Odloča samo Apple. Lahko pošlješ podatke o porabi in preferenco, na primer `DECLINE`, ki sta med več kriteriji. Zadnjo besedo ima Apple.

### Ali je razvijalec obveščen o zahtevi za vračilo?

Da, če ima povezana App Store Server Notifications V2. Apple ob zahtevi pošlje `CONSUMPTION_REQUEST`, ob odločitvi pa `REFUND` ali `REFUND_DECLINED`. Brez obvestil vidiš v poročilih samo odobrena vračila.

### Koliko časa Apple potrebuje za obdelavo zahteve za vračilo?

Apple stranki napove 24 do 48 ur. Dokumentacija StoreKit govori o največ 48 urah. Ti imaš 12 ur, da pošlješ podatke o porabi.

### Kaj se zgodi z dostopom po vračilu?

Vrnjeni nakup izpade iz strankinih aktivnih pravic: StoreKit 2 ga ne vrača več v `currentEntitlements`. Če Apple vračilo pozneje prekliče, prejmeš `REFUND_REVERSED` in moraš dostop obnoviti.

### Ali za odgovor Applu potrebuješ privolitev stranke?

Da. Apple zahteva veljavno privolitev pred kakršnim koli deljenjem podatkov prek Consumption API. Brez nje na obvestilo ne odgovoriš. Okna za oglaševalsko sledenje ne smeš uporabiti za pridobitev privolitve.

### Ali vračila štejejo proti moji aplikaciji?

Lahko. Smernica 5.6.4 navaja pretirane zahteve za vračilo med znaki nezadostne kakovosti, kar lahko Apple upošteva pri presoji spoštovanja kodeksa ravnanja.


## Tvoj projekt

[iOS & Android Kit](https://devoria.fr/sl/kits/ios): Ustvari svojo aplikacijo za iPhone in Android s Claude Code: začetna koda mojih aplikacij, pot do trgovin in vsi kompleti. 99 €.

[Diagnoza: kaj te loči od tvoje aplikacije za iPhone](https://devoria.fr/sl/diagnostic): 7 vprašanj, 60 sekund: izveš, kaj te zares ovira pri objavi aplikacije za iPhone, dobiš pot v 4 korakih in komplet, ki ti ustreza.
