현금영수증 취소 API
현금영수증 취소 API는 발급된 현금영수증을 전체 취소하거나 일부 금액만 부분 취소하는 API입니다.
현금영수증 발급 응답으로 받은 cash_no를 mod_value에 설정하고,
가맹점 개인키로 생성한 kcp_sign_data와 서비스 인증서를 함께 전송합니다.
부분 취소 시에는 취소 요청 금액과 취소 전 잔액을 함께 전송해야 합니다.
요약
HTTP Method
POST 방식으로 요청합니다.
Content-Type
application/json; charset=utf-8 형식으로 요청합니다.
통신 보안
TLS 1.2 이상 환경에서 통신합니다.
테스트 URL
https://stg-spl.kcp.co.kr/gw/mod/v1/cancel
운영 URL
https://spl.kcp.co.kr/gw/mod/v1/cancel
정상 응답 기준
res_cd 값이 0000이면 정상 처리입니다.
요청 정보
전체 취소는 mod_type에 STSC를 사용합니다.
부분 취소는 mod_type에 STPC를 사용하고,
mod_mny와 rem_mny를 함께 전송합니다.
현금영수증 발급 응답으로 받은 cash_no 값을 mod_value에 설정하세요.
전체 취소 Request Body 예시
{
"site_cd": "T0000",
"kcp_cert_info": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----",
"kcp_sign_data": "OehQsMb7S8KTCrp6Bi6fEVft...Y7ZX1BI3A==",
"mod_type": "STSC",
"mod_gubn": "MG01",
"mod_value": "25834156556924"
} 부분 취소 Request Body 예시
{
"site_cd": "T0000",
"kcp_cert_info": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----",
"kcp_sign_data": "OehQsMb7S8KTCrp6Bi6fEVft...Y7ZX1BI3A==",
"mod_type": "STPC",
"mod_gubn": "MG01",
"mod_value": "25834156556924",
"mod_mny": "500",
"rem_mny": "1000"
} 요청 파라미터
파트너관리자 인증센터에서 다운로드한 PEM 파일 내용을 직렬화하여 사용합니다.ex) kcp_cert_info: -----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----
site_cd + "^" + mod_value + "^" + mod_type 규칙으로 문자열을 생성한 뒤, 개인키를 사용하여 SHA256withRSA 방식으로 서명합니다.ex) kcp_sign_data: OehQsMb7S8KTCrp6Bi6fEVft...Y7ZX1BI3A==
부분 취소 ex) mod_type: STPC
추가 부분 취소 요청에서는 직전 취소 후 남은 금액을 입력합니다.ex) rem_mny: 1000
응답 정보
취소 응답의 cash_no에는 취소 요청한 현금영수증 거래번호가 리턴됩니다.
receipt_no에는 취소 승인번호가 리턴되며, 발급 시 받은 승인번호와 다른 값이므로 별도로 저장하세요.
현금영수증 취소 요청도 NHN KCP와 국세청에 등록되며, reg_stat과 reg_desc로 현재 상태를 확인할 수 있습니다.
취소 실패 시 res_cd와 res_msg 외의 응답 데이터는 리턴되지 않습니다.
Response Body 예시
{
"res_cd": "0000",
"res_msg": "정상처리",
"cash_no": "25834156556924",
"receipt_no": "591320761",
"app_time": "20251231144020",
"reg_stat": "NTRW",
"reg_desc": "KCP 등록 완료"
} 응답 파라미터
구현 참고사항
취소 요청 구현 포인트 보기
현금영수증 취소 서명 대상 문자열은 site_cd + "^" + mod_value + "^" + mod_type 순서로 구성합니다.
// 현금영수증 취소 서명데이터 생성 String targetData = siteCd + "^" + modValue + "^" + modType; Signature signature = Signature.getInstance("SHA256WithRSA"); signature.initSign(privateKey); signature.update(targetData.getBytes(StandardCharsets.UTF_8)); String kcpSignData = Base64.getEncoder().encodeToString(signature.sign());
부분 취소 시에는 mod_mny에 취소 요청 금액을, rem_mny에 취소 요청 직전의 취소 가능 금액을 입력합니다.
kcp_cert_info와 개인키는 웹이나 클라이언트에 노출하지 말고 가맹점 서버의 안전한 저장소에서 관리하세요.
현금영수증 등록 상태 코드
| 상태 코드 | 설명 |
|---|---|
| NTRW | KCP 등록 완료 |
| NTNW | 국세청 등록 대기 |
| NTNC | 국세청 등록 완료 |
| NTNE | 국세청 등록 오류 |
| NTNF | 국세청 거절 |