현금영수증

현금영수증 개요

현금결제 증빙을 자동·수동·별건으로 나눠서 이해해요.

현금영수증은 계좌이체·가상계좌·현금 같은 현금성 결제​​에 대해 발행하는 증빙이에요. 소비자는 연말정산 소득공제를, 사업자는 비용 지출 증빙을 받을 수 있어요. Bootpay는 결제 건에 현금영수증을 붙이거나, 결제와 무관하게 현금영수증만 단독으로 발행할 수 있어요.

발행 유형

발행 시 cash_receipt_type으로 용도를 지정해요.

유형 용도 식별번호(identity_no)
소득공제 소득공제 개인 소비자의 연말정산 소득공제 휴대폰번호 또는 주민등록번호
지출증빙 지출증빙 사업자의 비용 지출 증빙 사업자등록번호
값은 정확히 `지출증빙`이어야 해요

서버는 cash_receipt_type이 정확히 문자열 지출증빙일 때만 지출증빙으로 처리하고, 그 외의 모든 값(오타·영문·빈 값 포함)은 소득공제​​로 발행해요. 오타가 나도 오류가 나지 않으니 주의해요.

identity_no

identity_no는 현금영수증을 귀속시킬 대상을 식별하는 번호예요. 소득공제는 보통 휴대폰번호​, 지출증빙은 사업자등록번호​​를 사용해요.

세 가지 발행 방식

방식 언제 쓰나 API
결제 시 자동 발행 결제창에서 사용자가 현금영수증 정보를 입력하도록 둘 때. extra.display_cash_receipt는 기본값이 true라 아무것도 넣지 않아도 PG 입력창이 표시됨 결제 요청 파라미터
결제 건에 발행 이미 완료된 결제(receipt_id)에 현금영수증을 나중에 붙일 때 발행 — 결제 건에 발행
별건 발행 결제와 무관하게 현금영수증만 단독으로 발행할 때 (오프라인 현금 수령 등) 발행 — 별건 발행
결제창에서 자동 발행하는 경우

가상계좌·계좌이체 결제 시 PG의 현금영수증 입력창은 기본으로 표시돼요​. extra.display_cash_receipt의 기본값이 true라 값을 넣지 않아도 입력창이 뜨고, 표시하지 않으려면 extra.display_cash_receipt: false 를 보내요. 사용자가 입력창에서 정보를 넣으면 입금/결제 완료 시 PG가 자동으로 현금영수증을 발행하고, 이 경우 별도 발행 API 호출이 필요 없어요. 이 문서의 발행 API는 자동 발행을 쓰지 않거나, 결제 후/결제와 별개로 직접 발행​​해야 할 때 사용해요.

지원 PG

현금영수증 단독 발행은 PG사 지원 여부에 따라 달라요. 대표적으로 이니시스, 토스페이먼츠, 페이앱, 나이스페이먼츠​​에서 지원해요.

별건 발행 시 user(이름·전화번호·이메일)는 이니시스·페이앱·나이스페이먼츠​​에서 그대로 PG로 전달돼요. 서버가 user를 검증하지는 않기 때문에 빠뜨려도 부트페이 단계에서는 오류가 나지 않고, PG 응답 오류(RC_CASH_RECEIPT_FAILED)로 나타나요. 토스는 user를 사용하지 않아요.

상태값

status 의미
60 현금영수증발행완료
61 현금영수증발행취소
-60 현금영수증발행실패
-61 현금영수증취소실패
이 status는 별건 발행/취소 전용이에요

위 상태값은 별건 발행​​으로 새로 만들어진 영수증에만 붙어요. 결제 건에 발행하거나 그 발행분을 취소하는 경우에는 원 결제의 status가 그대로 유지​​돼요(결제완료면 계속 1). 그래서 결제 건의 현금영수증 발행 여부는 status가 아니라 bank_data(계좌이체)·vbank_data(가상계좌) 안의 cash_receipt_no 존재 여부​​로 판단해요. 취소되면 이 값이 지워져요.

다음 단계