현금영수증 발급 API
현금영수증 발급 API는 계좌이체, 가상계좌 등의 현금 거래 정보를 NHN KCP에 등록하여
소득공제용 또는 지출증빙용 현금영수증을 발급하는 API입니다.
현금영수증은 원 거래일로부터 6일 이내에 발급해야 하며, 파트너관리자에서 현금영수증 설정을 발급 상태로 적용할 경우,
API로 중복 발급하지 않도록 주의하세요.
요약
HTTP Method
POST 방식으로 요청합니다.
Content-Type
application/json; charset=utf-8 형식으로 요청합니다.
통신 보안
TLS 1.2 이상 환경에서 통신합니다.
테스트 URL
https://stg-spl.kcp.co.kr/gw/hub/v1/payment
운영 URL
https://spl.kcp.co.kr/gw/hub/v1/payment
정상 응답 기준
res_cd 값이 0000이면 정상 처리입니다.
요청 정보
가맹점의 사이트에서 하위업체(입점몰)의 현금결제가 일어나는 경우에도 현금영수증 등록이 가능합니다.
사업자 구분(corp_type) 값이 1인 경우 입점몰 판매로 구분되므로, 입점몰 정보 파라미터를 설정해 등록해야 합니다.
전달한 입점몰 정보는 현금영수증 전표에도 표시되어 고객이 해당 정보를 확인할 수 있습니다.
직접 판매 Request Body 예시
{
"site_cd": "T0000",
"kcp_cert_info": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----",
"pay_method": "CASH",
"user_type": "PGNW",
"trad_time": "20251231101030",
"tr_code": "0",
"id_info": "01012345678",
"amt_tot": "1000",
"amt_sup": "909",
"amt_tax": "91",
"ordr_idxx": "TEST123456789",
"good_name": "상품명",
"buyr_name": "홍길동",
"buyr_mail": "test@your-shop.example.com",
"corp_type": "0"
} 입점몰 판매 Request Body 예시
{
"site_cd": "T0000",
"kcp_cert_info": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----",
"pay_method": "CASH",
"user_type": "PGNW",
"trad_time": "20251231101030",
"tr_code": "0",
"id_info": "01012345678",
"amt_tot": "1000",
"amt_sup": "909",
"amt_tax": "91",
"ordr_idxx": "TEST123456789",
"good_name": "상품명",
"buyr_name": "홍길동",
"buyr_mail": "test@your-shop.example.com",
"corp_type": "1",
"corp_tax_type": "TG01",
"corp_tax_no": "1234567890",
"corp_sell_tax_no": "1234567890",
"corp_nm": "NHN KCP",
"corp_owner_nm": "홍길동",
"corp_addr": "서울시 구로구 디지털로26길 72",
"corp_telno": "02-0000-0000",
"corp_site_url": "www.kcp.co.kr"
} 요청 파라미터
소득공제용(개인)은 0, 지출증빙용(기업)은 1을 사용합니다.ex) tr_code: 0
입점몰 판매 시 아래 입점몰 정보 파라미터를 함께 전송합니다.ex) corp_type: 0
응답 정보
발급 응답의 cash_no와 receipt_no는 현금영수증 조회·취소 및 가맹점 거래 관리에 사용하므로 저장하세요.
발급 실패 시 res_cd와 res_msg 외의 응답 데이터는 리턴되지 않습니다.
Response Body 예시
{
"res_cd": "0000",
"res_msg": "정상처리",
"cash_no": "24834156556924",
"receipt_no": "591007373",
"app_time": "20251231114501",
"reg_stat": "NTRW",
"reg_desc": "KCP 등록 완료"
} 응답 파라미터
구현 참고사항
발급 요청 구현 포인트 보기
서비스 인증서는 파트너관리자 인증센터에서 내려받은 PEM 파일의 내용을 줄바꿈 없이 직렬화하여 kcp_cert_info에 입력합니다.
// 서비스 인증서 직렬화 예시 String kcpCertInfo = Files.readAllLines(certPath) .stream() .map(String::trim) .collect(Collectors.joining()); JSONObject body = new JSONObject(); body.put("site_cd", "T0000"); body.put("kcp_cert_info", kcpCertInfo); body.put("pay_method", "CASH"); body.put("user_type", "PGNW"); body.put("trad_time", "20251231101030"); body.put("tr_code", "0"); body.put("id_info", "01012345678"); body.put("amt_tot", "1000"); body.put("amt_sup", "909"); body.put("amt_tax", "91");
총 거래금액은 공급가액과 부가가치세의 합계와 일치해야 합니다. 반올림 기준과 면세 거래 처리는 가맹점의 세무 기준을 확인해 적용하세요.
서비스 인증서가 포함된 요청 데이터와 서버 통신 로그는 웹이나 클라이언트에 노출하지 말고 가맹점 서버 내부에서만 관리하세요.
현금영수증 등록 상태 코드
| 상태 코드 | 설명 |
|---|---|
| NTRW | KCP 등록 완료 |
| NTNW | 국세청 등록 대기 |
| NTNC | 국세청 등록 완료 |
| NTNE | 국세청 등록 오류 |
| NTNF | 국세청 거절 |