> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 결제와 구독

Stripe 체크아웃, 플랜 관리, 엔타이틀먼트 경계.

## 결제 서비스 선택 및 테스트

Billing에서 결제를 처리합니다. 액세스 권한은 자격으로 별도로 저장됩니다. 지속형 계정 설정을 완료한 후 실행 중인 웹 앱에서 /billing을 열어 계획 인터페이스를 확인하세요. BILLING_PROVIDER=local를 사용하면 실제 돈을 모으기보다는 지역 행동을 탐색할 수 있습니다.

지원되는 결제 제공업체 하나를 선택하고 해당 설정 가이드에 따라 고유한 테스트 제품과 가격을 만들고 명명된 서버 설정을 apps/web/.env.local.에 복사합니다. 저장하고 웹 서버를 다시 시작합니다. 해당 공급자의 샌드박스 지침을 사용하여 한 번의 체크아웃을 완료한 다음 공급자의 웹후크가 도착한 후 작업공간의 액세스 상태를 검사합니다. 웹훅은 결제 이벤트에 대해 공급자가 서버에 서명한 메시지입니다.

성공 페이지만으로는 기능의 잠금을 해제할 수 없습니다. 결제가 완료되었으나 액세스가 계속 비활성화된 경우 결제를 반복하기 전에 공급자의 웹훅 전달 및 서버의 이벤트 처리를 확인하세요. 취소 및 만료된 액세스도 테스트합니다. 전화 구매는 이 웹 결제가 아닌 별도의 RevenueCat/스토어 설정을 사용합니다.

[과금 어댑터 및 설정 선택](https://supastack.dev/ko/docs/modules/billing-configuration.md)

[제품과 가격을 직접 설정하세요](https://supastack.dev/ko/docs/web/project-structure.md)

[테스트 환경에서 Stripe 설정](https://supastack.dev/ko/docs/web/setup-payments.md)


## 웹 결제

웹 애플리케이션은 BILLING_PROVIDER로 선택한 청구 서비스 제공업체를 지원합니다. 스트라이프는 하나의 옵션입니다. 웹 요금제 및 구독 관리를 위한 공개/청구. 일치하는 테스트 또는 라이브 환경에서 서버 전용 자격 증명, 제품 또는 가격 ID 및 웹훅 확인 설정을 지정하려면 선택한 공급자의 가이드를 따르세요.


## 권한으로 인가

체크아웃 리디렉션은 활성 액세스의 증거가 아닙니다. 서버 권한이 워크스페이스가 유료 기능을 사용할 수 있는지 결정합니다. 인터페이스가 이미 액션을 숨기고 있어도 액션 경계에서 그 권한을 확인하세요.


## 라이프사이클 검증

샌드박스 이벤트로 활성화, 업데이트, 취소, 웹훅 처리를 검증하세요. 반복된 이벤트를 안전하게 유지하고 비활성 권한이 유료 작업을 차단하는지 확인하세요. 네이티브 모바일 구매는 별도의 RevenueCat 통합 경계로 남아 있습니다.


## 설치 및 설정

플랜 카탈로그는 src/product-plans.ts에 있으며 /billing 표면과 /choose-plan 온보딩 단계를 구동합니다. 빌링은 BILLING_PROVIDER=stripe, STRIPE_SECRET_KEY, 플랜·인터벌별 price id, STRIPE_WEBHOOK_SECRET으로 서버 사이드에 구성합니다. Lemon Squeezy는 대체 어댑터로 사용할 수 있습니다.

좌석 기반 요금제는 편집 가능한 좌석 스테퍼(src/seat-count.ts)를 사용하며, 수량이 결제 세션과 함께 전달되어 청구 좌석과 워크스페이스가 일치합니다. 또한 src/product-plans.ts에서 meteredUsage를 선언하면 매시간 실행되는 billing.usage-report 작업이 usage_counter 증분을 Stripe 청구 미터로 보고하며, 워크스페이스 소유자는 설정 → 사용량(src/usage-meters.ts의 USAGE_METERS)에서 월간 AI 예산과 미터별 상한선을 설정할 수 있습니다.

```
Checkout: POST /api/billing/checkout
Portal:   POST /api/billing/portal
Webhook:  POST /api/billing/webhook  (signature-verified)
```


## 구현 워크플로

체크아웃 리다이렉트는 보류 중인 의도일 뿐입니다 — 서명된 웹훅이 도착하고 서버 소유 엔타이틀먼트가 업데이트될 때 접근이 바뀝니다. UI가 이미 숨기고 있어도 유료 액션은 서버 경계의 엔타이틀먼트 체크(entitlement-gate.tsx / entitlement-check.ts)로 게이트하세요.

고객 포털이 플랜 변경, 해지, 결제 수단을 관리합니다. 구독 상태는 워크스페이스 멤버가 읽을 수 있게 유지하고 네이티브 모바일 구매는 별도의 RevenueCat 경계 뒤에 두세요.


## 다음

[데이터베이스와 마이그레이션](https://supastack.dev/ko/docs/web/database.md)
