Admin세금계산서(어드민)
세금계산서 크레딧 입금
입금 확인 후 세금계산서 건으로 광고주 크레딧을 충전합니다 (운영자 전용).
세금계산서 크레딧 입금
광고주의 실제 계좌 입금을 확인한 뒤, 세금계산서 관리 페이지에서 버튼 하나로 해당 광고주의 글로벌 크레딧(Business.remainCredit) 을 충전합니다.
- 충전 금액은 세금계산서의 공급가액(
supplyAmount) 입니다 (VAT 제외). - 캠페인 예산이 아니라 광고주 글로벌 크레딧에 적립됩니다 (세금계산서는 광고주 단위 크레딧 충전 청구).
- 크레딧 원장에
CREDIT_ADD/reason=TAX_INVOICE/description="세금계산서 입금"한 행이 기록되며, 처리자(createdBy)는 어드민 토큰에서 도출합니다.
⚠️ admin 전용 endpoint입니다. ROLE_ADMIN 권한이 없으면 거부됩니다. 요청 바디는 없으며, 세금계산서 id만으로 대상 광고주·금액이 결정됩니다.
HTTP 요청
POST /ai/admin/tax-invoice/{id}/deposit-credit
Authorization: Bearer {access_token}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
id | path Long | 예 | 크레딧을 입금할 TaxInvoice.id |
선행조건 / 상태 전이
- 세금계산서 상태가
ISSUED(발행 완료) 여야 합니다. - 입금이 반영되면
status가ISSUED→DEPOSITED(입금 완료) 로 전이됩니다. 프론트는 이status값으로 입금 버튼 활성(ISSUED)/완료(DEPOSITED)를 판단합니다 — 별도 계산 불필요. - 한 세금계산서는 1회만 입금 가능합니다. 이미
DEPOSITED상태면 재요청 시 거부됩니다(중복 방지). - 세금계산서에는
creditDepositedAt(반영 시각, 표시용)과creditTxId(연결된 크레딧 트랜잭션 id, 역추적용)도 함께 기록됩니다.
성공 응답 (200 OK)
{
"status": 200,
"message": "세금계산서 크레딧 입금 완료",
"data": {
"id": 5001,
"businessId": 1234,
"transactionType": "CREDIT_ADD",
"amount": 1000000,
"balanceAfter": 1500000,
"collabNo": null,
"candyPaymentId": null,
"description": "세금계산서 입금",
"reason": "TAX_INVOICE",
"memo": null,
"reverseOfTxId": null,
"createdAt": "2026-07-14T15:00:00",
"createdBy": "admin-account-id"
}
}에러 응답
glowb 백엔드는 예외도 HTTP 200으로 내리고 body.status에 실제 코드를 실어 보냅니다. 프론트는 반드시 body.status를 검사해야 합니다.
| body.status | code | 설명 |
|---|---|---|
404 | TAX_INVOICE_001 | 세금계산서를 찾을 수 없음 |
409 | TAX_INVOICE_002 | 발행 완료(ISSUED) 상태가 아님 |
409 | TAX_INVOICE_003 | 이미 크레딧이 입금됨 (중복) |
404 | TAX_INVOICE_004 | 세금계산서에 연결된 광고주를 찾을 수 없음 |
400 | INVALID_DATA | 관리자 권한 없음 |