Skip to Content
API v1.7.0 Released - Settlement order number query + partial shipment support

거래명세서 데이터 조회 - JSON

주문번호(ord_no) 또는 주문품목번호(ord_prd_no)로 해당 주문/품목이 포함된 정산 건의 거래명세서 데이터를 JSON으로 조회합니다.

Playground에서 테스트

비권장: 이 API는 거래명세서 데이터를 JSON 구조로 반환합니다. 향후 응답 스키마가 변경될 경우 연동 파트너 측에서도 코드 수정이 필요합니다. 데이터를 프로그래밍적으로 가공해야 하는 특수한 경우에만 사용하고, 그 외에는 PDF API 사용을 권장합니다.


Endpoint

POST /vendor-api/settlements/transaction-statement/data

요청 파라미터

필드타입필수설명
ord_nostring택1주문번호 — 현재 preparing 상태인 모든 라인의 패킹 명세서
ord_prd_nostring택1주문품목번호 (형식: {주문번호}_[{인덱스}]) — 단일 라인 명세서

본 endpoint는 B2C 패킹 명세서 전용입니다. 구매자(병원)에게 배송 동봉용으로 사용됩니다. 응답은 항상 현재 preparing 상태 라인만 포함 (출하된 라인은 이미 이전 명세서에서 패킹되어 나갔으므로 제외).


요청 예시

주문번호로 조회 (권장)

curl -X POST "https://brightmall-backend.certi.life/vendor-api/settlements/transaction-statement/data" \ -H "Content-Type: application/json" \ -H "X-Vendor-Api-Key: bm_xOpGAqgHbJQBXxBBbUIZ_bAGZk4wK2FdLgF50277PU8" \ -H "X-Vendor-Id: 01KC51ST1WSTAET481SHPH3PSY" \ -d '{"ord_no": "202601220157_000020196"}'

주문품목번호로 조회 (하위 호환)

curl -X POST "https://brightmall-backend.certi.life/vendor-api/settlements/transaction-statement/data" \ -H "Content-Type: application/json" \ -H "X-Vendor-Api-Key: bm_xOpGAqgHbJQBXxBBbUIZ_bAGZk4wK2FdLgF50277PU8" \ -H "X-Vendor-Id: 01KC51ST1WSTAET481SHPH3PSY" \ -d '{"ord_prd_no": "202601220157_000020196_[1]"}'

응답

응답 헤더

헤더설명
X-Statement-Modepreview | nonepreview: 현재 preparing 라인 응답 (정상) / none: 응답할 라인 없음 (404)
X-Request-Id(request ID)요청 추적 ID

응답 예시

{ "success": true, "request_id": "req_mkp3tsd_abc123", "timestamp": "2026-02-13T10:00:00.000Z", "settlement": { "settlement_id": "01SETTLEMENT_ID_EXAMPLE", "settlement_no": "SET-20260211-001", "status": "pending", "period_start": "2026-02-01", "period_end": "2026-02-11", "settlement_date": "2026-02-11" }, "orders": [ { "delivery_date": "2026-02-10", "proof_number": "SET-20260211-001-001", "receiver": { "biz_no": "123-45-67890", "name": "행복치과의원", "owner": "홍길동", "address": "서울특별시 강남구 테헤란로 123", "phone": "02-1234-5678", "biz_type": "의료업", "biz_kind": "치과의원" }, "supplier": { "name": "세일글로벌", "biz_no": "987-65-43210", "owner": "김대표", "address": "서울특별시 서초구 서초대로 456", "biz_type": "도매업", "biz_kind": "의료기기", "phone": "02-9876-5432", "email": "sales@seilglobal.com" }, "items": [ { "no": 1, "insurance_code": "J1234567", "product_title": "델리킷 Impre Kicker / M사이즈", "specifications": "", "unit": "EA", "quantity": 2, "unit_price": 75000, "amount": 150000 } ], "summary": { "subtotal": 150000, "supply_amount": 136364, "vat_amount": 13636, "total": 150000, "outstanding": "" }, "footer": { "notes": "", "sales_office": "브라이트몰", "sales_rep_name": "담당자", "sales_rep_phone": "" } } ] }

응답 필드 설명

settlement (정산 정보)

필드타입설명
settlement_idstring정산 고유 ID
settlement_nostring정산 번호 (형식: SET-YYYYMMDD-NNN)
statusstring정산 상태 (pending, confirmed, paid)
period_startstring정산 기간 시작일 (YYYY-MM-DD)
period_endstring정산 기간 종료일 (YYYY-MM-DD)
settlement_datestring정산일 (YYYY-MM-DD)

orders[] (주문별 거래명세서)

필드타입설명
delivery_datestring인도일 (배송일)
proof_numberstring증빙번호

orders[].receiver (공급받는자 정보)

필드타입설명
biz_nostring사업자등록번호
namestring상호
ownerstring대표자명
addressstring주소
phonestring전화번호
biz_typestring업태
biz_kindstring종목

orders[].supplier (공급자 정보)

필드타입설명
namestring상호
biz_nostring사업자등록번호
ownerstring대표자명
addressstring주소
biz_typestring업태
biz_kindstring종목
phonestring전화번호
emailstring이메일

orders[].items[] (품목 상세)

필드타입설명
nonumber순번
insurance_codestring보험코드 (해당 없으면 빈 문자열)
product_titlestring상품명
specificationsstring규격
unitstring단위 (예: "EA")
quantitynumber수량
unit_pricenumber단가 (공급가 기준)
amountnumber금액 (unit_price x quantity)

orders[].summary (합계)

필드타입설명
subtotalnumber합계 금액
supply_amountnumber공급가액 (부가세 제외)
vat_amountnumber부가세액
totalnumber총액 (공급가액 + 부가세)
outstandingstring미수금 (해당 없으면 빈 문자열)

orders[].footer (하단 정보)

필드타입설명
notesstring비고
sales_officestring영업소
sales_rep_namestring영업 담당자명
sales_rep_phonestring영업 담당자 연락처

동작 (B2C 패킹 명세서)

본 endpoint는 현재 preparing 상태인 라인만 응답합니다. 매 PUT confirm 회차 = 1장의 패킹 명세서 = 1회 배송 동봉용으로 사용하시는 것이 정합한 흐름입니다.

  • settlement_id = "preview-{ord_no}" (in-memory, DB write 없음)
  • settlement_no = null (정산 권위 ID는 정산 도메인 admin endpoint에서 별도 발급)
  • status = "draft" (고정)
  • 응답 라인 필터: metadata.item_status = "preparing" 라인만
    • shipped / delivered: 이미 이전 회차 명세서에서 패킹되어 출고됨 → 제외
    • cancel_requested / null (PUT omit으로 reset된 라인) / stock_available = false: 제외

응답 시나리오:

  1. 현재 preparing 라인 1건 이상 → preview mode 응답
  2. preparing 라인 0건 (전부 출고 또는 omit) → 404 SETTLEMENT_NOT_FOUND

참고사항

  • 요청 형식 및 동작은 PDF API와 동일합니다.
  • 응답 unit_price는 판매가(sale_price, 플랫폼→병원 공급가)입니다. 입점사→플랫폼 공급가는 응답에 노출되지 않습니다.
  • 정산 권위 문서(B2B 세금계산서/정산)는 별도 정산 도메인 endpoint를 사용하세요.