# 발행

## 1. RegistIssue - 승인 현금영수증 발행

작성된 현금영수증 데이터를 팝빌에 저장과 동시에 발행하여 “발행완료” 상태로 처리합니다. [\[참고\] 팝빌 국세청 전송 정책](https://developers.popbill.com/guide/cashbill/introduction/policy-of-send-to-nts)

```csharp
CBIssueResponse RegistIssue(String CorpNum, Cashbill cashbill, String Memo, String UserID, String EmailSubject)
```

> 현금영수증 자진발급분은 소득공제 용도로만 발행 가능합니다. (자진발급 번호 : 010-000-1234)\
> 현금영수증 발행시 구매자 메일주소로 발행 안내 메일이 전송되니 유의하시기 바랍니다.

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- cashbill `type: Cashbill` `length: -` `required: Y` `description: 현금영수증 정보`
  - mgtKey `type: String` `length: 24` `required: Y` `description: 문서번호`
    - 문서 관리를 위해 파트너가 할당하는 식별번호
    - 영문 대소문자, 숫자, 특수문자('-','\_')만 이용 가능
  - orgConfirmNum `type: String` `length: 9` `required: 조건부` `description: 당초 국세청승인번호`
    - 취소 현금영수증 작성시 필수
  - orgTradeDate `type: String` `length: 8` `required: 조건부` `description: 당초 거래일자`
    - 취소 현금영수증 작성시 필수
  - tradeDT `type: String` `length: 14` `required: N` `description: 거래일시`
    - 전일부터 당일까지 입력 가능
    - 형식 : yyyyMMddHHmmss
    - 기본값 : 발행일시 사용
  - tradeType `type: String` `length: 4` `required: Y` `description: 문서형태 (택 1)`
    - `승인거래`
    - `취소거래`
  - tradeUsage `type: String` `length: -` `required: Y` `description: 거래구분 (택 1)`
    - `소득공제용`
    - `지출증빙용`
  - tradeOpt `type: String` `length: 4` `required: N` `description: 거래유형`
    - `일반`: 기본값
    - `도서공연`
    - `대중교통`
    - 도서공연 : 도서, 공연, 박물관, 미술관, 수영장, 체력단련장, 신문구독료(종이신문), 영화관람료
  - taxationType `type: String` `length: -` `required: Y` `description: 과세형태 (택 1)`
    - `과세`
    - `비과세`
  - totalAmount `type: String` `length: 9` `required: Y` `description: 거래금액 (공급가액+부가세+봉사료)`
    - 양수만 입력
  - supplyCost `type: String` `length: 9` `required: Y` `description: 공급가액`
    - 양수만 입력
  - tax `type: String` `length: 9` `required: Y` `description: 부가세`
    - 양수 또는 0 입력
  - serviceFee `type: String` `length: 9` `required: Y` `description: 봉사료`
    - 양수 또는 0 입력
  - franchiseCorpNum `type: String` `length: 10` `required: Y` `description: 가맹점 사업자번호`
    - 팝빌회원 사업자번호 ('-' 제외)
  - franchiseTaxRegID `type: String` `length: 4` `required: N` `description: 가맹점 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - franchiseCorpName `type: String` `length: 200` `required: N` `description: 가맹점 상호`
  - franchiseCEOName `type: String` `length: 100` `required: N` `description: 가맹점 대표자 성명`
  - franchiseAddr `type: String` `length: 400` `required: N` `description: 가맹점 주소`
  - franchiseTEL `type: String` `length: 20` `required: N` `description: 가맹점 전화번호`
  - identityNum `type: String` `length: 19` `required: Y` `description: 식별번호`
    - {tradeUsage} 값이 "소득공제용" 경우 주민등록/휴대폰/카드번호/자진발급용 번호(010-000-1234) 입력
    - {tradeUsage} 값이 "지출증빙용" 경우 사업자번호/휴대폰/카드번호 입력
    - 주민등록번호 13자리, 휴대폰번호 10\~11자리, 카드번호 13\~19자리, 사업자번호 10자리 입력 가능
  - customerName `type: String` `length: 70` `required: N` `description: 구매자(고객) 성명`
  - itemName `type: String` `length: 70` `required: N` `description: 주문 상품명`
  - orderNumber `type: String` `length: 200` `required: N` `description: 주문번호`
  - email `type: String` `length: 100` `required: N` `description: 구매자(고객) 메일`
  - hp `type: String` `length: 20` `required: N` `description: 구매자(고객) 휴대폰`
  - smssendYN `type: bool?` `length: -` `required: N` `description: 구매자 알림문자 전송 여부`
    - `true`: 전송
    - `false`: 미전송 : 기본값
    - 수신자 : 구매자 휴대폰번호 {hp}
    - 문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - cancelType `type: int` `length: 1` `required: N` `description: 취소사유`
    - `1`: 거래취소 : 기본값
    - `2`: 오류발급취소
    - `3`: 기타
    - {tradeType}="취소거래" 경우 입력
  - memo `type: String` `length: 200` `required: N` `description: 현금영수증 상태 이력을 관리하기 위한 메모`
    - 대량(Bulk)발행 경우 사용
  - emailSubject `type: String` `length: 300` `required: N` `description: 현금영수증 발행 안내메일 제목`
    - 기본값 : 팝빌에서 설정한 안내메일 제목
- Memo `type: String` `length: 200` `required: N` `description: 현금영수증 상태 이력을 관리하기 위한 메모`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`
- EmailSubject `type: String` `length: 300` `required: N` `description: 현금영수증 발행 안내메일 제목`
  - 기본값 : 팝빌에서 설정한 안내메일 제목 사용

### 응답

**CBIssueResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- confirmNum `type: String` `length: 9` `description: 국세청승인번호`
  - 현금영수증 발행 시점에 팝빌에서 자동으로 할당
- tradeDate `type: String` `length: 8` `description: 거래일자`
  - 현금영수증 발행 시점에 팝빌에서 자동으로 할당
  - 형식 : yyyyMMdd

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- Message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 2. RevokeRegistIssue - 취소 현금영수증 발행

당초 승인 현금영수증의 취소거래 발행 API 입니다.

- 작성된 취소 현금영수증 데이터를 팝빌에 저장과 동시에 발행하여 “발행완료” 상태로 처리합니다. [\[참고\] 팝빌 국세청 전송 정책](https://developers.popbill.com/guide/cashbill/introduction/policy-of-send-to-nts)
- 부분 취소 현금영수증을 발행하는 경우 `IsPartCancel` 값을 true 로 설정하여 주시기 바랍니다.
- 당초 국세청승인번호와 거래일자는 [\[GetInfo – 상태확인\]](https://developers.popbill.com/reference/cashbill/dotnet/api/info#GetInfo)함수를 통해 확인 가능합니다.

```csharp
CBIssueResponse RevokeRegistIssue(String CorpNum, String mgtKey, String orgConfirmNum, String orgTradeDate, Boolean smssendYN, String memo, String UserID, Boolean isPartCancel, int? cancelType, String supplyCost, String tax, String serviceFee, String totalAmount, String emailSubject, String tradeDT)
```

> **유의사항**\
> 당초 승인 현금영수증의 거래일시보다 과거의 거래일시를 입력할 수 없습니다.\
> 취소 현금영수증의 거래금액의 합은 당초 승인 현금영수증의 거래금액을 넘을 수 없습니다.\
> 취소 현금영수증 발행시 구매자 메일주소로 발행 안내 메일이 전송되니 유의하시기 바랍니다.

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- mgtKey `type: String` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`
  - 영문 대소문자, 숫자, 특수문자('-','\_')만 이용 가능
- orgConfirmNum `type: String` `length: 9` `required: Y` `description: 당초 국세청승인번호`
  - CashbillInfo의 변수 'confirmNum' 통해 내용 확인 가능
- orgTradeDate `type: String` `length: 8` `required: Y` `description: 당초 거래일자`
  - CashbillInfo의 변수 'tradeDate'를 통해 내용 확인 가능
  - 형식 : yyyyMMdd
- smssendYN `type: Boolean` `length: -` `required: N` `description: 현금영수증 발행시 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 당초 승인 현금영수증의 구매자(고객)의 휴대폰번호 문자 전송
- memo `type: String` `length: 200` `required: N` `description: 현금영수증 상태 이력을 관리하기 위한 메모`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`
- isPartCancel `type: Boolean` `length: -` `required: N` `description: 현금영수증 취소유형`
  - `true`: 부분 취소
  - `false`: 전체 취소 : 기본값
- cancelType `type: int?` `length: 1` `required: N` `description: 현금영수증 취소사유`
  - `1`: 거래취소 : 기본값
  - `2`: 오류발급취소
  - `3`: 기타
- supplyCost `type: String` `length: 9` `required: 조건부` `description: 부분 취소 공급가액`
  - 양수만 입력
  - {isPartCancel}=true 경우 필수
- tax `type: String` `length: 9` `required: 조건부` `description: 부분 취소 부가세`
  - 양수 또는 0 입력
  - {isPartCancel}=true 경우 필수
- serviceFee `type: String` `length: 9` `required: 조건부` `description: 부분 취소 봉사료`
  - 양수 또는 0 입력
  - {isPartCancel}=true 경우 필수
- totalAmount `type: String` `length: 9` `required: 조건부` `description: 부분 취소 거래금액`
  - 양수만 입력
  - 거래금액 = 공급가액 + 부가세 + 봉사료
  - {isPartCancel}=true 경우 필수
- emailSubject `type: String` `length: 300` `required: N` `description: 현금영수증 발행 안내메일 제목`
  - 기본값 : 팝빌에서 설정한 안내메일 제목 사용
- tradeDT `type: String` `length: 14` `required: N` `description: 거래일시`
  - 전일부터 당일까지 입력 가능
  - 형식 : yyyyMMddHHmmss
  - 기본값 : 발행일시 사용

### 응답

**CBIssueResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- confirmNum `type: String` `length: 9` `description: 국세청승인번호`
  - 현금영수증 발행 시점에 팝빌에서 자동으로 할당
- tradeDate `type: String` `length: 8` `description: 거래일자`
  - 현금영수증 발행 시점에 팝빌에서 자동으로 할당
  - 형식 : yyyyMMdd

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- Message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 3. BulkSubmit - 초대량 발행 접수

최대 100건의 현금영수증 발행을 한번의 요청으로 접수합니다.

```csharp
BulkResponse BulkSubmit(String CorpNum, String SubmitID, List<Cashbill> cashbillList, String UserID)
```

> 현금영수증 자진발급분은 소득공제 용도로만 발행 가능합니다. (자진발급 번호 : 010-000-1234)\
> 현금영수증 발행시 구매자 메일주소로 발행 안내 메일이 전송되니 유의하시기 바랍니다.

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- SubmitID `type: String` `length: 36` `required: Y` `description: 제출아이디`
  - 영문, 숫자, '-' 조합으로 구성
- cashbillList `type: List<Cashbill>` `length: 100` `required: Y` `description: 현금영수증 목록`
  - 최대 : 100건
  - mgtKey `type: String` `length: 24` `required: Y` `description: 문서번호`
    - 문서 관리를 위해 파트너가 할당하는 식별번호
    - 영문 대소문자, 숫자, 특수문자('-','\_')만 이용 가능
  - orgConfirmNum `type: String` `length: 9` `required: 조건부` `description: 당초 국세청승인번호`
    - 취소 현금영수증 작성시 필수
  - orgTradeDate `type: String` `length: 8` `required: 조건부` `description: 당초 거래일자`
    - 취소 현금영수증 작성시 필수
  - tradeDT `type: String` `length: 14` `required: N` `description: 거래일시`
    - 전일부터 당일까지 입력 가능
    - 형식 : yyyyMMddHHmmss
    - 기본값 : 발행일시 사용
  - tradeType `type: String` `length: 4` `required: Y` `description: 문서형태 (택 1)`
    - `승인거래`
    - `취소거래`
  - tradeUsage `type: String` `length: -` `required: Y` `description: 거래구분 (택 1)`
    - `소득공제용`
    - `지출증빙용`
  - tradeOpt `type: String` `length: 4` `required: N` `description: 거래유형`
    - `일반`: 기본값
    - `도서공연`
    - `대중교통`
    - 도서공연 : 도서, 공연, 박물관, 미술관, 수영장, 체력단련장, 신문구독료(종이신문), 영화관람료
  - taxationType `type: String` `length: -` `required: Y` `description: 과세형태 (택 1)`
    - `과세`
    - `비과세`
  - totalAmount `type: String` `length: 9` `required: Y` `description: 거래금액 (공급가액+부가세+봉사료)`
    - 양수만 입력
  - supplyCost `type: String` `length: 9` `required: Y` `description: 공급가액`
    - 양수만 입력
  - tax `type: String` `length: 9` `required: Y` `description: 부가세`
    - 양수 또는 0 입력
  - serviceFee `type: String` `length: 9` `required: Y` `description: 봉사료`
    - 양수 또는 0 입력
  - franchiseCorpNum `type: String` `length: 10` `required: Y` `description: 가맹점 사업자번호`
    - 팝빌회원 사업자번호 ('-' 제외)
  - franchiseTaxRegID `type: String` `length: 4` `required: N` `description: 가맹점 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - franchiseCorpName `type: String` `length: 200` `required: N` `description: 가맹점 상호`
  - franchiseCEOName `type: String` `length: 100` `required: N` `description: 가맹점 대표자 성명`
  - franchiseAddr `type: String` `length: 400` `required: N` `description: 가맹점 주소`
  - franchiseTEL `type: String` `length: 20` `required: N` `description: 가맹점 전화번호`
  - identityNum `type: String` `length: 19` `required: Y` `description: 식별번호`
    - {tradeUsage} 값이 "소득공제용" 경우 주민등록/휴대폰/카드번호/자진발급용 번호(010-000-1234) 입력
    - {tradeUsage} 값이 "지출증빙용" 경우 사업자번호/휴대폰/카드번호 입력
    - 주민등록번호 13자리, 휴대폰번호 10\~11자리, 카드번호 13\~19자리, 사업자번호 10자리 입력 가능
  - customerName `type: String` `length: 70` `required: N` `description: 구매자(고객) 성명`
  - itemName `type: String` `length: 70` `required: N` `description: 주문 상품명`
  - orderNumber `type: String` `length: 200` `required: N` `description: 주문번호`
  - email `type: String` `length: 100` `required: N` `description: 구매자(고객) 메일`
  - hp `type: String` `length: 20` `required: N` `description: 구매자(고객) 휴대폰`
  - smssendYN `type: bool?` `length: -` `required: N` `description: 구매자 알림문자 전송 여부`
    - `true`: 전송
    - `false`: 미전송 : 기본값
    - 수신자 : 구매자 휴대폰번호 {hp}
    - 문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - cancelType `type: int` `length: 1` `required: N` `description: 취소사유`
    - `1`: 거래취소 : 기본값
    - `2`: 오류발급취소
    - `3`: 기타
    - {tradeType}="취소거래" 경우 입력
  - memo `type: String` `length: 200` `required: N` `description: 현금영수증 상태 이력을 관리하기 위한 메모`
    - 대량(Bulk)발행 경우 사용
  - emailSubject `type: String` `length: 300` `required: N` `description: 현금영수증 발행 안내메일 제목`
    - 기본값 : 팝빌에서 설정한 안내메일 제목
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**BulkResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- receiptID `type: String` `length: 36` `description: 접수아이디`
  - 접수 시점에 팝빌에서 자동으로 할당

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- Message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 4. GetBulkResult - 초대량 접수결과 확인

접수시 기재한 SubmitID를 사용하여 현금영수증 접수결과를 확인합니다.

- 개별 현금영수증 처리상태는 접수상태(txState)가 완료(2) 시 반환됩니다.

```csharp
BulkCashbillResult GetBulkResult(String CorpNum, String SubmitID, String UserID)
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- SubmitID `type: String` `length: 36` `required: Y` `description: 파트너가 할당한 제출아이디`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**BulkCashbillResult**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- submitID `type: String` `length: 36` `description: 접수 시점에 고객사에서 할당한 제출아이디`
- submitCount `type: long` `length: -` `description: 현금영수증 접수 건수`
- successCount `type: long` `length: -` `description: 현금영수증 발행 성공 건수`
- failCount `type: long` `length: -` `description: 현금영수증 발행 실패 건수`
- txState `type: long` `length: 1` `description: 접수상태`
  - `0`: 접수
  - `1`: 처리중
  - `2`: 처리완료
- txResultCode `type: long` `length: -` `description: 접수 결과코드`
  - 성공 : 1
  - 실패 : 음의 정수 8자리 숫자값
  - [\[참고\] 오류코드](https://developers.popbill.com/error-code "_blank")
- txStartDT `type: String` `length: 14` `description: 발행처리 시작일시`
  - 형식 : yyyyMMddHHmmss
- txEndDT `type: String` `length: 14` `description: 발행처리 완료일시`
  - 형식 : yyyyMMddHHmmss
- receiptDT `type: String` `length: 14` `description: 접수일시`
  - 형식 : yyyyMMddHHmmss
- receiptID `type: String` `length: 36` `description: 접수아이디`
  - 접수 시점에 팝빌에서 자동으로 할당
- issueResult `type: List<BulkCashbillIssueResult>` `length: -` `description: 발행결과`
  - code `type: long` `length: -` `description: API 처리에 대한 응답코드`
    - `1`: 성공
  - message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
  - mgtKey `type: String` `length: 24` `description: 문서번호`
  - confirmNum `type: String` `length: 9` `description: 국세청승인번호`
    - 현금영수증 발행 시점에 팝빌에서 자동으로 할당
  - tradeDate `type: String` `length: 8` `description: 거래일자`
    - 현금영수증 발행 시점에 팝빌에서 자동으로 할당
    - 형식 : yyyyMMdd
  - issueDT `type: String` `length: 14` `description: 발행일시`
    - 형식 : yyyyMMddHHmmss

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- Message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 5. Delete - 삭제

삭제 가능한 상태의 현금영수증을 삭제합니다.\
※ 삭제 가능한 상태: “전송실패”

```csharp
Response Delete(String CorpNum, String MgtKey, String UserID)
```

> 삭제 처리된 현금영수증의 문서번호는 재사용이 가능합니다.

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- MgtKey `type: String` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**Response**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- Message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`
