가이드라인 3.1.1: 인앱 결제가 필수인 경우
글: Mehdi Azizi
게시, 9분
앱에서 열리는 디지털 콘텐츠와 기능은 모두 Apple 인앱 결제를 거쳐야 해요. 예외, EU와 미국 규정, 수정 방법을 정리했어요.
가이드라인 3.1.1은 앱이 디지털 콘텐츠나 기능을 잠금 해제하는 순간 Apple 인앱 결제를 쓰도록 요구해요. 구독, 정식 버전, 게임 내 화폐, 프리미엄 콘텐츠가 모두 해당돼요. 3.1.1 리젝은 Apple이 그 콘텐츠로 들어가는 다른 입구를 찾아냈다는 뜻이에요. 웹사이트 결제, 라이선스 키, 자체 코드, 결제 페이지로 가는 버튼 같은 것들이죠. 해결 방법은 인앱 결제예요. 예외나 지역별 규정에 해당하는 경우만 빼고요.
저는 제 iOS 앱을 직접 출시하고 있고, 구독이 있는 앱은 Apple 인앱 결제로 팔고 있어요. 3.1.1 리젝을 받은 적은 한 번도 없어요. 받은 척할 생각도 없고요. 이 가이드는 2026년 6월 8일 버전의 공식 문서(2026년 10월 15일에 확인)와 Apple이 공개한 지역별 조건을 바탕으로 썼어요. 실제 리젝 두 건이 담긴 구독 관련 사례는 가이드라인 3.1.2 가이드에 있어요.
가이드라인 3.1.1은 무슨 내용인가요?
3.1.1 "In-App Purchase"는 App Review Guidelines의 3.1 "Payments" 파트 첫 항목이에요. 그래서 메일 제목이 "Guideline 3.1.1 - Business - Payments - In-App Purchase"로 와요. 첫 문장에 핵심이 다 있어요. 앱 안에서 기능을 잠금 해제하려면 "you must use in-app purchase", 즉 인앱 결제를 써야 한다는 거예요. Apple은 구독, 게임 내 화폐, 레벨, 프리미엄 콘텐츠, 정식 버전을 예로 들어요.
다음 문장은 우회 방법을 겨냥해요. 앱은 자체 메커니즘으로 콘텐츠를 잠금 해제할 수 없어요. Apple은 라이선스 키, 증강 현실 마커, QR 코드, 암호화폐, 암호화폐 지갑을 명시해요.
같은 규정에는 자주 잊히는 의무도 있어요.
- 인앱 결제로 산 크레딧과 화폐는 만료되지 않아야 하고, 복원 가능한 구매에는 복원 기능이 있어야 해요.
- 유료 상자나 뽑기("loot box")는 구매 전에 아이템 종류별 확률을 보여줘야 해요.
- 디지털 기프트 카드, 상품권, 쿠폰은 앱 안에서 인앱 결제로 팔아야 해요. 우편으로 보내는 실물 카드는 다른 결제 수단을 써도 돼요.
- 구독이 없는 앱은 "XX-day Trial"이라는 이름의 무료 인앱 결제 형태로 기간 한정 체험을 줄 수 있어요. 시작 전에 기간, 체험이 끝나면 잃는 것, 내야 할 금액을 알려야 해요.
- 개발자 후원(팁)도 가능해요. 인앱 결제로요.
3.1.1 리젝이 나오는 상황
| 앱이 하는 일 | Apple이 리젝하는 이유 | 해결 방법 |
|---|---|---|
| 웹사이트에서 산 콘텐츠를 잠금 해제 | 같은 인앱 결제 상품이 없음 | 인앱 결제로도 판매 |
| "웹사이트에서 결제하기" 표시 | 다른 결제로 유도 | 버튼 제거(예외 제외) |
| 라이선스 키나 자체 코드 요구 | 금지된 잠금 해제 방식 | Apple 오퍼 코드 |
| 암호화폐로 잠금 해제 | 금지된 잠금 해제 방식 | 인앱 결제 |
| 만료되는 크레딧 판매 | 3.1.1의 의무 위반 | 영구 크레딧과 복원 기능 |
| 확률 없이 상자 판매 | 확률 미표시 | 구매 전 확률 표시 |
가장 많이 오해하는 게 첫 줄이에요. Apple 포럼에 공개된 리젝 사례를 보면, 메시지는 앱이 "accesses digital content purchased outside the app", 즉 밖에서 산 콘텐츠에 접근하는데 "but that content isn't available to purchase using in-app purchase"라고 말해요. Apple은 웹사이트에서 판매하는 걸 문제 삼는 게 아니에요. 앱이 같은 구매를 Apple을 통해 제공하지 않는 걸 문제 삼아요.
무료 이용권이나 할인을 주고 싶다면 Apple에 오퍼 코드라는 자체 시스템이 있어요. StoreKit 문서에 따르면 오퍼 코드는 구독, 소모성, 비소모성 등 모든 인앱 결제 유형에 쓸 수 있어요. App Store Connect에서 만들고, 사용자는 App Store나 앱 안에서 입력해요.
예외: 인앱 결제가 필요 없는 경우
3.1.3 규정은 다른 결제 수단을 쓸 수 있는 앱을 나열해요. 프로젝트가 어디에 속하는지 볼 때 제가 쓰는 표예요.
| 내 상황 | 인앱 결제 필수? | 규정 |
|---|---|---|
| 구독, 정식 버전, 디지털 콘텐츠 | 예 | 3.1.1 |
| 실물 상품, 앱 밖에서 이용하는 서비스 | 아니요, 다른 수단 필수 | 3.1.3(e) |
| 1:1 실시간 수업이나 상담 | 아니요 | 3.1.3(d) |
| 여러 명이 듣는 실시간 수업 | 예 | 3.1.3(d) |
| 다른 곳에서 산 뉴스, 책, 음악, 영상 | 접근에는 불필요 | 3.1.3(a) |
| 웹사이트에서 산 멀티플랫폼 서비스 | 인앱 결제로도 팔면 접근 허용 | 3.1.3(b) |
| 기업이 직원용으로 사는 도구 | 아니요 | 3.1.3(c) |
| 웹 도구의 무료 컴패니언 앱, 구매 없음 | 아니요 | 3.1.3(f) |
한계가 두 가지 있어요. 예외를 적용받는 앱도 앱 안에서 다른 결제 수단으로 유도할 수는 없어요. 미국 스토어와 Apple이 정한 경우는 빼고요. 대신 Apple은 "Developers can send communications outside of the app"이라고 밝혀요. 이메일처럼 앱 밖에서는 사용자에게 연락할 수 있어요.
2026년 10월 기준 지역별 규정
이 부분은 문서가 빨리 바뀌어요. 아래 내용은 2026년 10월 15일에 확인한 Apple 문서 기준이에요. 외부 결제를 코딩하기 전에 꼭 다시 읽어보세요.
| 지역 | 인앱 결제 외에 허용되는 것 |
|---|---|
| 미국 | 다른 결제로 가는 버튼과 링크, entitlement 불필요 |
| 유럽연합 | 앱 내 대체 결제와 앱 밖 오퍼, 조건부 |
| 일본, 브라질, 한국 | 자체 프로그램, entitlement 신청 필요 |
| 그 외 국가 | 다른 결제로 가는 버튼, 링크, 유도 문구 모두 불가 |
미국
3.1.1(a) 규정은 entitlement가 "are not required for developers to include buttons, external links, or other calls to action in their United States storefront apps"라고 명시해요. 그러니 미국 스토어에서는 웹사이트로 가는 버튼이 허용돼요. 바이너리는 어디서나 같아요. 이 버튼을 넣는다면 앱이 사용자가 어느 스토어에 있는지 알아야 해요. StoreKit의 Storefront로 확인할 수 있어요.
유럽연합
Apple의 EU 결제 옵션 페이지에 따르면 2026년 10월 1일부터 새 조건이 적용돼요. 아무것도 바꾸지 않고 인앱 결제만 유지해도 돼요. 앱 안에 결제 대행사를 넣거나, 웹사이트 같은 앱 밖 오퍼를 제공할 수도 있어요. 이때 Apple이 요구하는 것은 특히 다음과 같아요.
- "StoreKit External Purchases or Offers" entitlement, 그리고 앱 내 링크나 결제라면 시스템 안내 창
- 두 옵션이 함께 화면에 있을 때 인앱 결제가 다른 옵션만큼 이상 눈에 띄어야 함
- App Store 페이지에 이런 결제에 대한 언급 금지
- 미성년자 보호자 관리 기능, 그리고 13세 미만(국가에 따라 더 높을 수 있음)에게 앱 밖 오퍼 금지
- 12개월 동안 EU 전체 스토어에서 같은 선택 유지
선택한 옵션에 따라 수수료가 붙어요. 결정하기 전에 같은 페이지의 수수료 섹션을 읽어보세요.
그 외 국가
다른 곳에서는 규정이 여전히 엄격해요. "apps and their metadata may not include buttons, external links, or other calls to action", 즉 다른 결제 수단으로 가는 것은 안 돼요. "metadata"라는 단어가 중요해요. "웹사이트에서 더 저렴해요"라고 적은 설명문도 이 규정에 걸려요. 일본, 브라질, 한국 등 일부 국가는 자체 프로그램이 있고, External Purchase 문서에 정리돼 있어요.
3.1.1 리젝 수정하고 Apple에 답하기
- 입구를 찾으세요. 메시지에 문제가 된 콘텐츠나 화면이 나와요. 다른 곳에서 산 콘텐츠, 버튼, 코드, 링크 등이요.
- 입구를 막거나 하나 더 만드세요. 버튼이나 코드를 없애거나, 같은 콘텐츠를 인앱 결제로도 팔면 돼요.
- 예외는 진짜 해당될 때만 주장하세요. 3.1.3의 해당 항목을 인용하고, 왜 해당하는지 두 문장으로 설명하세요.
- 리뷰어가 테스트할 수 있게 해주세요. 데모 계정과 페이월까지 가는 경로를 리뷰 노트에 적으세요. 가이드라인 2.1 가이드에서 설명한 대로요.
답변은 App Store Connect의 App Review 섹션에서 App Review에 답장하기 절차대로 하면 돼요. 가장 흔한 경우인 웹사이트에서 산 콘텐츠에 대한 템플릿이에요. 예시일 뿐이니 빌드, 상품, 경로는 내 것으로 바꾸세요.
Hello,
Thank you for your review.
Issue: the app gave access to premium content purchased on our
website, without offering the same purchase in the app.
Fix in build X:
- Premium access is now available as an auto-renewable
subscription through in-app purchase, on the paywall.
- The "Subscribe on our website" button has been removed.
- A "Restore Purchases" button is available on the paywall.
How to verify: launch the app and open any premium screen.
The paywall shows the in-app purchase options.
Best regards,
버튼과 페이월은 코드에 있으니 새 빌드가 필요해요. 그래도 내 경우가 예외라고 확신한다면 App Review Board에 이의를 제기할 수도 있어요.
다 갈아엎지 않고 인앱 결제 붙이기
초보자에게 가장 쉬운 길은 App Store Connect에서 상품을 만들고 RevenueCat으로 앱에 연결하는 거예요. 방법은 RevenueCat으로 인앱 구독 구현하기에 있어요. 두 모델 사이에서 고민된다면 구독 vs 일회성 구매를 읽어보세요. 노코드 도구로 만든다면 인앱 결제를 지원하는지 확인하세요. 코딩 없이 앱 만들기에서 다룬 내용이에요.
인앱 결제가 구독이라면 3.1.2도 함께 적용돼요. 청구 금액을 눈에 띄게, 기간, 갱신, 링크까지요. 가장 흔한 화면 실수는 iOS 페이월: 초보자가 하는 7가지 실수에 정리했어요.
제출 전 3.1.1 체크리스트
- 앱에서 잠금 해제되는 모든 것(기능, 콘텐츠, 레벨, 화폐)은 인앱 결제로 구매해요.
- 미국 스토어나 승인받은 지역 프로그램이 아니라면, 외부 결제로 가는 버튼, 링크, 문구가 없어요.
- App Store 페이지 설명에 다른 결제 수단이 언급되지 않아요.
- 웹사이트에서 파는 콘텐츠는 앱 안에서도 인앱 결제로 팔아요.
- 라이선스 키, QR 코드, 자체 코드, 암호화폐로 잠금 해제되는 게 없어요.
- 이용권을 줄 때는 Apple 오퍼 코드를 써요.
- 구매한 크레딧은 만료되지 않고, "Restore Purchases" 버튼이 작동해요.
- 모든 유료 상자나 뽑기는 구매 전에 확률을 보여줘요.
- 실물 상품이나 앱 밖 서비스는 인앱 결제가 아니라 Apple Pay나 카드로 결제해요.
- 리뷰 노트에 구매 항목 위치와, 예외를 주장한다면 어떤 예외인지 적었어요.
제출 전에 앱 점검하기
앱이 방금 3.1.1로 리젝됐다면 Apple Review Kit이 인용된 규정, 요구 사항, 수정과 답변 예시를 찾는 걸 도와줘요. 테스터용 노트에 인앱 결제 항목도 들어 있어요. 사람이 직접 봐주길 원하면 저와 한 시간 상담을 예약하세요. Apple 메시지를 함께 읽고 Apple이 본 입구를 찾아볼게요. 전체 과정은 Apple에 리젝된 앱 페이지에, 결제 구현은 iOS 인앱 구독 페이지에 있어요.
첫 출시를 준비 중이라면 무료 진단을 받아보세요. 단계를 순서대로 정리해주고, 제 Apple 리젝 방지 체크리스트도 보내드려요. 처음부터 인앱 결제로 판매하는 모바일 앱을 만들고 싶다면, iOS Kit는 페이월과 구독이 이미 들어간 코드에서 시작해요.
Apple이 앱을 승인할 거라고 누구도 보장할 수 없어요. 제가 할 수 있는 건 코드를 쓰기 전에 올바른 결제 수단을 고르도록 돕는 거예요.
자주 묻는 질문
"Guideline 3.1.1 - Business - Payments - In-App Purchase"는 무슨 뜻인가요?
Apple 메시지에 나오는 인앱 결제 규정의 전체 제목이에요. 앱이 인앱 결제가 아닌 다른 경로로 디지털 콘텐츠나 기능에 접근하게 한다는 뜻이에요. 웹사이트 결제, 코드, 라이선스 키, 결제 페이지 링크 같은 것들이요.
더 저렴하게 결제하도록 웹사이트 링크를 넣어도 되나요?
미국 스토어에서는 돼요. 규정상 entitlement 없이 버튼과 링크가 허용돼요. 유럽연합에서는 Apple entitlement와 조건을 갖추면 가능해요. 그 외 지역에서는 지역 프로그램이 없는 한, 앱도 App Store 페이지도 다른 결제 수단으로 안내할 수 없어요.
프로모션 코드로 앱을 잠금 해제해도 되나요?
자체 코드로는 안 돼요. 3.1.1은 라이선스 키 같은 앱 자체 잠금 해제 방식을 금지해요. App Store Connect에서 만드는 Apple 오퍼 코드를 쓰세요. 구독과 다른 인앱 결제 유형 모두에 쓸 수 있어요.
실물 상품이나 서비스를 팔 때도 인앱 결제가 필요한가요?
아니요. 배달 음식이나 차량 호출처럼 앱 밖에서 이용하는 실물 상품이나 서비스는 Apple Pay나 카드 같은 다른 결제 수단을 써야 해요. 1:1 실시간 수업도 인앱 결제 없이 가능하지만, 여러 명이 듣는 실시간 수업은 안 돼요.
웹사이트에서 구독한 고객이 앱에서 로그인할 수 있나요?
멀티플랫폼 서비스라면 가능해요. 단, 같은 이용권을 앱 안에서도 인앱 결제로 팔아야 해요. 3.1.3(b) 규정이에요. 앱 안에 이 상품이 없으면 전형적인 3.1.1 리젝으로 돌아가요. 다른 곳에서 샀고 Apple로는 살 수 없는 콘텐츠가 되니까요.
RevenueCat만 쓰면 3.1.1을 지키는 건가요?
RevenueCat은 Apple 인앱 결제 위에서 동작하니 3.1.1 문제를 만들지는 않아요. 그렇다고 앱에 있는 외부 결제 버튼이나 자체 코드를 없애주지는 않아요. 규정 준수는 화면 하나하나, 그리고 App Store 페이지까지 직접 확인해야 해요.