Skip to main content
OpenAI는 API 사용량에 선불 법정화폐 크레딧을 적용하고, 소비자 제품에는 정액제 구독을 적용합니다. 선불 방식은 OpenAI에 현금을 미리 제공하며, 개발자는 영업 상담 없이 사용량을 확장할 수 있습니다. 많은 AI 기업이 이 모델을 모방합니다.

OpenAI 모델이 표준인 이유

기존 SaaS 결제는 AI 사용량의 가변 비용을 제대로 처리하지 못합니다. OpenAI의 모델은 세 가지 문제를 한 번에 해결합니다:
  1. 예측 가능한 수익과 낮은 위험: API 사용량이 선불이므로 사용자는 지불할 수 없는 금액을 청구받지 않습니다. OpenAI는 대금을 미리 받고, 사용자는 서비스를 이용하면서 금액을 사용합니다.
  2. 개발자를 위한 확장성: $5 충전은 진입 장벽이 낮습니다. 애플리케이션이 성장하면 개발자는 충전을 자동화하거나 더 큰 팩을 구매할 수 있습니다. 저렴하게 시작하고 플랜을 변경하지 않고도 사용량을 늘릴 수 있습니다.
  3. 사용자 심리: 추상적인 “토큰”이나 “포인트” 대신 미국 달러로 표시된 크레딧은 가치를 명확하게 보여줍니다. 잔액은 AI 서비스용 선불 계정처럼 작동하므로 기업이 예산을 편성하기 쉽습니다.

OpenAI는 어떻게 청구하는가

OpenAI는 사용자 유형에 따라 두 가지 결제 모델을 운영합니다.
  1. API (Pay-as-you-go): API는 선불 방식의 달러 표시 크레딧을 사용합니다. 사용자는 $5, $10, $50 또는 그 이상의 금액으로 계정을 충전합니다. 크레딧에는 달러 가치가 표시되지만 OpenAI 외부에서는 사용할 수 없습니다. OpenAI는 토큰당 요금을 청구하며 입력 토큰과 출력 토큰에 서로 다른 요율을 적용합니다. 구매한 크레딧은 구매 후 1년이 지나면 만료되며 환불되지 않습니다 (OpenAI Help Center). 잔액이 $0이 되면 API 호출이 실패합니다.
  2. ChatGPT Plus, Business, and Enterprise: 이 플랜들은 정액제 구독입니다. ChatGPT Plus는 월 $20이며, Business 플랜(이전 명칭: Team)은 월별 결제 시 사용자당 월 $25입니다. 이러한 플랜에는 완화된 사용량 한도가 적용됩니다. 사용량이 많은 사용자는 차단되는 대신 더 작은 모델로 전환됩니다.
  3. 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
Fiat credits는 소수점 이하 두 자리를 사용하므로 크레딧 1개는 1달러이며 잔액은 센트 단위로 추적됩니다. Dodo Payments는 잔액이 0이 되어도 사용을 차단하지 않습니다. OpenAI처럼 $0에서 API 호출이 실패하도록 하려면 각 요청 전에 애플리케이션에서 잔액을 확인하세요(아래 Handle Balance Depletion 참조).
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: tokens property에 Sum aggregation 적용.
  • llm.output_tokens: tokens property에 Sum aggregation 적용.
usage-based product에서 두 meter 모두 Bill usage in Credits를 켜고 fiat credit을 선택합니다. 그런 다음 각 meter에 대해 Meter units per credit를 설정합니다.

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.
Dodo Payments dashboard에서 입력에는 Meter units per credit을 400,000으로, 출력에는 100,000으로 설정합니다. Dodo Payments는 각 meter의 집계된 토큰 수를 이 값으로 나누어 차감할 credits를 계산합니다.
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이 도착하면 이메일 또는 인앱 알림을 보냅니다.
OpenAI는 auto recharge를 제공합니다. 사용자가 설정한 threshold 아래로 잔액이 떨어지면 더 많은 크레딧을 구매합니다.
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를 래핑하고 토큰을 자동으로 추적합니다.
Blueprint는 모든 API response에서 inputTokens, outputTokens 및 totalTokens을 읽고 model과 함께 event metadata로 전송합니다. 청구하려는 token key로 meter의 Over Property를 설정합니다.
LLM Blueprint는 OpenAI, Anthropic, Groq, Google Gemini, OpenRouter 및 Vercel AI SDK를 지원합니다. provider별 예시와 고급 구성은 full blueprint documentation을 참조하세요.

Spend-Based Rate Tiers 구현

OpenAI의 rate tiers는 신뢰도를 기준으로 capacity를 관리합니다. 이를 구축하려면 각 고객의 lifetime spend를 추적합니다.
  1. Track Lifetime Spend: payment.succeeded webhooks를 수신하고 결제 금액을 데이터베이스의 해당 고객 total_spend field에 더합니다. 금액은 가장 작은 currency unit으로 표시되므로 5000은 $50.00입니다.
  2. Define Tiers: 지출 금액을 rate limits에 매핑합니다:
    • Tier 1: $0 - $50 spend -> 3 RPM
    • Tier 2: $50 - $250 spend -> 10 RPM
    • Tier 3: $250+ spend -> 50 RPM
  3. 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을 지원하려면 다음 두 가지 옵션 중 하나를 선택합니다:
  1. Separate Meters: model마다 하나의 meter set을 생성합니다. 예를 들어 gpt-4o.input_tokens 및 gpt-4o-mini.input_tokens를 생성하고 각각 고유한 Meter units per credit을 설정합니다.
  2. Weighted Events: 하나의 meter를 사용하고 event를 전송하기 전에 tokens에 weight를 곱합니다. 예를 들어 GPT-4o가 GPT-4o-mini보다 10배 비싸다면 GPT-4o request에 대해 토큰을 10배로 전송합니다.
OpenAI는 각 model에 대해 별도의 rate를 공개하며, 별도의 meters가 이러한 구조에 가장 직접적으로 대응합니다.

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입니다.
마지막 수정일 2026년 9월 26일