# Paywall iOS: 7 lỗi người mới khiến app không bán được

> Paywall đặt sai chỗ, không có dùng thử miễn phí, quên nút khôi phục, thiếu thông tin Apple yêu cầu: 7 lỗi paywall iOS khiến app không bán được.

Trang gốc: [Paywall iOS: 7 lỗi người mới khiến app không bán được](https://devoria.fr/vi/blog/paywall-ios-7-loi-nguoi-moi)
Tác giả: [Mehdi Azizi](https://devoria.fr/vi/mehdi-azizi)
Ngày đăng: 2026-09-23
Lần sửa nội dung gần nhất: 2026-10-09


## Vì sao paywall iOS của bạn không bán được

App của bạn đã lên App Store, lượt cài đặt vẫn đều đều, vậy mà gần như chẳng ai đăng ký. Trong phần lớn trường hợp, vấn đề không nằm ở ý tưởng hay code của bạn. Nó nằm ở paywall iOS, tức màn hình giới thiệu gói trả phí và đề nghị người dùng cam kết. Một paywall hiện sai thời điểm, không có dùng thử miễn phí, không có nút khôi phục hoặc thiếu các thông tin Apple bắt buộc thì sẽ không bán được, hoặc bị từ chối khi duyệt.

Dưới đây là 7 lỗi mình gặp nhiều nhất ở app đầu tay, kèm cách sửa từng lỗi. Không có công thức thần kỳ nào cả: chỉ là những thiết lập cụ thể, kiểm tra được, mà bạn có thể áp dụng trước lần gửi Apple tiếp theo.

Mình tự phát hành các app iOS theo mô hình thuê bao: Solys, một app báo thức kèm mini-game, và TradaZen, một app mô phỏng giao dịch, cả hai đều kết nối với RevenueCat. Ở cả hai app, mình gặp cùng một tình huống: rất nhiều lượt cài đặt, nhưng rất ít lượt bắt đầu dùng thử miễn phí. Sản phẩm không có lỗi. Paywall và phần onboarding chưa dẫn người dùng đến bản dùng thử đủ rõ ràng. Đó là một trong những lý do khiến mình làm lại chúng từ gốc, và danh sách này ra đời từ đó.

## Lỗi số 1: hiện paywall quá sớm, hoặc quá muộn

Đây là lỗi tốn kém nhất, và nó xảy ra theo cả hai chiều.

**Quá sớm** là khi paywall hiện ra trước khi người dùng hiểu app làm được gì. Họ mở app, thấy giá, rồi đóng lại. Họ chẳng có lý do gì để trả tiền vì chưa thấy gì cả.

**Quá muộn** là khi paywall bị giấu sau một nút "Premium" trong phần cài đặt, hoặc chỉ xuất hiện sau vài ngày sử dụng. Phần lớn người dùng sẽ không bao giờ thấy nó. Mà người dùng không thấy gói của bạn thì không thể đăng ký.

Thời điểm phù hợp nằm ở giữa: **cuối phần onboarding, ngay sau khi người dùng cảm nhận được giá trị của app**. Họ đã trả lời vài câu hỏi, đã thấy app sẽ làm gì cho họ, có thể đã thử tính năng chính. Đó là lúc lời mời trả phí trở nên hợp lý.

Cụ thể:

- onboarding đặt những câu hỏi hữu ích và cho xem trước kết quả;
- paywall xuất hiện ở cuối hành trình này, không phải ở giữa;
- bạn có thể hiện lại nó sau, vào lúc người dùng chạm đến giới hạn của bản miễn phí. Nếu bạn chuyển một tính năng vốn miễn phí sang trả phí, hãy đọc trước hướng dẫn về guideline 3.2.2.

## Lỗi số 2: không cho dùng thử miễn phí

Với một app chưa ai biết đến, đòi trả tiền ngay là một bước nhảy lớn. Dùng thử miễn phí thu nhỏ bước nhảy đó: người dùng thử mà không rủi ro, và việc thanh toán chỉ bắt đầu khi hết thời gian dùng thử nếu họ không hủy.

Apple có sẵn cơ chế này dưới tên gọi introductory offer cho các gói thuê bao tự gia hạn. Có hai quy tắc cần nhớ, lấy từ [trang của Apple về thuê bao](https://developer.apple.com/app-store/subscriptions/):

- mỗi khách hàng chỉ được hưởng **một introductory offer cho mỗi nhóm thuê bao**;
- trong luồng mua hàng, bạn phải **ghi rõ thời gian dùng thử và mức giá sẽ bị tính khi hết dùng thử**.

Lỗi hay gặp là có dùng thử nhưng không nói ra. Nếu nút của bạn chỉ ghi "Đăng ký", người dùng không biết họ có thể dùng thử miễn phí. Hãy viết rõ ràng trên nút hoặc ngay phía trên: thời gian dùng thử, rồi đến giá. Chính những chi tiết kiểu này tạo ra khác biệt giữa những lượt cài đặt nằm im và những bản dùng thử được kích hoạt.

## Lỗi số 3: làm nổi bật gói năm chưa đúng cách

Nhiều app đầu tay có cả gói tháng và gói năm, nhưng trình bày như hai lựa chọn giống hệt nhau, đặt cạnh nhau, không có thứ bậc. Kết quả: người dùng phân vân, và người dùng phân vân thường đóng màn hình luôn.

Thế nhưng gói năm có lợi cho cả bạn lẫn người dùng: với họ là giá quy ra theo tháng thấp hơn, với bạn là cam kết dài hơn. Để làm nổi bật nó một cách trung thực:

- **chọn sẵn nó** và cho nó một cách trình bày khác biệt;
- **hiển thị giá quy ra theo tháng** bên cạnh giá năm, để việc so sánh diễn ra ngay lập tức;
- **ghi mức tiết kiệm thực tế** so với gói tháng, tính trên giá thật của bạn, không bao giờ dựa trên một mức giá tham chiếu bịa ra.

Cẩn thận đừng sa vào thái cực ngược lại: mức giá thực sự bị tính phải luôn là thứ dễ thấy nhất. Apple yêu cầu giá gia hạn đầy đủ phải được hiển thị rõ ràng, dễ thấy. Giá quy ra theo tháng thì to, còn giá năm thật thì bé tí, đó là paywall gây hiểu lầm, và là lý do bị từ chối theo [guideline 3.1.2](https://devoria.fr/vi/blog/guideline-3-1-2-app-bi-tu-choi-goi-dang-ky).

## Lỗi số 4: quên nút khôi phục giao dịch

Đây là sơ suất ngớ ngẩn nhất và cũng thuộc loại phổ biến nhất. Một người đăng ký đổi iPhone, cài lại app, và thấy mình đứng trước paywall trong khi vẫn đang trả tiền. Không có nút "Restore Purchases", họ không có cách nào lấy lại quyền truy cập.

Đây không phải là tùy chọn. [Quy tắc duyệt App Store](https://developer.apple.com/app-store/review/guidelines/) ([quy tắc 3.1.1](https://devoria.fr/vi/blog/guideline-3-1-1-mua-hang-trong-ung-dung-app-store)) yêu cầu có cơ chế khôi phục cho mọi giao dịch in-app có thể khôi phục, và [trang của Apple về thuê bao](https://developer.apple.com/app-store/subscriptions/) liệt kê trong các thành phần của màn hình đăng ký "một cách để người đăng ký hiện tại đăng nhập hoặc khôi phục giao dịch".

Với RevenueCat, khôi phục chỉ cần một lệnh gọi. Việc thật sự cần làm là kiểm tra điều gì xảy ra sau đó:

- người đăng ký lấy lại được quyền truy cập, không cần khởi động lại app;
- người dùng chưa từng mua nhận được thông báo rõ ràng, không phải một lỗi kỹ thuật;
- nút nằm ngay trên paywall, không chỉ trong phần cài đặt.

## Lỗi số 5: thiếu các thông tin Apple bắt buộc

Một paywall không nói rõ người dùng sẽ trả bao nhiêu có thể bị từ chối. Trên [trang dành riêng cho thuê bao](https://developer.apple.com/app-store/subscriptions/), Apple nêu chi tiết những gì phải có trên màn hình đăng ký:

- **tên và thời hạn** của gói thuê bao, cùng những gì nó mang lại trong khoảng thời gian đó;
- **giá gia hạn đầy đủ**, hiển thị rõ ràng và bản địa hóa theo các loại tiền tệ có sẵn;
- **một cách để khôi phục giao dịch** (xem lỗi ở trên).

Hãy thêm một câu rõ ràng về **việc tự động gia hạn**: gói thuê bao sẽ gia hạn chừng nào người dùng chưa hủy, và họ có thể hủy trong phần cài đặt tài khoản Apple.

Cùng trang đó cũng nói rõ **app và metadata App Store phải chứa liên kết đến điều khoản sử dụng và chính sách quyền riêng tư**. Nhiều người chỉ phát hiện điều này khi bị từ chối: đặt các liên kết này trong app là chưa đủ, mà còn phải có phần nhắc lại điều kiện thuê bao cùng hai liên kết đó trong mô tả trang App Store. Thiếu chúng là bị từ chối theo quy tắc 3.1.2. Với các app thuê bao của mình, mình kết thúc phần mô tả bằng một đoạn ngắn: điều kiện thuê bao, rồi liên kết đến điều khoản sử dụng và liên kết đến chính sách quyền riêng tư. Và nếu trang của bạn được dịch, đoạn này phải có ở mọi ngôn ngữ.

> Trước khi dán liên kết, hãy mở thử chúng trên trình duyệt. Một liên kết dẫn đến trang không tồn tại cũng như không có liên kết.

Mình đã viết chi tiết về các lý do bị từ chối thường gặp khác trong [bài viết về việc Apple từ chối app](https://devoria.fr/vi/blog/apple-tu-choi-app-5-ly-do-thuc-te), còn bản thân trang App Store có bài riêng: [tối ưu trang app trên App Store](https://devoria.fr/vi/expertise/aso-app-store).

## Lỗi số 6: không kiểm thử paywall trong sandbox

Một paywall hiển thị đẹp trên simulator chưa chắc đã hoạt động. Giữa phần cấu hình sản phẩm trong App Store Connect, các offering trong RevenueCat và code của app, có rất nhiều chỗ một chi tiết nhỏ có thể làm hỏng mọi thứ: một sản phẩm gắn sai, một mức giá không tải được, một bản dùng thử không hiện ra.

Vì vậy Apple cung cấp một môi trường kiểm thử là sandbox, với các tài khoản Apple thử nghiệm mà bạn tạo trong App Store Connect, ở mục Users and Access, tab Sandbox. Các tài khoản này dùng để thử mua hàng mà không bị trừ tiền, kể cả việc gia hạn, thanh toán thất bại và hoàn tiền, như [tài liệu App Store Connect](https://developer.apple.com/help/app-store-connect/test-in-app-purchases/create-a-sandbox-apple-account) giải thích.

Trước mỗi lần gửi, tối thiểu hãy chạy hết luồng này trên một chiếc iPhone thật:

1. lần mở đầu tiên, onboarding đầy đủ, đến paywall;
2. bắt đầu dùng thử bằng tài khoản thử nghiệm;
3. kiểm tra quyền truy cập premium đã mở;
4. xóa app, cài lại, khôi phục giao dịch;
5. paywall hiển thị đúng trên iPhone nhỏ nhất và lớn nhất mà bạn hỗ trợ.

Người duyệt của Apple cũng sẽ thử mua hàng. Nếu bị kẹt, app sẽ bị từ chối.

## Lỗi số 7: không đo lường gì cả

Đây là lỗi khiến bạn không sửa được tất cả các lỗi khác. Không đo lường, bạn không biết người dùng rơi rụng ở đâu. Bạn chỉ thấy kết quả cuối cùng: ít người đăng ký. Bạn không biết vấn đề là onboarding, paywall, giá hay bản dùng thử.

Đây chính là thứ giúp mình nhận ra vấn đề trên các app của mình: lượt cài đặt thì có, lượt bắt đầu dùng thử thì không. Nếu không có hai con số đó đặt cạnh nhau, có lẽ mình đã mất nhiều tuần để làm lại một thứ khác.

Hãy gắn sự kiện analytics ở mỗi bước quan trọng, ví dụ với PostHog:

- bắt đầu onboarding;
- kết thúc onboarding;
- hiển thị paywall;
- bắt đầu dùng thử;
- giao dịch hoặc thuê bao được xác nhận;
- khôi phục thành công.

Với các sự kiện này, bạn có một phễu chuyển đổi. Bạn thấy bước nào người dùng bỏ đi, và biết cần ưu tiên làm lại phần nào. RevenueCat bổ sung góc nhìn về doanh thu: dùng thử, chuyển đổi, gia hạn, hủy.

Lời khuyên cuối: đừng thay đổi mọi thứ cùng lúc. Nếu bạn đổi giá, đổi bản dùng thử và đổi thiết kế paywall trong cùng một ngày, bạn sẽ không bao giờ biết điều gì đã làm các con số thay đổi.

## Checklist paywall trước lần gửi tiếp theo

- Paywall xuất hiện ở cuối onboarding, sau khi người dùng thấy được giá trị.
- Bản dùng thử miễn phí được ghi rõ: thời gian, rồi giá sau khi hết dùng thử.
- Gói năm được làm nổi bật một cách trung thực, mức giá thực sự bị tính vẫn dễ đọc.
- Nút "Restore Purchases" nằm trên paywall và hoạt động.
- Có ghi tên, thời hạn, giá gia hạn và việc tự động gia hạn.
- Liên kết đến điều khoản sử dụng và chính sách quyền riêng tư có trong app và trong mô tả App Store, ở mọi ngôn ngữ.
- Toàn bộ luồng mua hàng đã được kiểm thử trong sandbox trên iPhone thật.
- Các sự kiện analytics phủ mọi bước, từ onboarding đến khi mua.

Nếu bạn vẫn còn phân vân về chính mô hình kiếm tiền, thuê bao hay trả một lần, mình đã viết một hướng dẫn riêng: [thuê bao hay mua một lần cho app iOS đầu tay](https://devoria.fr/vi/blog/goi-dang-ky-hay-mua-mot-lan-ung-dung-ios). Còn phần kỹ thuật đầy đủ, gồm sản phẩm, RevenueCat và xét duyệt, tất cả có trên trang [thuê bao in-app iOS](https://devoria.fr/vi/expertise/goi-dang-ky-trong-ung-dung-ios).

## Xây dựng paywall với iOS Kit

Paywall chỉ là một mảnh ghép. Nó phụ thuộc vào phần onboarding đi trước, mức giá bạn đặt, [trang App Store](https://devoria.fr/vi/kits/aso) mang người dùng đến, và tính năng chính của app, thứ cần giữ đơn giản trong một [phiên bản đầu tiên được định hình rõ ràng](https://devoria.fr/vi/expertise/mvp-ung-dung-ios).

Nếu bạn muốn bắt đầu từ một nền tảng có sẵn, onboarding, paywall và thuê bao đã nằm sẵn trong code khởi đầu của [iOS Kit](https://devoria.fr/vi/kits/ios), và bước thứ ba trong lộ trình của kit dùng để kết nối chúng với app của riêng bạn. Không ai có thể đảm bảo doanh thu cho bạn.

Trước khi gửi, các skill Claude Code của [Apple Review Kit](https://devoria.fr/vi/kits/review-apple) sẽ rà lại paywall của bạn và các thông tin Apple bắt buộc. Còn trang chủ cho bạn thấy cách [ra mắt app di động](https://devoria.fr/vi) với paywall này đã được kết nối sẵn.

## Câu hỏi thường gặp

### Những lỗi paywall iOS nào làm app đầu tay không bán được?

Có bảy lỗi hay gặp ở app đầu tay: paywall hiện quá sớm hoặc quá muộn, không có dùng thử miễn phí, gói năm không được làm nổi bật đúng cách. Tiếp theo là quên nút khôi phục, thiếu các thông tin Apple bắt buộc, paywall chưa từng được kiểm thử trong sandbox và không đo lường gì cả. Mỗi lỗi đều sửa được bằng một thiết lập cụ thể, cần kiểm tra trước lần gửi Apple tiếp theo.

### Khi nào nên hiện paywall trong app iOS?

Ở cuối onboarding, ngay sau khi người dùng cảm nhận được giá trị của app. Quá sớm, họ thấy giá khi chưa hiểu app làm gì. Quá muộn, ví dụ giấu sau nút "Premium" trong cài đặt, phần lớn người dùng sẽ không bao giờ thấy nó. Bạn có thể hiện lại sau, khi người dùng chạm đến giới hạn của bản miễn phí.

### Paywall iOS phải hiển thị gì để tuân thủ quy tắc của Apple?

Trên màn hình đăng ký, Apple yêu cầu tên và thời hạn gói thuê bao, những gì nó mang lại, giá gia hạn đầy đủ hiển thị rõ ràng và một cách để khôi phục giao dịch. Cũng cần có liên kết đến điều khoản sử dụng và chính sách quyền riêng tư, trong app và trong mô tả trang App Store. Thiếu chúng trong phần mô tả là bị từ chối. Hãy thêm một câu rõ ràng về việc tự động gia hạn.

### Có nên cho dùng thử miễn phí trong app iOS không?

Có, nhất là với app chưa ai biết đến: đòi trả tiền ngay là một bước nhảy lớn, còn bản dùng thử cho phép thử mà không rủi ro. Apple gọi đây là introductory offer, giới hạn một lần cho mỗi nhóm thuê bao với cùng một khách hàng. Hãy ghi thời gian dùng thử rồi đến mức giá bị tính sau đó, ngay trên nút hoặc ngay phía trên.

### Làm sao làm nổi bật gói năm mà không gây hiểu lầm cho người dùng?

Chọn sẵn gói năm, cho nó một cách trình bày khác biệt và hiển thị giá quy ra theo tháng bên cạnh giá năm. Ghi mức tiết kiệm thực tế so với gói tháng, tính trên giá thật của bạn, không bao giờ dựa trên mức giá tham chiếu bịa ra. Đừng giấu giá thật: giá quy ra theo tháng thì to, còn giá năm thì bé tí, đó là paywall gây hiểu lầm và là lý do bị từ chối.

### Làm sao kiểm thử paywall iOS trước khi gửi Apple?

Dùng sandbox của Apple: các tài khoản thử nghiệm, tạo trong App Store Connect, cho phép mua hàng mà không bị trừ tiền. Trên một chiếc iPhone thật, hãy chạy hết luồng: onboarding, bắt đầu dùng thử, truy cập premium, rồi xóa app, cài lại và khôi phục giao dịch. Kiểm tra cả việc hiển thị trên iPhone nhỏ nhất và lớn nhất mà bạn hỗ trợ.


## Dự án của bạn

[iOS Kit](https://devoria.fr/vi/kits/ios): Tạo app iPhone với Claude Code: code khởi đầu từ các app của mình, các skill kiểm tra công việc của nó, và các kit Apple Review, Screenshots, ASO. 129,99 €.
