Offer codes App Store Connect: cách tạo mã khuyến mãi
Bởi Mehdi Azizi
Đăng ngày , 8 phút
Từ tháng 3/2026, offer code thay thế promo code cho mua hàng trong ứng dụng: mã riêng hoặc mã tùy chỉnh, đổi qua link, App Store hoặc trong app.
Trong App Store Connect, mã khuyến mãi cho gói đăng ký hoặc mua hàng trong ứng dụng giờ được gọi là offer code (mã ưu đãi). Từ ngày 26/3/2026, Apple không cho tạo promo code cho mua hàng trong ứng dụng nữa: promo code giờ chỉ dùng để tặng lượt tải một app trả phí. Bạn tạo một offer trên sản phẩm, rồi tạo mã riêng hoặc mã tùy chỉnh. Người nhận đổi mã qua một link, trong App Store hoặc ngay trong app của bạn.
App của mình tải miễn phí và bán gói đăng ký: promo code của app chẳng giúp gì cho mình. Vì vậy trong code của TradaZen, chương trình giới thiệu bạn bè thưởng bằng offer code, và app tự mở màn hình đổi mã. Dưới đây là những gì đã thay đổi, bảng các loại offer của Apple, cách tạo mã, cách đổi mã, rồi những gì quy tắc 3.1.1 cấm.
Promo code và offer code: những gì thay đổi năm 2026
Apple đã thông báo ngày 29/10/2025 trong tin tức dành cho nhà phát triển: offer code giờ áp dụng cho mọi loại mua hàng trong ứng dụng. Consumable, non-consumable và gói đăng ký không tự gia hạn được thêm vào bên cạnh gói đăng ký tự gia hạn. Hệ quả là từ ngày 26/3/2026, bạn không thể tạo promo code cho mua hàng trong ứng dụng nữa. Các mã tạo trước đó vẫn dùng được đến khi hết hạn.
Còn promo code của app thì vẫn tồn tại. Theo trợ giúp App Store Connect, chúng tặng một bản miễn phí của app trả phí. Mỗi mã dùng một lần và có hiệu lực bốn tuần. Bạn có thể yêu cầu tối đa 100 mã cho mỗi phiên bản và mỗi nền tảng, từ mục Promo Codes ở thanh bên của app. Người dùng mã không thể chấm điểm hay viết đánh giá cho app.
Với một app miễn phí bán gói đăng ký, promo code của app chẳng tặng được gì: thứ cần tặng là gói đăng ký, bằng offer code.
Các offer của Apple: dành cho ai và nhận bằng cách nào
Đây là các offer của Apple xoay quanh gói đăng ký, cộng thêm promo code của app, trong bảng mình luôn để sẵn để chọn:
| Loại offer | Dành cho ai | Cách nhận |
|---|---|---|
| Introductory offer | Người mới đăng ký trong nhóm | Tự động khi mua |
| Offer code riêng | Một người cụ thể | Link, App Store hoặc app |
| Mã tùy chỉnh | Một chiến dịch, một nhóm người | Link hoặc nhập trong app |
| Promotional offer | Người đang hoặc từng đăng ký | Do app của bạn đề xuất |
| Win-back offer | Người từng đăng ký | Cài đặt, App Store, app |
| Promo code của app | Chỉ app trả phí | Nhập trong App Store |
Offer code được làm ra để bạn tự phân phối, bên ngoài app: qua email, trên website, tại một sự kiện, cho một nhà sáng tạo nội dung. Các offer khác chủ yếu tự hiển thị hoặc hiện trong app, theo quy tắc bạn đặt ra. Introductory offer, tức bản dùng thử miễn phí, có hướng dẫn riêng: introductory offer và dùng thử miễn phí.
Tạo offer code cho gói đăng ký
Quy trình trong trợ giúp về offer code cho gói đăng ký gồm hai bước: offer, rồi đến mã. Các nhãn là nhãn trong trợ giúp của Apple.
1. Offer. Trong Subscriptions, mở nhóm rồi mở gói đăng ký. Trong Subscription Prices, bấm nút dấu cộng, rồi Create Offer Codes. Sau đó:
- đặt tên tham chiếu, bạn sẽ thấy lại nó trong báo cáo doanh thu;
- chọn gói đăng ký có gia hạn khi hết offer hay không; nếu không gia hạn, chỉ có thể tạo offer miễn phí;
- tích chọn người đủ điều kiện: người mới đăng ký, người đang đăng ký, người từng đăng ký trong nhóm;
- nếu gói có introductory offer, chọn người dùng được hưởng nó trước, rồi mới đến offer của mã, hay chỉ được hưởng mã;
- chọn quốc gia, rồi chọn miễn phí, trả trước hoặc trả theo kỳ, cùng thời hạn và giá.
Offer đã tạo thì không sửa được nữa. Muốn đổi điều kiện, hãy tạo offer mới.
2. Mã. Có hai loại, tạo từ trang của offer:
- Mã riêng: mỗi người một mã, tạo theo lô từ 500 đến 25.000. Chúng hết hạn muộn nhất sáu tháng sau khi tạo. Bạn tải về một file chứa các mã và link của chúng.
- Mã tùy chỉnh: một từ do bạn chọn, tối đa 64 ký tự, không có ký tự đặc biệt, ví dụ BACKTOSCHOOL (ví dụ giả định). Bạn đặt số người có thể dùng, tối đa 25.000 mỗi lô, và một ngày kết thúc tùy chọn.
Giới hạn chung: một triệu mã mỗi app mỗi quý, mười offer đang hoạt động mỗi gói đăng ký, mỗi người một mã cho mỗi offer. Một mã có thể mất đến một giờ mới dùng được. Và quan trọng nhất, app của bạn phải đang được bán thì mã mới đổi được: bạn không thể tặng gói đăng ký trước khi ra mắt.
Để thử nghiệm, Apple có mã sandbox, từ 10 đến 10.000 mỗi lô, đổi từ phần cài đặt của tài khoản sandbox trên iOS 16.3 trở lên.
Offer code cho mua một lần hoặc credit
Trang về offer code cho mua hàng trong ứng dụng theo cùng logic. Trong In-App Purchases, mở sản phẩm, rồi Create Offer ở mục Offer Codes. Điều kiện dựa trên lịch sử mua trong app của bạn: chưa từng mua, đã mua trong 30 ngày gần nhất, hoặc đã mua hơn 30 ngày trước. Offer có thể miễn phí hoặc trả phí.
Để tạo mã, app phải đang được bán và sản phẩm đã được duyệt. Mỗi app có tối đa mười offer hoạt động cùng lúc. Đổi mã trong app cần iOS 16.3 trở lên.
Người dùng đổi mã như thế nào
Tài liệu StoreKit mô tả ba cách:
- Link đổi mã. App Store Connect cung cấp một link mẫu trên trang của offer, bạn chỉ cần thêm mã vào. Nếu chưa cài app, người dùng sẽ được mời tải về trước.
- App Store. Mã riêng được nhập trong trang Redeem Gift Card or Code của tài khoản. Còn mã tùy chỉnh thì đi qua link hoặc app của bạn.
- App của bạn. Với Swift, đó là
offerCodeRedemptiontrong SwiftUI hoặcpresentOfferCodeRedeemSheettrong UIKit. Với RevenueCat trong app Expo, đó làpresentCodeRedemptionSheet.
Tài liệu của RevenueCat đưa ra định dạng link: https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}. Tài liệu cũng cảnh báo rằng sheet đổi mã của Apple rất thiếu ổn định từ khi ra mắt, và đề xuất dùng link làm phương án dự phòng. Đây là nguyên tắc, bằng TypeScript:
import { Linking } from "react-native";
import Purchases from "react-native-purchases";
const PAGE_ECHANGE = "https://apps.apple.com/redeem";
export async function echangerUnCode(): Promise<void> {
try {
await Purchases.presentCodeRedemptionSheet();
} catch {
await Linking.openURL(PAGE_ECHANGE); // dự phòng nếu sheet bị lỗi
}
}
Sheet không trả về kết quả nào. Quyền truy cập đến sau, giống như sau một lần mua, qua listener addCustomerInfoUpdateListener mà app của bạn đã có. Để RevenueCat ghi nhận đúng doanh thu từ các mã này, nó cần In-App Purchase key của bạn.
Đây là cách mình đã chuẩn bị trong code của TradaZen. Để dùng phần thưởng giới thiệu, app mở link với mã đã điền sẵn: đáng tin hơn sheet, vì ở sheet phải chép lại mã. Để nhập một mã nhận được, app mở sheet gốc, và trang đổi mã của App Store làm dự phòng. Một mã mà người dùng không biết nhập ở đâu thì vô dụng: trang tài khoản App Store bị giấu kỹ, và chẳng có gì chỉ đường tới nó. Một nút "Tôi có mã" trong app là giải quyết xong.
Promotional offer và win-back offer, tóm tắt
Hai offer này không dùng mã do bạn phân phối, nhưng đáp ứng cùng một nhu cầu: kéo người đăng ký quay lại hoặc giữ chân họ.
Promotional offer nhắm tới người đang hoặc từng đăng ký. Bạn quyết định trong app khi nào hiển thị nó, ví dụ cho người sắp hủy đăng ký. Theo trợ giúp về promotional offer, bạn có thể có mười offer hoạt động mỗi gói đăng ký. Chúng áp dụng ở mọi quốc gia của gói đăng ký, và người dùng vẫn đủ điều kiện dù đã từng nhận introductory offer. Cần một In-App Purchase key để ký offer.
Win-back offer nhắm tới người từng đăng ký. Trợ giúp về win-back offer nêu chi tiết các tiêu chí: thời gian đăng ký trả phí tối thiểu, thời gian đã trôi qua kể từ khi kết thúc, khoảng chờ giữa hai offer. Apple tự hiển thị nó trong trang quản lý gói đăng ký, và trong app của bạn trên iOS 18 trở lên. Apple cũng tạo một link để chia sẻ, chỉ gửi cho người đủ điều kiện. Để nó xuất hiện trên App Store, bạn phải quảng bá nó bằng một hình ảnh gói đăng ký đã được duyệt, không dùng lại icon hay ảnh chụp màn hình của bạn. Mình nói về điều này trong hướng dẫn về hình ảnh quảng bá của gói đăng ký.
Những gì quy tắc 3.1.1 cấm
Guideline 3.1.1 bắt buộc dùng mua hàng trong ứng dụng để mở khóa tính năng hoặc nội dung. Nó cấm các cơ chế tự chế, như license key hay mã QR. Một mã do bạn tự nghĩ ra, nhập vào một ô trong app để mở khóa premium, có nguy cơ bị từ chối theo 3.1.1, kể cả khi nó được tặng miễn phí. Còn offer code của Apple thì đi qua mua hàng trong ứng dụng. Quy tắc đầy đủ có trong hướng dẫn của mình về guideline 3.1.1.
Một điểm nữa, cho chương trình giới thiệu: guideline 5.1.2 cấm bắt người dùng bật thông báo, vị trí hoặc tracking để nhận phần thưởng, kể cả mã. Vì vậy phần thưởng không được phụ thuộc vào các quyền này. Chi tiết có trong hướng dẫn về guideline 5.1.2.
Tặng gói đăng ký mà không chọn nhầm công cụ
Trước khi ra mắt, để cho người khác dùng thử app miễn phí, hãy dùng TestFlight: các giao dịch mua ở đó chạy trong môi trường thử nghiệm, không bị trừ tiền. Sau khi ra mắt, hãy dùng offer code. Cách thiết lập chính gói đăng ký có trong RevenueCat cho gói đăng ký iOS.
iOS & Android Kit xuất phát từ code khởi đầu của các app của mình: onboarding, paywall và gói đăng ký đều đã được code sẵn, và bước thứ ba, "kết nối dòng tiền", hướng dẫn bạn cấu hình chúng. Toàn bộ quy trình có trên trang gói đăng ký in-app iOS. Nếu bạn đang chuẩn bị ra mắt lần đầu, làm bài chẩn đoán miễn phí: nó sắp xếp lại các bước theo đúng thứ tự và gửi bạn checklist chống bị Apple từ chối của mình.
Câu hỏi thường gặp
Làm sao tạo promo code trong App Store Connect?
Với app trả phí, mở Promo Codes ở thanh bên của app: tối đa 100 mã mỗi phiên bản, hiệu lực bốn tuần. Với gói đăng ký hoặc mua hàng trong ứng dụng, tạo một offer trên sản phẩm, bằng Create Offer Codes hoặc Create Offer, rồi tạo mã riêng hoặc mã tùy chỉnh.
Promo code và offer code khác nhau thế nào?
Promo code tặng lượt tải một app trả phí. Offer code tặng gói đăng ký hoặc mua hàng trong ứng dụng, miễn phí hoặc giảm giá, trong thời hạn bạn chọn. Từ ngày 26/3/2026, chỉ offer code mới tạo được cho mua hàng trong ứng dụng.
Có thể tạo bao nhiêu offer code?
Tối đa một triệu mã mỗi app mỗi quý, tính chung mọi sản phẩm. Mã riêng được tạo theo lô từ 500 đến 25.000, và một mã tùy chỉnh cho phép tối đa 25.000 lượt dùng mỗi lô. Mỗi gói đăng ký có tối đa mười offer hoạt động cùng lúc.
Có dùng được offer code trước khi app ra mắt không?
Không: app phải đang được bán thì mã mới đổi được. Trước khi ra mắt, hãy dùng TestFlight cho người thử nghiệm, và mã sandbox để thử việc đổi mã trong app.
Người đang đăng ký có dùng được offer code không?
Có, nếu bạn đã tích chọn người đang đăng ký trong điều kiện của offer. Trang của Apple về gói đăng ký nói rõ họ chỉ đổi được mã có cấp bằng hoặc cao hơn gói hiện tại.
Người dùng nhập offer code ở đâu?
Qua link đổi mã, trong trang Redeem Gift Card or Code của tài khoản App Store với mã riêng, hoặc trong app của bạn nếu bạn đã thêm sheet đổi mã. Mã tùy chỉnh đi qua link hoặc qua app.

