Glowb Dev Docs
Admin APIAdmin Finance API

PUT /ai/admin/finance/ledger/{txId}

크레딧 이력 in-place 수정 (reverse 행 없음, 이후 balance_after 재계산)

크레딧 이력 수정 (in-place)

원장 행의 금액·발생일·비고를 그 자리에서 고칩니다. reverse 행을 만들지 않으므로 행 수와 트랜잭션 id 가 변하지 않고, 수정 지점 이후 행의 balanceAfter 만 다시 계산됩니다.

변경 전/후 스냅샷은 TB_CREDIT_TRANSACTION_AUDIT 에 남습니다 (원장 화면은 깔끔하게, 추적성은 감사 로그로).

레거시 reverse 쌍은 거부합니다 (409). 스스로 reverse 행이거나, 다른 행이 이 행을 reverse 한 경우입니다. 그 행들은 "원본 불변 + reverse 추가" 규약 위에서 짝이 맞춰져 있어 한쪽만 in-place 로 고치면 쌍이 깨집니다. 기존 PUT /credit-tx/{txId} 를 쓰세요.

HTTP 요청

PUT /ai/admin/finance/ledger/{txId}?adminId={adminId}
Authorization: Bearer {access_token}
Content-Type: application/json

Path / Query Parameters

파라미터위치타입필수설명
txIdpathLong수정할 원장 행 id
adminIdqueryString아니오처리자 ID

Request Body

null 필드는 "변경 없음" 을 뜻합니다.

{
  "occurredAt": "2026-07-03T10:00:00",
  "amount": -50000,
  "description": "금액 정정",
  "reason": "ETC",
  "memo": "세금계산서 대사",
  "provisional": null
}
필드타입필수설명
occurredAtLocalDateTime아니오새 발생일. 미래 시각은 거부
amountInteger아니오새 금액. 0 불가
descriptionString아니오새 비고
reasonCreditTransactionReason아니오새 사유
memoString조건부최종 reasonETC 면 필수
provisionalBoolean아니오임시 크레딧 여부

재계산 동작

금액만 바꾼 경우

[수정 전]                          [07-05 행을 -50,000 으로 수정]
07-01  +100,000  →  100,000        07-01  +100,000  →  100,000   (그대로)
07-05   -30,000  →   70,000        07-05   -50,000  →   50,000   ← 수정
07-09   -20,000  →   50,000        07-09   -20,000  →   30,000   ← 재계산

remainCredit: 50,000 → 30,000      (델타 -20,000)

발생일을 앞으로 옮긴 경우

원장 순서 자체가 바뀝니다. 이때 재계산 시작점은 기존 발생일과 새 발생일 중 더 이른 쪽입니다.

[07-09 행을 07-03 으로 이동]
07-01  +100,000  →  100,000   (그대로)
07-03   -20,000  →   80,000   ← 옮겨온 행
07-05   -30,000  →   50,000   ← 재계산

금액이 그대로라 remainCredit 은 변하지 않음

응답 (200 OK)

POST .../entry 와 동일한 형태입니다.

{
  "status": 200,
  "code": null,
  "message": "크레딧 이력 수정 완료",
  "data": {
    "transaction": { "id": 2103, "amount": -50000, "balanceAfter": 50000, "occurredAt": "2026-07-05T10:00:00" },
    "recalculatedCount": 2,
    "newRemainCredit": 30000,
    "expectedRemainCredit": 30000,
    "balanceMismatch": false
  }
}

에러

상태조건
400amount=0, 미래 occurredAt, reason=ETC + memo 누락
409이미 삭제된 행 / reverse 행 자체 / 이미 reverse 된 원본 (FINANCE_002)
503기업 행 락 경합 (DB_LOCK_ERROR) — 재시도

API 테스트

On this page