B2B SaaS 사용량 초과·usage-based billing 추적 감사 체크리스트 2026, API calls·workflow runs·storage overage를 플랜 업셀과 섞기 전 확인할 기준
B2B SaaS 사용량 초과·usage-based billing 추적 감사 체크리스트 2026, API calls·workflow runs·storage overage를 플랜 업셀과 섞기 전 확인할 기준
B2B SaaS에서 매출이 늘었다고 해서 모두 같은 의미는 아닙니다. 좌석을 추가해서 늘어난 금액, 상위 플랜으로 올려서 늘어난 금액, API 호출이나 자동화 실행처럼 사용량이 늘어서 붙은 금액은 각각 다른 신호입니다.
특히 usage-based billing을 쓰는 제품은 월말 청구액이 갑자기 늘어도 원인을 바로 알기 어렵습니다. 사용자가 실제로 더 많이 쓴 것인지, 테스트 계정이 과도하게 호출한 것인지, 저장공간 초과 요금이 누적된 것인지, 자동화 루프가 잘못 돌아간 것인지 분리해야 합니다.
이 글은 B2B SaaS 운영팀, RevOps, CS Ops, 제품 운영팀이 사용량 초과 과금을 플랜 업셀과 섞지 않기 위해 확인할 기준을 정리한 체크리스트입니다. 회계, 세무, 법률, 투자 판단이 아니라 청구 이벤트, 사용량 로그, CRM 필드, 분석 이벤트를 일관되게 맞추는 운영 점검 관점으로만 다룹니다.
직전 단계에서 좌석 추가와 플랜 업그레이드를 점검했다면 <a href="https://www.hesedon.com/b2b-saas-expansion-upsell-tracking-audit-checklist-2026/">B2B SaaS 업셀·좌석 추가 추적 감사 체크리스트</a>를 먼저 확인하는 편이 좋습니다. 환불이나 크레딧 노트가 같이 섞이는 팀은 <a href="https://www.hesedon.com/b2b-saas-refund-credit-note-tracking-audit-checklist-2026/">B2B SaaS 환불·크레딧 추적 감사 체크리스트</a>도 함께 보면 매출 변동을 더 깔끔하게 나눌 수 있습니다.
먼저 나눌 사용량 단위
usage-based billing에서 가장 먼저 정할 것은 "무엇을 사용량으로 볼 것인가"입니다. 사용량 단위가 흐리면 청구서, 제품 로그, 고객 알림, CRM 보고서가 서로 다른 숫자를 보게 됩니다.
많이 쓰는 사용량 단위는 아래처럼 나눌 수 있습니다.
| 사용량 단위 | 예시 | 섞이면 생기는 문제 |
|---|---|---|
| API calls | REST API 호출, webhook 전송, LLM API 요청 | 봇·재시도·테스트 호출이 실제 고객 사용처럼 보임 |
| workflow runs | 자동화 실행, 시나리오 실행, job run | 오류 루프가 성공적인 사용 증가처럼 보임 |
| storage overage | 파일 저장공간, 로그 보관, 백업 용량 | 오래된 데이터 보관 비용이 고객 확장으로 오해됨 |
| seats over limit | 계약 좌석 초과 사용, 임시 사용자 초대 | 좌석 업셀과 일시 초과 요금이 섞임 |
| event volume | 분석 이벤트, 메시지 발송, 알림 전송 | 마케팅 캠페인성 급증이 제품 사용 증가처럼 보임 |
한 고객 안에서도 여러 단위가 함께 늘어날 수 있습니다. 그래서 "월 청구액 증가" 하나로 묶지 말고 usage_type, meter_id, workspace_id, subscription_item_id, billing_period, source_system 같은 식별자를 남겨야 합니다.
플랜 업셀과 overage를 분리해야 하는 이유
플랜 업셀은 보통 고객이 더 높은 기능, 더 많은 좌석, 더 큰 계약 범위를 선택했다는 신호입니다. 반면 overage는 기존 플랜 한도를 넘어서 발생한 사용량입니다. 둘 다 청구액을 올리지만 해석은 다릅니다.
overage가 반복되면 상위 플랜 전환 기회가 될 수 있습니다. 하지만 한 번 발생한 저장공간 초과나 자동화 루프를 업셀 성과로 기록하면 영업·CS 보고서가 왜곡됩니다. 반대로 실제 사용량 증가를 단순 초과 요금으로만 처리하면 고객 성공팀이 확장 신호를 놓칠 수 있습니다.
운영 보고서에서는 최소한 아래 세 필드를 분리하는 것이 좋습니다.
plan_upgrade_amount: 상위 플랜 전환으로 늘어난 금액seat_expansion_amount: 좌석 또는 사용자 수 증가로 늘어난 금액usage_overage_amount: API, 실행, 저장공간 같은 사용량 초과로 늘어난 금액
이 세 값이 같은 invoice line item 또는 CRM deal에 섞이면 나중에 cohort, NRR, churn reason, expansion 분석이 꼬입니다. 특히 고객이 다음 달에 사용량을 줄였을 때 "업셀 후 다운그레이드"처럼 보일 수 있습니다.
청구 이벤트에서 확인할 항목
Stripe 같은 구독 청구 시스템을 쓴다면 사용량 기반 과금은 subscription item, meter, invoice item, billing threshold 같은 개념과 연결됩니다. 이때 제품 로그와 청구 로그의 기준 시간이 다르면 월말 금액이 맞지 않을 수 있습니다.
점검할 항목은 다음과 같습니다.
- 사용량 집계 기준 시간이 UTC인지, 고객 로컬 시간인지 정해져 있는가
- meter 또는 subscription item별로 어떤 제품 기능과 연결되는지 문서화돼 있는가
- retry, duplicate event, test workspace 사용량을 제외하는 규칙이 있는가
- 무료 제공량, included usage, overage 시작 기준이 명확한가
- invoice preview와 실제 invoice 발행 후 금액 차이를 추적하는가
- 월중 threshold 알림이 고객과 내부팀에 같은 기준으로 나가는가
청구 이벤트는 "돈이 찍히는 곳"이지만 사용량의 원인을 설명해주지는 않습니다. 그래서 billing system의 line item만 보지 말고 제품 이벤트, 로그 저장소, CRM 필드까지 함께 맞춰야 합니다.
제품 로그에서 확인할 항목
usage-based billing의 품질은 제품 로그 품질에 크게 좌우됩니다. 고객이 실제로 쓴 양과 과금에 반영된 양이 다르면 신뢰 문제가 생깁니다.
제품 로그에서는 최소한 아래 항목을 남기는 것이 좋습니다.
account_id또는workspace_iduser_id또는service_account_idusage_typequantityevent_idoccurred_atingested_atbilling_periodis_test,is_retry,is_internal
특히 occurred_at과 ingested_at은 나눠야 합니다. 이벤트가 실제로 발생한 시간과 청구 시스템에 들어간 시간이 다를 수 있기 때문입니다. 월말에 늦게 들어온 사용량을 어느 기간에 반영할지도 운영 기준으로 정해야 합니다.
API 호출량은 재시도와 실패 호출을 어떻게 처리할지 정해야 합니다. workflow runs는 성공, 실패, 취소, 중복 실행을 분리해야 합니다. storage overage는 저장된 총량, 무료 제공량, 초과량, 삭제 후 반영 시점을 나눠야 합니다.
CRM과 CS 알림으로 연결하는 법
usage overage는 청구팀만 볼 문제가 아닙니다. 고객이 반복적으로 한도를 넘고 있다면 CS, 영업, 제품팀이 봐야 할 신호입니다. 다만 모든 초과 사용량을 영업 기회로 넘기면 잡음이 많아집니다.
CRM에는 아래처럼 단순한 필드를 두는 것이 좋습니다.
| 필드 | 목적 |
|---|---|
last_overage_type |
가장 최근 초과 사용량 종류 |
overage_months_last_3 |
최근 3개월 중 초과 발생 월 수 |
avg_overage_amount_3m |
최근 3개월 평균 초과 청구액 |
usage_growth_rate_3m |
최근 3개월 사용량 증가율 |
cs_review_required |
고객 안내 또는 플랜 점검 필요 여부 |
sales_expansion_candidate |
영업 확장 검토 대상 여부 |
기준은 보수적으로 잡는 편이 좋습니다. 한 달만 튄 사용량은 오류나 캠페인성 이벤트일 수 있습니다. 2~3개월 반복되고, 같은 usage_type에서 증가하며, 고객의 실제 업무량 증가와 연결될 때만 확장 후보로 넘기는 것이 안전합니다.
이미 dunning이나 결제 실패 알림을 운영한다면 <a href="https://www.hesedon.com/b2b-saas-payment-failed-dunning-automation-checklist-2026/">B2B SaaS 결제 실패·dunning 자동화 체크리스트</a>와 알림 흐름을 나눠야 합니다. 결제 실패 알림과 사용량 초과 알림이 같은 메시지로 나가면 고객이 원인을 이해하기 어렵습니다.
GA4·제품 분석 이벤트로 볼 지표
청구 시스템은 매출을 보여주고, 제품 분석은 행동을 보여줍니다. 둘을 연결할 때는 청구 금액을 GA4 이벤트 값처럼 직접 넣기보다 사용량 단계와 한도 접근 여부를 이벤트로 남기는 편이 관리하기 쉽습니다.
예를 들어 아래 이벤트를 따로 둘 수 있습니다.
usage_limit_warning_viewedusage_overage_startedusage_overage_resolvedusage_report_downloadedplan_limit_page_viewedupgrade_prompt_clicked
이 이벤트들은 "고객이 초과 사용량을 인지했는가", "한도 안내 페이지를 봤는가", "업그레이드 안내를 눌렀는가"를 보는 데 도움이 됩니다. 다만 개인정보나 결제 민감 정보는 분석 이벤트에 넣지 않는 편이 안전합니다.
trial-to-paid 흐름을 함께 보고 있다면 <a href="https://www.hesedon.com/b2b-saas-trial-to-paid-conversion-tracking-audit-checklist-2026/">B2B SaaS trial-to-paid 전환 추적 감사 체크리스트</a>의 subscription_created, payment_method_added, trial_end 이벤트와 usage 이벤트를 분리해 보세요. 가입 전환과 사용량 초과는 서로 다른 퍼널입니다.
월말 감사 체크리스트
매월 결산 전에 아래 항목을 확인하면 overage와 업셀을 섞는 문제를 줄일 수 있습니다.
- 이번 달 overage 총액이 플랜 업셀 총액과 별도 필드로 집계되는가
- usage_type별 overage 금액과 수량이 함께 저장되는가
- 내부 테스트 계정, 데모 계정, QA workspace가 제외됐는가
- 실패한 workflow run 또는 중복 API retry가 과금 수량에 포함되는지 기준이 있는가
- 고객에게 발송된 초과 사용량 알림과 실제 invoice line item이 같은 기준인가
- CRM expansion 후보는 1회성 overage가 아니라 반복 사용량 증가 기준으로 잡았는가
- 환불, credit note, 부분 취소가 overage 리포트에서 따로 보이는가
- 저장공간 초과 요금은 삭제·보관 정책 반영 시점이 문서화돼 있는가
- 제품 분석 이벤트에 결제 민감 정보나 불필요한 개인정보가 들어가지 않는가
- 다음 플랜 안내 문구가 강제 결제나 클릭 유도처럼 보이지 않는가
이 체크리스트의 목적은 overage를 무조건 줄이는 것이 아닙니다. 고객이 실제로 더 많이 쓰는 좋은 신호와, 운영 오류나 일시적 급증을 분리하는 것입니다.
공개 전에 볼 위험 신호
아래 상태라면 사용량 기반 과금 보고서를 외부 공유하거나 영업 성과로 반영하기 전에 한 번 멈추는 것이 좋습니다.
- 고객별 invoice 금액은 있는데 usage_type별 원인이 없다
- 제품 로그와 청구 로그의 월별 수량이 다르다
- 무료 제공량 또는 included usage 기준이 팀마다 다르다
- 자동화 실행 실패와 성공을 같은 사용량으로 본다
- 저장공간 초과 요금이 오래된 로그 보관 때문에 발생하는데 고객 사용 증가로 해석한다
- CRM deal amount에 plan upgrade와 overage가 함께 들어간다
- 환불·크레딧 노트가 overage 취소인지, 일반 환불인지 구분되지 않는다
이런 상태에서는 "매출이 늘었다"는 결론보다 "어떤 사용량이 어떤 고객에서 왜 늘었는가"를 먼저 확인해야 합니다.
정리
usage-based billing은 B2B SaaS의 확장성을 보여주는 좋은 모델입니다. 하지만 추적 기준이 약하면 좋은 확장 신호, 일시적 초과, 운영 오류, 환불 조정이 모두 한 매출 숫자에 섞입니다.
API calls, workflow runs, storage overage를 플랜 업셀과 분리해 기록하고, 청구 이벤트·제품 로그·CRM 필드·분석 이벤트를 같은 기준으로 맞추면 다음 의사결정이 쉬워집니다. 고객에게는 더 명확한 사용량 안내를 줄 수 있고, 내부 팀은 실제 확장 기회와 단순 초과 요금을 나눠 볼 수 있습니다.
다음 회차에서는 공식 청구 문서와 현재 제품 로그 기준을 다시 확인한 뒤, WordPress HTML 렌더링과 수익화 블록까지 통과할 때만 공개하는 것이 안전합니다.
참고한 공식 자료
원문: 원문기사 보기
원문: 원문기사 보기
원문: 원문기사 보기
원문: 원문기사 보기
원문: 원문기사 보기
원문: 원문기사 보기
원문: 원문기사 보기