OpenAI 모델이 표준인 이유
기존 SaaS 결제는 AI 사용량의 가변 비용을 제대로 처리하지 못합니다. OpenAI의 모델은 세 가지 문제를 한 번에 해결합니다:- 예측 가능한 수익과 낮은 위험: API 사용량이 선불이므로 사용자는 지불할 수 없는 금액을 청구받지 않습니다. OpenAI는 대금을 미리 받고, 사용자는 서비스를 이용하면서 금액을 사용합니다.
- 개발자를 위한 확장성: $5 충전은 진입 장벽이 낮습니다. 애플리케이션이 성장하면 개발자는 충전을 자동화하거나 더 큰 팩을 구매할 수 있습니다. 저렴하게 시작하고 플랜을 변경하지 않고도 사용량을 늘릴 수 있습니다.
- 사용자 심리: 추상적인 “토큰”이나 “포인트” 대신 미국 달러로 표시된 크레딧은 가치를 명확하게 보여줍니다. 잔액은 AI 서비스용 선불 계정처럼 작동하므로 기업이 예산을 편성하기 쉽습니다.
OpenAI는 어떻게 청구하는가
OpenAI는 사용자 유형에 따라 두 가지 결제 모델을 운영합니다.- API (Pay-as-you-go): API는 선불 방식의 달러 표시 크레딧을 사용합니다. 사용자는 $5, $10, $50 또는 그 이상의 금액으로 계정을 충전합니다. 크레딧에는 달러 가치가 표시되지만 OpenAI 외부에서는 사용할 수 없습니다. OpenAI는 토큰당 요금을 청구하며 입력 토큰과 출력 토큰에 서로 다른 요율을 적용합니다. 구매한 크레딧은 구매 후 1년이 지나면 만료되며 환불되지 않습니다 (OpenAI Help Center). 잔액이 $0이 되면 API 호출이 실패합니다.
- ChatGPT Plus, Business, and Enterprise: 이 플랜들은 정액제 구독입니다. ChatGPT Plus는 월 $20이며, Business 플랜(이전 명칭: Team)은 월별 결제 시 사용자당 월 $25입니다. 이러한 플랜에는 완화된 사용량 한도가 적용됩니다. 사용량이 많은 사용자는 차단되는 대신 더 작은 모델로 전환됩니다.
- Spend-based rate tiers: 총 지출이 시간이 지나며 증가하면 계정에서 더 높은 API rate limit이 잠금 해제됩니다. 액세스 수준은 결제 이력에 따라 높아집니다.
차별화되는 요소
다음 네 가지 특성이 OpenAI의 AI 서비스용 billing을 효과적으로 만듭니다:- Fiat-denominated credits: 크레딧이 미국 달러로 표시되므로 실제 화폐처럼 느껴집니다. 개발자는 요청의 가격을 직접 확인할 수 있습니다.
- Long expiry: 구매한 크레딧은 1년 동안 유지되므로 “사용하지 않으면 소멸”이라는 부담이 줄어듭니다. 사용자는 더 큰 금액을 안심하고 충전할 수 있습니다.
- Multi-dimensional metering: 입력 토큰과 출력 토큰은 별도로 추적되지만 동일한 잔액에서 차감됩니다. OpenAI는 비용이 높은 출력 토큰에 입력 토큰보다 높은 가격을 책정할 수 있습니다.
- Trust tiers: 총 지출에 따라 높아지는 rate limit은 장기 고객에게 혜택을 제공하고 계속 이용하도록 유도합니다.
전략적 이점
이 모델은 자체적으로 강화됩니다. 낮은 진입 비용은 개발자를 유입합니다. 선불 크레딧은 즉각적인 현금 흐름을 제공합니다. 사용량 기반 가격 책정을 통해 개발자가 성공할수록 OpenAI의 수익도 증가합니다. 구독은 개발자가 아닌 사용자로부터 안정적인 기본 수익을 더합니다.Dodo Payments로 구축하기
Dodo Payments를 사용해 OpenAI의 billing model을 구축할 수 있습니다. API 측에는 Credit-Based Billing을 사용하고 ChatGPT Plus 측에는 standard subscriptions를 사용하세요.1
Create a Fiat Credit Entitlement
Dodo Payments dashboard에서 Products → Credits로 이동한 다음 Create Credit을 클릭합니다. 이 크레딧은 각 사용자의 중앙 잔액입니다.
- Credit Type: Fiat Credits, Unit Currency는 USD로 설정
- Credit Expiry: Custom, 365일(OpenAI의 1년 만료 기간과 동일) 또는 Never
- Rollover: 필요 없음(각 주기마다 크레딧이 재설정되지 않음)
- Allow Overage: Disabled
2
Create Top-Up Products
$5, $10, $50, $100 등 다양한 크레딧 팩에 대해 one-time payment products를 생성합니다. 각 제품에 fiat credit을 연결합니다.발급되는 크레딧 수를 팩의 달러 가치로 설정합니다. $50 팩은 50 credits를 발급합니다.
3
Create Usage Meters
토큰 사용량을 추적할 두 개의 meter를 생성합니다:
llm.input_tokens:tokensproperty에 Sum aggregation 적용.llm.output_tokens:tokensproperty에 Sum aggregation 적용.
Meter units per credit 계산
OpenAI의 GPT-4o 가격과 일치시키려면 토큰 몇 개가 $1, 즉 fiat credit 1개에 해당하는지 계산합니다:- Input Tokens: 1,000,000 tokens / $2.50 = $1당 400,000 tokens.
- Output Tokens: 1,000,000 tokens / $10.00 = $1당 100,000 tokens.
4
Send Usage Events
각 LLM 요청 후 사용량을 Dodo Payments로 전송합니다. 하나의 요청에 입력 및 출력 event를 모두 포함할 수 있습니다. 이 snippet은 이전 단계의
client을 재사용합니다.5
Handle Balance Depletion
API request를 처리하기 전에 사용자의 잔액을 확인합니다. 잔액이 0 이하이면 요청을 거부합니다. 예를 들어
402 status를 반환할 수 있습니다.Low Balance Webhooks 처리
사용자가 $0에 도달하기 전에 알립니다. credit을 연결할 때 Low Balance Threshold를 설정한 다음credit.balance_low webhook이 도착하면 이메일 또는 인앱 알림을 보냅니다.6
Build the ChatGPT Subscription Side (Optional)
ChatGPT Plus와 같은 subscription plan을 제공하려면 Dodo Payments에서 별도의 subscription product를 생성합니다. credit entitlement는 필요하지 않습니다.Team plan에는 seat-based billing을 사용합니다. 사용자 수를 수량으로 사용하는 per-seat add-on입니다.
Soft Caps 구현
soft caps를 구축하려면 동일한 meter를 사용하되 credit과 연결하지 않고 subscription 사용자의 사용량을 추적합니다. 애플리케이션에서 현재 billing period의 사용량을 확인합니다.LLM Ingestion Blueprint로 가속하기
위 단계에서는 usage event를 직접 생성하고 전송합니다. 반면 LLM Ingestion Blueprint는 OpenAI client를 래핑하고 토큰을 자동으로 추적합니다.inputTokens, outputTokens 및 totalTokens을 읽고 model과 함께 event metadata로 전송합니다. 청구하려는 token key로 meter의 Over Property를 설정합니다.
Spend-Based Rate Tiers 구현
OpenAI의 rate tiers는 신뢰도를 기준으로 capacity를 관리합니다. 이를 구축하려면 각 고객의 lifetime spend를 추적합니다.- Track Lifetime Spend:
payment.succeededwebhooks를 수신하고 결제 금액을 데이터베이스의 해당 고객total_spendfield에 더합니다. 금액은 가장 작은 currency unit으로 표시되므로 5000은 $50.00입니다. - Define Tiers: 지출 금액을 rate limits에 매핑합니다:
- Tier 1: $0 - $50 spend -> 3 RPM
- Tier 2: $50 - $250 spend -> 10 RPM
- Tier 3: $250+ spend -> 50 RPM
- Enforce Limits: API middleware에서 고객의 tier를 조회하고 해당 rate limit을 적용합니다.
전체 구현 예시: API Proxy
production 환경에서는 일반적으로 API proxy가 사용자와 LLM provider 사이에 위치합니다. proxy는 request를 인증하고 credits를 확인하며 usage를 보고합니다. 아래 handler는 proxy를 구현합니다:Edge Cases 처리
OpenAI와 같은 billing system에는 계획해야 할 여러 edge cases가 있습니다.Race Conditions
잔액이 적은 사용자가 여러 request를 동시에 전송하면 event가 처리되기 전에 잔액을 초과할 수 있습니다. 이를 방지하려면 작은 buffer를 유지하거나 각 request 동안 고객 잔액에 대한 distributed lock을 유지합니다.Event Ingestion Latency
Dodo Payments는 credits를 비동기적으로 차감합니다. background worker가 약 1분에 한 번씩 새 event를 처리하므로 차감이 API call보다 늦어질 수 있습니다. 엄격한 real-time enforcement가 필요하다면 각 사용자의 잔액을 local cache에 유지하고 request를 처리할 때 업데이트합니다.Refund Handling
credit pack purchase를 refund해도 해당 구매로 지급된 credits는 제거되지 않습니다. refund할 때 debit으로 해당 credits를 직접 차감하세요. 고객의 Credits tab에서 Apply Credit/Debit을 사용하거나 Create Ledger Entry API를 사용합니다. 그런 다음 애플리케이션의 잔액 정보를 업데이트하여 사용자가 더 이상 보유하지 않은 credits를 사용할 수 없도록 합니다.Multi-Model Support
서로 다른 가격의 여러 model을 지원하려면 다음 두 가지 옵션 중 하나를 선택합니다:- Separate Meters: model마다 하나의 meter set을 생성합니다. 예를 들어
gpt-4o.input_tokens및gpt-4o-mini.input_tokens를 생성하고 각각 고유한 Meter units per credit을 설정합니다. - Weighted Events: 하나의 meter를 사용하고 event를 전송하기 전에
tokens에 weight를 곱합니다. 예를 들어 GPT-4o가 GPT-4o-mini보다 10배 비싸다면 GPT-4o request에 대해 토큰을 10배로 전송합니다.
Architecture Overview
아래 loop는 구매부터 차단된 call까지의 prepaid flow를 보여줍니다: meters는 토큰을 추적하고 구성된 rates에 따라 해당 달러 가치를 사용자의 credit balance에서 차감합니다. 잔액이 0에 도달하면 애플리케이션이 calls를 차단합니다.결론
Dodo Payments를 사용하면 OpenAI처럼 usage-based billing과 prepaid credits의 예측 가능성을 결합할 수 있습니다. 고객은 먼저 결제하고 사용한 만큼 소비하며 더 필요할 때 충전합니다. 대규모 LLM platform이나 소규모 AI tool 모두 동일한 구성 요소를 사용할 수 있습니다. fiat credit, top-up products, token meters, 그리고 각 request 전 잔액 확인입니다.사용된 주요 Dodo 기능
다음 Dodo Payments 기능이 구현을 지원합니다:Credit-Based Billing
사용자를 위한 prepaid fiat credits 및 entitlements를 관리합니다.
Usage-Based Billing
토큰과 같은 세부적인 usage를 추적하고 이에 대해 청구합니다.
One-Time Payments
checkout을 통해 credit packs 및 top-ups를 판매합니다.
Event Ingestion
대량의 usage data를 Dodo Payments로 전송합니다.
Webhooks
credit balance 변경 및 low balance alerts를 최신 상태로 확인합니다.
LLM Ingestion Blueprint
OpenAI 및 기타 LLM providers를 위한 automatic token tracking입니다.