전담지원 신청
API Reference > 현금영수증 > 취소

현금영수증 취소 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"
}

요청 파라미터

site_cd필수 string5
길이 5자리로 영문대문자 또는 영문대문자+숫자로 구성됩니다. 모든 서비스에 사용합니다.ex) site_cd: T0000
kcp_cert_info필수 string가변
NHN KCP에서 발급하는 서비스 인증서입니다.
파트너관리자 인증센터에서 다운로드한 PEM 파일 내용을 직렬화하여 사용합니다.ex) kcp_cert_info: -----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----
kcp_sign_data필수 string가변
가맹점의 부인방지와 요청 데이터의 무결성 검증을 위한 서명데이터입니다.
site_cd + "^" + mod_value + "^" + mod_type 규칙으로 문자열을 생성한 뒤, 개인키를 사용하여 SHA256withRSA 방식으로 서명합니다.ex) kcp_sign_data: OehQsMb7S8KTCrp6Bi6fEVft...Y7ZX1BI3A==
mod_type필수 string4
현금영수증 취소 요청 유형입니다. 전체 취소는 STSC, 부분 취소는 STPC를 사용합니다.전체 취소 ex) mod_type: STSC
부분 취소 ex) mod_type: STPC
mod_gubn필수 string4
현금영수증 변경 요청 구분입니다. MG01 고정값을 사용합니다.ex) mod_gubn: MG01
mod_value필수 string14
현금영수증 취소 대상 거래번호입니다. 현금영수증 발급 응답으로 받은 cash_no 값을 입력합니다.ex) mod_value: 25834156556924
mod_mny number12
부분취소 요청 금액입니다. mod_type이 STPC일 때 필수로 전송합니다. 총 거래금액 1000원 중 500원을 취소할 경우 500을 입력합니다.ex) mod_mny: 500
rem_mny number12
취소 가능 금액입니다. 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 등록 완료"
}

응답 파라미터

res_cd string4
결과 코드입니다. 정상 처리된 경우 0000을 리턴합니다.ex) res_cd: 0000
res_msg string100
결과 메시지입니다. 현금영수증 취소가 정상 처리되면 정상처리가 리턴됩니다.ex) res_msg: 정상처리
cash_no string14
취소된 현금영수증의 거래번호입니다. 요청한 현금영수증 거래번호가 리턴됩니다.ex) cash_no: 25834156556924
receipt_no string9
취소된 현금영수증의 취소 승인번호입니다. 발급 시 받은 승인번호와 다른 값이 리턴됩니다.ex) receipt_no: 591320761
app_time string14
현금영수증 취소 요청이 처리된 시각입니다. YYYYMMDDHHMMSS 형식으로 리턴됩니다.ex) app_time: 20251231144020
reg_stat string4
현금영수증 등록 상태 코드입니다. 등록 상태 코드 표를 참고합니다.ex) reg_stat: NTRW
reg_desc string20
현금영수증 등록 상태에 대한 설명입니다.ex) 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와 개인키는 웹이나 클라이언트에 노출하지 말고 가맹점 서버의 안전한 저장소에서 관리하세요.

현금영수증 등록 상태 코드

상태 코드설명
NTRWKCP 등록 완료
NTNW국세청 등록 대기
NTNC국세청 등록 완료
NTNE국세청 등록 오류
NTNF국세청 거절