Guideline 3.1.2: app rebutjada per la subscripció
Per Mehdi Azizi
Publicat el , 9 min
Guideline 3.1.2: l'import cobrat ha de ser el preu més visible del paywall, amb durada, renovació i enllaços a les condicions. Dos rebutjos reals i la solució.
La guideline 3.1.2 regula les subscripcions amb renovació automàtica. Si Apple te la cita, comprova dues coses: l'import que realment es cobra ha de ser el preu més visible del teu paywall, i tant l'app com la fitxa han de donar la durada, el preu i enllaços que funcionin cap a les teves condicions d'ús i la teva política de privadesa.
He rebut aquest rebuig en dues de les meves apps l'octubre de 2026: Solys el dia 10, TradaZen el 12. El problema era el mateix: un preu per setmana en gran i el vertader import cobrat en petit. Aquí tens el text de la norma, aquests dos casos i després la checklist que ara aplico. Per als altres motius, llegeix per què Apple rebutja una app.
Què diu la guideline 3.1.2?
La 3.1.2, «Subscriptions», és a la secció 3 «Business» de les App Review Guidelines, apartat 3.1 «Payments». D'aquí ve el títol del correu: «Guideline 3.1.2 - Business - Payments - Subscriptions». Té tres paràgrafs, i la lletra entre parèntesis et diu on has de mirar.
| Paràgraf | Què exigeix Apple | El rebuig típic |
|---|---|---|
| 3.1.2(a) Permissible uses | Valor continu, 7 dies com a mínim | Subscripció sense contingut que evolucioni |
| 3.1.2(b) Upgrades and Downgrades | Canviar de pla sense duplicats | Dos plans pagats alhora |
| 3.1.2(c) Subscription Information | Què s'obté i a quin preu | Preu calculat més gran que el cobrat |
El text de la 3.1.2(c) és curt. Abans de demanar a algú que se subscrigui, has de «clearly describe what the user will get for the price»: descriure clarament què obté per aquest preu. Després remet a l'annex 2 (Schedule 2) de la llicència del programa de desenvolupadors. Aquest annex enumera què has de mostrar «clearly and conspicuously», de manera clara i visible:
- el títol de la subscripció;
- la seva durada;
- el seu preu, i el preu per unitat si és pertinent;
- enllaços a la teva política de privadesa i a les teves condicions d'ús, accessibles des de l'app.
La norma sobre la mida dels preus és a la pàgina d'Apple dedicada a les subscripcions. En el procés de compra, «the amount that will be billed must be the most prominent pricing element in the layout»: l'import que es cobrarà ha de ser l'element de preu més visible. Un equivalent mensual o un estalvi continuen sent permesos, sempre que quedin en posició secundària i siguin més petits. La mateixa pàgina demana, per a una prova gratuïta, indicar-ne la durada i el preu que es cobrarà en acabar.
Els dos rebutjos 3.1.2(c) que he rebut
Solys: 0,38 € en gran, 19,99 € en petit
Solys és el meu despertador que adorm les teves xarxes. Al paywall de l'onboarding, la targeta «Anual» mostrava «0,38 €/setm.» a 21 punts i en negreta. A sota, a 15 punts: «és a dir, 19,99 €/any». Però el que es cobra són 19,99 €, no 0,38 €.
El 10 d'octubre de 2026, Apple rebutja la versió citant la 3.1.2(c). El missatge demana que l'import cobrat sigui l'element de preu més clar i més visible. La prova gratuïta, el preu de llançament i els preus calculats li han de quedar subordinats. Apple cita els seus criteris: la tipografia, la mida, el color i la posició.
Havia mantingut aquesta presentació conscientment: una versió anterior de TradaZen, feta amb el mateix principi, havia estat acceptada. Era una aposta, i m'ha costat un cicle de revisió.
La solució: «19,99 €/any» en gran, «és a dir, 0,38 €/setm.» com a llegenda grisa a sota, en els 30 idiomes de l'app. Com que el paywall és al codi, va caldre un build nou abans de tornar a enviar la versió.
TradaZen: el mateix motiu, dos dies després
TradaZen és el meu simulador de trading. El 12 d'octubre de 2026, la versió 1.5.1 és rebutjada per la mateixa norma. El missatge parla d'un preu «weekly calculated» mostrat «more clearly and conspicuously than the billed amount»: l'equivalent setmanal era més visible que l'import cobrat.
La meva primera correcció no va ser suficient, i me'n vaig adonar abans d'enviar-la. Havia reduït «0,92 €/setm.» però el mantenia a la dreta, a la línia del preu. Però la targeta de la subscripció setmanal mostrava, a la mateixa columna, el seu preu real: «8,99 €/setm.». Els dos imports es llegien al mateix nivell. Un preu calculat situat a la columna dels preus reals es llegeix com un preu cobrat, encara que sigui petit.
La solució definitiva: cada targeta porta el seu import cobrat en gran, a la dreta. El preu per setmana passa a ser una llegenda grisa a sota. A l'esquerra, només el nom del pla. A la revisió següent, Apple ja no va assenyalar la 3.1.2(c).
Les altres lliçons d'aquesta app són a l'estudi de cas de TradaZen.
Què va rebutjar Apple i què va passar
Aquestes són les presentacions reals, per ordre, amb el seu resultat.
| Presentació del preu | Resultat |
|---|---|
| TradaZen, versió anterior: preu per setmana destacat | Acceptat en una revisió anterior |
| Solys: «0,38 €/setm.» en negreta, «19,99 €/any» a sota | Rebutjat el 10/10/2026, 3.1.2(c) |
| TradaZen 1.5.1: preu per setmana més visible que el cobrat | Rebutjat el 12/10/2026, 3.1.2(c) |
| TradaZen: preu per setmana reduït, però a la columna dels preus | Descartat per mi abans d'enviar |
| TradaZen: cobrat en gran a la dreta, setmana com a llegenda | Ja no citat a la revisió següent |
| Solys: «19,99 €/any» en gran, setmana com a llegenda grisa | Corregit i reenviat a Apple |
La primera línia és la més important. Una revisió acceptada no valida el teu paywall per a la següent. Cada versió torna a passar davant d'un revisor, que pot llegir la norma de manera més estricta que l'anterior. L'única presentació segura és la que respecta el text.
L'import cobrat és l'únic preu en gran. Qualsevol equivalent, per setmana, per mes o per dia, és una llegenda més petita i més pàl·lida, mai al seu lloc.
La checklist del paywall conforme a la 3.1.2
Aquesta és la llista que ara repasso a cada paywall de les meves apps, abans de cada enviament:
- A cada targeta, l'import cobrat és el preu més gran, amb més contrast i millor situat.
- Qualsevol preu calculat (per setmana, per mes, per dia) és una llegenda, més petita i més pàl·lida, sota l'import cobrat.
- Cap preu calculat ocupa la columna on un altre pla mostra el seu preu real.
- La durada està escrita clarament: «per any», «per setmana».
- La prova gratuïta indica la seva durada i l'import cobrat en acabar la prova.
- Una frase diu que la subscripció es renova automàticament i que es cancel·la a la configuració del compte d'Apple.
- El que desbloqueja la subscripció està escrit abans del botó de compra.
- Hi ha un botó «Restore Purchases» visible al paywall.
- Els enllaços a les condicions d'ús i a la política de privadesa són al paywall i s'obren.
- Si ofereixes diversos plans, són en un sol grup de subscripcions, com aconsella Apple.
- La presentació es comprova a l'iPhone més petit i amb el preu més llarg. A TradaZen, provo el preu en dong vietnamita: un import que salta de línia trenca la jerarquia.
Si fas servir els paywalls de RevenueCat, la documentació de RevenueCat fa la mateixa advertència: una variable de preu mensual sola no n'hi ha prou si l'import cobrat i la seva periodicitat no apareixen enlloc més. La integració completa és a RevenueCat: configurar una subscripció in-app, i els errors de disseny a paywall iOS: 7 errors de principiant.
Els enllaços a condicions i privadesa: a l'app i a la fitxa
L'altra forma de rebuig 3.1.2 no apunta al paywall, sinó a les metadades. Els missatges publicats per desenvolupadors als fòrums d'Apple precisen on s'esperen: l'enllaç a la política de privadesa al camp previst d'App Store Connect, i l'enllaç a les condicions d'ús (EULA) a la descripció o al camp EULA.
El parany ve del contracte estàndard. Segons l'ajuda d'App Store Connect, si no hi afegeixes un contracte personalitzat, s'aplica el contracte estàndard d'Apple i «the license agreement link isn't shown on your App Store product page»: no apareix cap enllaç a la teva fitxa. Si fas servir el contracte estàndard, et toca a tu posar-ne l'enllaç a la descripció, cap a la teva pàgina de condicions o cap al contracte de llicència estàndard d'Apple.
A les meves apps amb subscripció, acabo la descripció amb dues línies, en cada idioma de la fitxa. Aquí tens el model, per adaptar a la teva oferta i al teu domini:
Prova gratuïta de 7 dies, després subscripció anual o setmanal,
cancel·lable en qualsevol moment.
Condicions: https://your-domain.com/terms
Privadesa: https://your-domain.com/privacy
Obre els dos enllaços abans d'enganxar-los: una pàgina que no es troba equival a un enllaç absent. El que ha de contenir la política està detallat a política de privadesa d'una aplicació, i la resta de la fitxa a la pàgina ASO App Store.
Això es corregeix sense build nou: la descripció i els camps d'App Store Connect són metadades.
3.1.2(a): una subscripció ha d'aportar un valor continu
L'altre paràgraf que provoca rebutjos apunta al model, no a la pantalla. La 3.1.2(a) demana «ongoing value»: un valor que continua en el temps. El període dura com a mínim set dies, i la subscripció funciona a tots els dispositius de l'usuari. El subscriptor obté el que ha pagat sense cap tasca addicional, com publicar en una xarxa social.
Si la teva app fa un servei d'un sol cop, potser encaixa millor una compra única. Els dos models es comparen a subscripció o compra única.
Què respondre a Apple després d'un rebuig 3.1.2
La conversa té lloc a la secció App Review de la teva app. El procediment per respondre a App Review és el mateix que per a les altres normes. Hi ha dos casos:
- El problema és a l'app (mida dels preus, mencions del paywall): cal un build nou, com amb Solys i TradaZen. El revisor prova el codi inclòs a l'app, ho explico a la guia sobre la guideline 2.1.
- El problema és a la fitxa (enllaços absents o trencats): corregeixes les metadades, respons, i la mateixa submissió torna a sortir.
Escriu en anglès, de manera sòbria: què fallava, què ha canviat i com comprovar-ho. Aquest és el model que faig servir (substitueix el número de build, els preus i el recorregut pels teus):
Hello,
Thank you for your review.
Issue: on the paywall, the weekly equivalent price was displayed
more prominently than the billed amount.
Fix in build X:
- Each plan now shows its billed amount (e.g. "€19.99/year")
as the largest price on the card.
- The weekly equivalent is a smaller grey caption below it.
- The paywall states the duration, the auto-renewal, and links
to our Terms of Use and Privacy Policy.
How to verify: launch the app and complete the onboarding.
The paywall appears at the end.
Best regards,
Corregir el teu paywall abans del proper enviament
Si la teva app acaba de ser rebutjada per la 3.1.2, l'Apple Review Kit t'ajuda a trobar la norma citada, què demana, i un exemple de correcció i de resposta. Les seves skills de Claude Code també revisen el teu paywall i la teva fitxa abans de l'enviament. Si vols una mirada humana, reserva una hora amb mi: llegim el missatge d'Apple i repassem el teu paywall a la teva pantalla. El procés complet és a la pàgina aplicació rebutjada per Apple, i la configuració de la subscripció a la pàgina subscripció in-app iOS.
Si prepares el teu primer llançament, fes el teu diagnòstic gratuït: posa les etapes en ordre i t'envia la meva checklist antirebuig d'Apple. Per crear una aplicació mòbil que cobri des del llançament, l'iOS Kit dedica la seva tercera etapa, «connectar els diners», a la subscripció i al paywall.
Ningú no pot garantir que Apple acceptarà la teva app. El que sí que puc fer és estalviar-te el rebuig 3.1.2(c) que jo he pagat dues vegades.
Preguntes freqüents
Què vol dir «Guideline 3.1.2 - Business - Payments - Subscriptions»?
És el títol complet de la norma sobre subscripcions. Indica un preu mal jerarquitzat, una informació que falta al paywall, un enllaç absent a la fitxa o una subscripció sense valor continu. La lletra entre parèntesis, per exemple 3.1.2(c), indica el paràgraf afectat.
Encara es pot mostrar un preu per setmana o per mes?
Sí. Apple permet un equivalent per setmana o per mes, o un estalvi, sempre que siguin més petits i menys visibles que l'import que realment es cobra. A les meves apps, l'equivalent és una llegenda grisa sota el preu cobrat, mai a la columna dels preus reals.
Cal un build nou després d'un rebuig 3.1.2?
Sí si el problema és al paywall, perquè el revisor prova el codi inclòs a l'app. No si és a la fitxa, com un enllaç absent de la descripció: corregeixes les metadades i la mateixa submissió torna a sortir.
On s'ha de posar l'enllaç a les condicions d'ús (EULA)?
A l'app, al paywall. A la fitxa, a la descripció o al camp EULA d'App Store Connect si tens un contracte personalitzat. Amb el contracte estàndard d'Apple, no es mostra cap enllaç a la teva fitxa: afegeix-lo tu mateix a la descripció, en cada idioma.
El meu paywall ja havia estat acceptat, per què ara el rebutgen?
Perquè cada versió torna a passar per revisió, de vegades davant d'un altre revisor. Un preu per setmana destacat havia estat acceptat a TradaZen, i després rebutjat a Solys i a TradaZen l'octubre de 2026. Només el text de la norma et protegeix.