📖 Adit 서비스 가이드에 오신 것을 환영합니다!
📖 용어 및 상태값 정리

용어 및 상태값 정리

Adit 서비스에서 사용하는 용어, 데이터 구조, 상태값을 정리했습니다.


참여자

참여자설명시스템
광고주 (Advertiser)캠페인을 의뢰하고 비용을 지불광고주 프론트
파트너 (Partner)콘텐츠를 제작/업로드하고 정산금 수령파트너 콘솔
대행사 (Agency)정산을 중개하는 주체 (Adit, 미드나잇웨이브 등)어드민
채널 (Channel)파트너가 운영하는 SNS 계정파트너 콘솔

데이터 관계도

전체 구조

┌─────────────┐         ┌─────────────┐         ┌─────────────┐
│  Advertiser │         │   Partner   │         │   Agency    │
│   (광고주)   │         │   (파트너)   │         │   (대행사)   │
└──────┬──────┘         └──────┬──────┘         └──────┬──────┘
       │                       │                       │
       │                       ▼                       │
       │               ┌─────────────┐                 │
       │               │   Channel   │                 │
       │               │   (채널)    │                 │
       │               └──────┬──────┘                 │
       │                      │                        │
       ▼                      ▼                        ▼
┌────────────────────────────────────────────────────────────┐
│                         Campaign                            │
│                          (캠페인)                           │
│  • advertiserId, partnerId, channelId                       │
│  • agencyId (정산 주체)                                      │
│  • settlementType (ADIT_SETTLEMENT / DIRECT_INVOICE)        │
│  • commissionRate (캠페인별 수수료 오버라이드)                  │
└─────────────────────────────┬──────────────────────────────┘

                              │ 1:1 (업로드 완료 시 자동 생성)

┌────────────────────────────────────────────────────────────┐
│                        Settlement                           │
│                          (정산)                             │
│  • campaignId (1:1)                                         │
│  • commissionRate, withholdingTaxRate, payoutAmount          │
│  • advertiserInvoiceId (N:1) - 청구서 연결                   │
│  • partnerPayoutId (N:1) - 지급 연결                         │
└────────────┬───────────────────────────────┬───────────────┘
             │                               │
             ▼                               ▼
┌────────────────────────┐       ┌────────────────────────┐
│   AdvertiserInvoice    │       │     PartnerPayout      │
│    (광고주 청구서)      │       │     (파트너 지급)       │
│  • 건별 또는 월별 합산  │       │  • 건별 또는 월별 합산   │
└────────────────────────┘       └────────────────────────┘

정산 3계층 구조

계층모델설명관계
1계층Settlement캠페인 단위 정산 레코드캠페인 1건 = 정산 1건
2계층-AAdvertiserInvoice광고주에게 발행하는 청구서건별: 1:1 / 월별: N:1
2계층-BPartnerPayout파트너에게 지급하는 배치건별: 1:1 / 월별: N:1

견적서 (Quotation)

채널/상품 조합으로 구성된 견적서입니다. 실행(Execute)하면 캠페인이 일괄 생성됩니다.

필드설명
quoId견적서 고유 ID (예: QUO001)
advertiserId광고주 (선택)
items견적 항목 배열 (JSON): 채널, 상품, 수량
totalAmount총 금액
status견적서 상태 (QuotationStatus)
executedAt실행(캠페인 생성) 일시

견적서 상태 (QuotationStatus)

상태코드설명
📝 초안DRAFT수정/삭제 가능
📤 발송됨SENT광고주에게 전달됨
실행됨EXECUTED캠페인 생성 완료 (종료 상태)
취소됨CANCELLED소프트 삭제 (종료 상태)

사업자 검증 (NTS)

국세청 API를 통한 사업자등록정보 검증입니다.

기능설명
상태조회사업자번호만으로 휴/폐업 상태, 과세유형 확인
진위확인사업자번호 + 개업일자 + 대표자명 → NTS 기록 일치 여부
  • API: POST /api/public/business/verify (인증 불필요)
  • 가입/온보딩/설정 변경 시 사업자번호 실시간 검증
  • Rate limit: 15분당 IP당 30회

Bolta 세금계산서

BoltaCustomer (볼타 고객)

Bolta API 연동을 위한 발행 주체 등록 정보입니다.

필드설명
boltaCustomerIdBolta에서 발급한 고객 ID
agencyId소속 대행사 (null = Adit 본사)
businessNumber사업자등록번호
certificateExpiresAt공동인증서 만료일

BoltaIssuance (정발행 추적)

광고주에게 발행하는 세금계산서 추적 레코드입니다.

필드설명
settlementId연결된 정산 ID
issuanceKeyBolta 발행 키
statusPENDING / SUCCESS / FAILURE / CANCELLED
invoiceNumber세금계산서 번호 (성공 시)
failureMessage실패 사유

BoltaReverseIssuance (역발행 추적)

파트너(법인)가 Adit/대행사에게 발행하는 세금계산서 추적 레코드입니다.

필드설명
settlementId연결된 정산 ID
issuanceKeyBolta 발행 키
statusPENDING / SUCCESS / FAILURE / CANCELLED
grantUrl역발행 승인 URL (10분 유효)

캠페인 상태 (CampaignStatus)

상태코드설명
🟠 광고주 대기PENDING_ADVERTISER광고주가 등록, 파트너 검토 전
🟡 대기PENDING파트너/어드민 확정 대기
🟢 확정CONFIRMED캠페인 확정, 진행 예정
🔵 진행 중IN_PROGRESS콘텐츠 제작/업로드 기간
업로드 완료UPLOADED콘텐츠 업로드됨, 정산 대기
💰 완료COMPLETED정산까지 모두 완료
거절REJECTED파트너가 거절
🔴 취소CANCELLED캠페인 취소

상태 전이 다이어그램

PENDING_ADVERTISER ──→ PENDING ──┬──→ CONFIRMED ──→ IN_PROGRESS ──→ UPLOADED ──→ COMPLETED
                                 │         │              │
                                 │         ▼              ▼
                                 │    CANCELLED      CANCELLED

                                 └──→ REJECTED

사용자별 상태 변경 권한

현재 상태가능한 액션
PENDING취소 (삭제)
그 외액션 없음 (조회만)

광고주는 PENDING 상태에서만 캠페인을 취소(삭제)할 수 있습니다.


정산 상태 (SettlementStatus)

상태코드설명
🕐 정산 대기SETTLEMENT_PENDING파트너 정산 요청 전
📤 결제 대기AWAITING_ADVERTISER_PAYMENT파트너가 정산 요청함, 광고주 입금 대기
결제 완료ADVERTISER_PAID광고주 입금 확인됨
🔄 지급 처리 중PARTNER_PAYOUT_PROCESSING파트너 지급 처리 중
💰 정산 완료SETTLEMENT_COMPLETED파트너 송금 완료
정산 취소SETTLEMENT_CANCELLED정산 취소

정산 방식별 플로우

ADIT_SETTLEMENT - Adit/대행사가 중개

SETTLEMENT_PENDING (정산 대기)

      │ [파트너] 정산 요청

AWAITING_ADVERTISER_PAYMENT (결제 대기)

      │ [어드민] 세금계산서 발급 → 광고주에게 발송
      │ [어드민] 입금 확인

ADVERTISER_PAID (결제 완료)

      │ [어드민] 파트너 지급 시작

PARTNER_PAYOUT_PROCESSING (지급 처리 중)

      │ [어드민] 정산 완료

SETTLEMENT_COMPLETED (정산 완료)

      └─→ 캠페인 상태도 COMPLETED로 변경

청구서 상태 (InvoiceStatus)

광고주에게 발행하는 청구서 상태입니다.

상태코드설명
📝 초안DRAFT청구서 생성됨, 세금계산서 미발행
📤 발행됨ISSUED세금계산서 발행됨, 입금 대기
입금 완료PAID광고주 입금 확인됨
⚠️ 연체OVERDUE납기일 초과
취소CANCELLED청구서 취소

지급 상태 (PayoutStatus)

파트너에게 송금하는 지급 상태입니다.

상태코드설명
🕐 대기PENDING지급 배치 생성됨, 세금계산서 미수령
📥 세금계산서 수령INVOICE_RECEIVED파트너 세금계산서 수령 확인
🔄 처리 중PROCESSING송금 처리 중
완료COMPLETED송금 완료
취소CANCELLED지급 취소

정산 유형 (SettlementType)

유형코드설명수수료원천징수
Adit 정산ADIT_SETTLEMENT광고주 → 대행사 → 파트너있음 (기본 20%)개인 3.3%
매체사 직정산DIRECT_INVOICE광고주 → 파트너 직접없음 (0%)없음 (0%)

어드민이 정산 유형을 변경할 수 있습니다. 변경 시 수수료/원천징수가 재계산되며 상태가 초기화됩니다.


청구/지급 유형

유형코드설명
건별PER_CAMPAIGN캠페인 1건 = 청구서/지급 1건
월별MONTHLY여러 캠페인 합산하여 청구/지급
💡

현재는 건별 정산만 지원됩니다. 월별 정산은 추후 지원 예정입니다.


슬롯 (PartnerSlot)

파트너의 날짜별 캠페인 예약 가능 여부를 관리합니다.

필드설명기본값
date날짜-
isAvailable예약 가능 여부true
maxCampaigns최대 캠페인 수 (0=무제한)0
currentCampaigns현재 예약된 캠페인 수0

슬롯 카운트 변화

시점변화
캠페인 생성+1
캠페인 업로드 완료-1
캠페인 완료-1
캠페인 취소-1
캠페인 거절-1

슬롯 반환은 최초 1회만 발생합니다 (중복 반환 방지).


금액 계산

수수료 기본값

항목기본값비고
Adit 정산 수수료율20%파트너별/캠페인별 설정 가능
직정산 수수료율0%고정
원천징수율 (개인+ADIT)3.3%하드코딩

수수료율 적용 우선순위

  1. Campaign.commissionRate (캠페인별)
  2. Partner.commissionRate (파트너 기본)
  3. 시스템 기본값 20%

정산금 계산 (ADIT 정산)

수수료 금액 = 캠페인 가격 × 수수료율
정산금 (공급가액) = 캠페인 가격 - 수수료 금액
원천징수 = 정산금 × 원천징수율 (개인사업자 3.3%, 법인 0%)
실지급액 = 정산금 - 원천징수

예시 (캠페인 100만원, 수수료 20%, 개인사업자):

항목금액
캠페인 가격1,000,000원
수수료 (20%)200,000원
정산금800,000원
원천징수 (3.3%)26,400원
실지급액 (payoutAmount)773,600원

예시 (캠페인 100만원, 수수료 20%, 법인사업자):

항목금액
캠페인 가격1,000,000원
수수료 (20%)200,000원
정산금800,000원
원천징수 (0%)0원
실지급액 (payoutAmount)800,000원

매체사 직정산

수수료/원천징수 모두 0%이므로 캠페인 가격 전액이 실지급액입니다.


주요 필드 설명

Campaign

필드설명
settlementType정산 유형 (ADIT_SETTLEMENT / DIRECT_INVOICE)
commissionRate캠페인별 수수료율 (null이면 파트너 기본값 사용)
agencyId담당 대행사 ID (ADIT 정산 시 정산 주체)
uploadDate업로드 예정일
status캠페인 상태

Settlement

필드설명
campaignPrice캠페인 가격 (스냅샷)
commissionRate수수료율 (%)
commissionAmount수수료 금액
settlementAmount정산금 (캠페인가격 - 수수료)
withholdingTaxRate원천징수율 (개인+ADIT: 3.3%, 그 외: 0)
withholdingTaxAmount원천징수 금액
payoutAmount실지급액 (정산금 - 원천징수)
requestedAt정산 요청 일시
completedAt정산 완료 일시
invoiceIssuedAt세금계산서 발급일 (DIRECT_INVOICE)
invoicePaidAt입금 확인일 (DIRECT_INVOICE)
partnerInvoiceReceivedAtBolta 역발행 수령 확인일

상태 이모지 빠른 참조

캠페인

🟠🟡🟢🔵💰🔴
광고주대기대기확정진행중업로드완료완료거절취소

정산

🕐📤🔄💰
정산대기결제대기결제완료지급처리중정산완료취소