Admin APIAdmin Finance API
PATCH /ai/admin/finance/ledger/{txId}/provisional
임시 크레딧 표시 전환 (컬럼 기반, 잔액 무변동)
임시 크레딧 표시 전환
임시 크레딧 여부를 켜고 끕니다. 금액·발생일을 건드리지 않으므로 잔액도 balanceAfter 도
변하지 않습니다 (recalculatedCount 는 항상 0).
임시 크레딧이란
잔액이 부족한 상태에서 관리자가 캠페인 결제를 강행할 때 넣는 "나중에 회수해야 하는" 크레딧입니다
(CandyPaymentService.payCollabWithCreditByAdmin). 충전과 동시에 캠페인으로 빠져나가므로
잔액은 그대로지만, 실제로는 입금되지 않은 돈입니다.
예전에는 description 문자열("관리자 임시 크레딧 충전 ...")로만 표시했습니다. 그러면
집계·필터가 불가능하고, 어드민이 비고를 고치는 순간 표시가 사라집니다.
이제 is_provisional 컬럼이 진실원본이고 description 문구는 하위 호환으로만 남아 있습니다.
상태 조합
provisional | provisionalSettledAt | 의미 |
|---|---|---|
false | null | 일반 거래 |
true | null | 임시 크레딧 — 미정산 |
false | 시각 | 임시였다가 정산 완료 |
HTTP 요청
PATCH /ai/admin/finance/ledger/{txId}/provisional?adminId={adminId}
Authorization: Bearer {access_token}
Content-Type: application/jsonPath / Query Parameters
| 파라미터 | 위치 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
txId | path | Long | 예 | 원장 행 id |
adminId | query | String | 아니오 | 처리자 ID |
Request Body
{
"provisional": false
}| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
provisional | Boolean | 예 | true=임시로 표시, false=확정(정산 시각 기록) |
동작 규칙:
false로 바꾸면provisionalSettledAt에 현재 시각이 기록됩니다.true로 되돌리면provisionalSettledAt이 지워집니다.- 같은 값으로 다시 호출해도 정산 시각이 덧씌워지지 않습니다 (멱등).
이 API 는 레거시 reverse 행에도 허용됩니다. 라벨을 붙였다 떼는 동작이라 원장 금액에 영향이 없고, 임시 충전 행이 이미 reverse 로 정정된 경우에도 표시는 정정할 수 있어야 하기 때문입니다. 삭제된 행만 거부합니다.
응답 (200 OK)
{
"status": 200,
"code": null,
"message": "임시 크레딧 상태 변경 완료",
"data": {
"transaction": {
"id": 2103,
"transactionType": "CREDIT_ADD",
"amount": 3000000,
"balanceAfter": 3000000,
"description": "관리자 임시 크레딧 충전 (캠페인 결제용) - collabNo: 482",
"occurredAt": "2026-06-14T09:11:00",
"provisional": false,
"provisionalSettledAt": "2026-08-11T14:31:07"
},
"recalculatedCount": 0,
"newRemainCredit": 40000,
"expectedRemainCredit": 40000,
"balanceMismatch": false
}
}조회 노출
기업/캠페인 파이낸스 상세의 타임라인 row 에 provisional, provisionalSettledAt 이 함께 내려갑니다
(뱃지 표시용).
에러
| 상태 | 조건 |
|---|---|
400 | provisional 누락 |
409 | 이미 삭제된 행 (FINANCE_002) |