# 발행

## 1. RegistIssue - 즉시 발행

작성된 전자명세서 데이터를 팝빌에 저장과 동시에 발행하여, “발행완료” 상태로 처리합니다.

- 팝빌 사이트 \[ 전자명세서 > 관리 > 환경설정 ] 메뉴의 “발행시 자동승인” 옵션 설정을 통해 전자명세서를 “발행완료” 상태가 아닌 “승인대기” 상태로 발행 처리 할 수 있습니다.

```csharp
STMIssueResponse RegistIssue(string CorpNum, Statement statement, string Memo = null, string UserID = null, string EmailSubject = null)
```

> 전자명세서 즉시 발행 API 호출 시 포인트가 차감되며, 수신자에게 발행 안내 메일이 발송됩니다.

### 요청

**Parameters**

- CorpNum `type: string` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- statement `type: Statement` `length: -` `required: Y` `description: 전자명세서 정보`
  - itemCode `type: int?` `length: 3` `required: Y` `description: 전자명세서 문서 유형 (택 1)`
    - `121`: 거래명세서
    - `122`: 청구서
    - `123`: 견적서
    - `124`: 발주서
    - `125`: 입금표
    - `126`: 영수증
  - mgtKey `type: string` `length: 24` `required: Y` `description: 문서번호`
    - 전자명세서 관리를 위해 파트너가 할당하는 식별번호
    - 영문 대소문자, 숫자, 특수문자('-','\_')만 이용 가능
  - formCode `type: string` `length: 8` `required: N` `description: 맞춤양식 코드`
    - 기본값 : 팝빌에서 설정한 기본양식 사용
  - writeDate `type: string` `length: 8` `required: Y` `description: 작성일자`
    - 형식 : yyyyMMdd
  - taxType `type: string` `length: 2` `required: 조건부` `description: 과세형태 (택 1)`
    - `과세`
    - `영세`
    - `면세`
    - {itemCode}=121 경우 필수
  - purposeType `type: string` `length: 2` `required: Y` `description: 영수/청구 (택 1)`
    - `영수`
    - `청구`
    - `없음`
  - serialNum `type: string` `length: 30` `required: N` `description: 일련번호`
  - taxTotal `type: string` `length: 18` `required: Y` `description: 세액 합계`
    - 정수만 입력 가능
    - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
  - supplyCostTotal `type: string` `length: 18` `required: Y` `description: 공급가액 합계`
    - 정수만 입력 가능
    - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
  - totalAmount `type: string` `length: 18` `required: N` `description: 합계금액`
    - 정수만 입력 가능
    - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
  - remark1 `type: string` `length: 150` `required: N` `description: 비고 1`
  - remark2 `type: string` `length: 150` `required: N` `description: 비고 2`
  - remark3 `type: string` `length: 150` `required: N` `description: 비고 3`
  - senderCorpNum `type: string` `length: 10` `required: Y` `description: 발신자 사업자번호 ('-' 제외)`
  - senderTaxRegID `type: string` `length: 4` `required: N` `description: 발신자 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - senderCorpName `type: string` `length: 200` `required: N` `description: 발신자 상호`
  - senderCEOName `type: string` `length: 100` `required: N` `description: 발신자 대표자성명`
  - senderAddr `type: string` `length: 300` `required: N` `description: 발신자 주소`
  - senderBizType `type: string` `length: 100` `required: N` `description: 발신자 업태`
  - senderBizClass `type: string` `length: 100` `required: N` `description: 발신자 종목`
  - senderContactName `type: string` `length: 100` `required: N` `description: 발신자 성명`
  - senderDeptName `type: string` `length: 40` `required: N` `description: 발신자 부서명`
  - senderTEL `type: string` `length: 20` `required: N` `description: 발신자 연락처`
  - senderHP `type: string` `length: 20` `required: N` `description: 발신자 휴대전화`
  - senderEmail `type: string` `length: 100` `required: N` `description: 발신자 메일주소`
  - senderFAX `type: string` `length: 20` `required: N` `description: 발신자 팩스번호`
  - receiverCorpNum `type: string` `length: 10` `required: N` `description: 수신자 사업자번호 ('-' 제외)`
  - receiverTaxRegID `type: string` `length: 4` `required: N` `description: 수신자 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - receiverCorpName `type: string` `length: 200` `required: Y` `description: 수신자 상호`
  - receiverCEOName `type: string` `length: 100` `required: N` `description: 수신자 대표자성명`
  - receiverAddr `type: string` `length: 300` `required: N` `description: 수신자 주소`
  - receiverBizType `type: string` `length: 100` `required: N` `description: 수신자 업태`
  - receiverBizClass `type: string` `length: 100` `required: N` `description: 수신자 종목`
  - receiverContactName `type: string` `length: 100` `required: N` `description: 수신자 성명`
  - receiverDeptName `type: string` `length: 40` `required: N` `description: 수신자 부서명`
  - receiverTEL `type: string` `length: 20` `required: N` `description: 수신자 연락처`
  - receiverHP `type: string` `length: 20` `required: N` `description: 수신자 휴대전화`
  - receiverEmail `type: string` `length: 100` `required: N` `description: 수신자 메일주소`
  - receiverFAX `type: string` `length: 20` `required: N` `description: 수신자 팩스번호`
  - businessLicenseYN `type: bool` `length: -` `required: N` `description: 팝빌에 등록된 사업자등록증 첨부 여부`
    - `true`: 첨부
    - `false`: 미첨부 : 기본값
    - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/reference/statement/dotnetcore/api/etc#GetSealURL)을 이용하여 등록
  - bankBookYN `type: bool` `length: -` `required: N` `description: 팝빌에 등록된 통장사본 첨부 여부`
    - `true`: 첨부
    - `false`: 미첨부 : 기본값
    - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/reference/statement/dotnetcore/api/etc#GetSealURL)을 이용하여 등록
  - smssendYN `type: bool?` `length: -` `required: N` `description: 알림문자 전송 여부`
    - `true`: 전송
    - `false`: 미전송 : 기본값
    - 수신자 : 수신자 휴대폰번호 {receiverHP}
    - 문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - propertyBag `type: propertyBag` `length: -` `required: N` `description: 추가속성`
    - 전자명세서 종류별 추가할 속성을 "key", "value" 형식으로 값을 입력 [\[참고\] 기본양식 추가속성](https://developers.popbill.com/guide/statement/introduction/statement-form#propertybag-table)
  - detailList `type: List<StatementDetail>` `length: -` `required: N` `description: 거래 물품 상세정보`
    - 길이 제한 없음
    - serialNum `type: int?` `length: -` `required: Y` `description: 일련번호`
      - 1부터 순차적으로 입력
    - purchaseDT `type: string` `length: 8` `required: N` `description: 거래일자`
      - 형식 : yyyyMMdd
    - itemName `type: string` `length: 100` `required: N` `description: 품명`
    - spec `type: string` `length: 60` `required: N` `description: 규격`
    - qty `type: string` `length: 12` `required: N` `description: 수량`
      - 소수점 아래 2번째 자리까지 입력 가능
    - unitCost `type: string` `length: 18` `required: N` `description: 단가`
      - 소수점 아래 2번째 자리까지 입력 가능
      - 마이너스 금액 입력 가능
    - supplyCost `type: string` `length: 18` `required: N` `description: 공급가액`
      - 정수만 입력 가능
      - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
    - tax `type: string` `length: 18` `required: N` `description: 세액`
      - 정수만 입력 가능
      - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
    - remark `type: string` `length: 100` `required: N` `description: 비고`
    - spare1 `type: string` `length: 100` `required: N` `description: 여분1`
    - spare2 `type: string` `length: 100` `required: N` `description: 여분2`
    - spare3 `type: string` `length: 100` `required: N` `description: 여분3`
    - spare4 `type: string` `length: 100` `required: N` `description: 여분4`
    - spare5 `type: string` `length: 100` `required: N` `description: 여분5`
    - spare6 `type: string` `length: 100` `required: N` `description: 여분6`
    - spare7 `type: string` `length: 100` `required: N` `description: 여분7`
    - spare8 `type: string` `length: 100` `required: N` `description: 여분8`
    - spare9 `type: string` `length: 100` `required: N` `description: 여분9`
    - spare10 `type: string` `length: 100` `required: N` `description: 여분10`
    - spare11 `type: string` `length: 100` `required: N` `description: 여분11`
    - spare12 `type: string` `length: 100` `required: N` `description: 여분12`
    - spare13 `type: string` `length: 100` `required: N` `description: 여분13`
    - spare14 `type: string` `length: 100` `required: N` `description: 여분14`
    - spare15 `type: string` `length: 100` `required: N` `description: 여분15`
    - spare16 `type: string` `length: 100` `required: N` `description: 여분16`
    - spare17 `type: string` `length: 100` `required: N` `description: 여분17`
    - spare18 `type: string` `length: 100` `required: N` `description: 여분18`
    - spare19 `type: string` `length: 100` `required: N` `description: 여분19`
    - spare20 `type: string` `length: 100` `required: N` `description: 여분20`
- Memo `type: string` `length: 200` `required: N` `description: 전자명세서 상태 이력을 관리하기 위한 메모`
- UserID `type: string` `length: 50` `required: N` `description: 팝빌회원 아이디`
- EmailSubject `type: string` `length: 300` `required: N` `description: 전자명세서 발행 안내메일 제목`
  - 기본값 : 팝빌에서 설정한 안내메일 제목 사용

### 응답

**STMIssueResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: string` `length: -` `description: API 처리에 대한 응답메시지`
- invoiceNum `type: string` `length: 24` `description: 팝빌 승인번호`
  - 전자명세서 발행 시점에 팝빌에서 자동으로 할당

### 예외

**PopbillException**

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

## 2. Register - 임시저장

작성된 전자명세서 데이터를 팝빌에 저장합니다.

- “임시저장” 상태의 전자명세서는 [\[Issue - 발행\]](https://developers.popbill.com/reference/statement/dotnetcore/api/issue#Issue) 함수를 호출하여 “발행완료” 처리한 경우에만 수신자에게 발행 안내 메일이 발송됩니다.

```csharp
Response Register(string CorpNum, Statement statement, string UserID = null)
```

### 요청

**Parameters**

- CorpNum `type: string` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- statement `type: Statement` `length: -` `required: Y` `description: 전자명세서 정보`
  - itemCode `type: int?` `length: 3` `required: Y` `description: 전자명세서 문서 유형 (택 1)`
    - `121`: 거래명세서
    - `122`: 청구서
    - `123`: 견적서
    - `124`: 발주서
    - `125`: 입금표
    - `126`: 영수증
  - mgtKey `type: string` `length: 24` `required: Y` `description: 문서번호`
    - 전자명세서 관리를 위해 파트너가 할당하는 식별번호
    - 영문 대소문자, 숫자, 특수문자('-','\_')만 이용 가능
  - formCode `type: string` `length: 8` `required: N` `description: 맞춤양식 코드`
    - 기본값 : 팝빌에서 설정한 기본양식 사용
  - writeDate `type: string` `length: 8` `required: Y` `description: 작성일자`
    - 형식 : yyyyMMdd
  - taxType `type: string` `length: 2` `required: 조건부` `description: 과세형태 (택 1)`
    - `과세`
    - `영세`
    - `면세`
    - {itemCode}=121 경우 필수
  - purposeType `type: string` `length: 2` `required: Y` `description: 영수/청구 (택 1)`
    - `영수`
    - `청구`
    - `없음`
  - serialNum `type: string` `length: 30` `required: N` `description: 일련번호`
  - taxTotal `type: string` `length: 18` `required: Y` `description: 세액 합계`
    - 정수만 입력 가능
    - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
  - supplyCostTotal `type: string` `length: 18` `required: Y` `description: 공급가액 합계`
    - 정수만 입력 가능
    - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
  - totalAmount `type: string` `length: 18` `required: N` `description: 합계금액`
    - 정수만 입력 가능
    - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
  - remark1 `type: string` `length: 150` `required: N` `description: 비고 1`
  - remark2 `type: string` `length: 150` `required: N` `description: 비고 2`
  - remark3 `type: string` `length: 150` `required: N` `description: 비고 3`
  - senderCorpNum `type: string` `length: 10` `required: Y` `description: 발신자 사업자번호 ('-' 제외)`
  - senderTaxRegID `type: string` `length: 4` `required: N` `description: 발신자 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - senderCorpName `type: string` `length: 200` `required: N` `description: 발신자 상호`
  - senderCEOName `type: string` `length: 100` `required: N` `description: 발신자 대표자성명`
  - senderAddr `type: string` `length: 300` `required: N` `description: 발신자 주소`
  - senderBizType `type: string` `length: 100` `required: N` `description: 발신자 업태`
  - senderBizClass `type: string` `length: 100` `required: N` `description: 발신자 종목`
  - senderContactName `type: string` `length: 100` `required: N` `description: 발신자 성명`
  - senderDeptName `type: string` `length: 40` `required: N` `description: 발신자 부서명`
  - senderTEL `type: string` `length: 20` `required: N` `description: 발신자 연락처`
  - senderHP `type: string` `length: 20` `required: N` `description: 발신자 휴대전화`
  - senderEmail `type: string` `length: 100` `required: N` `description: 발신자 메일주소`
  - senderFAX `type: string` `length: 20` `required: N` `description: 발신자 팩스번호`
  - receiverCorpNum `type: string` `length: 10` `required: N` `description: 수신자 사업자번호 ('-' 제외)`
  - receiverTaxRegID `type: string` `length: 4` `required: N` `description: 수신자 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - receiverCorpName `type: string` `length: 200` `required: Y` `description: 수신자 상호`
  - receiverCEOName `type: string` `length: 100` `required: N` `description: 수신자 대표자성명`
  - receiverAddr `type: string` `length: 300` `required: N` `description: 수신자 주소`
  - receiverBizType `type: string` `length: 100` `required: N` `description: 수신자 업태`
  - receiverBizClass `type: string` `length: 100` `required: N` `description: 수신자 종목`
  - receiverContactName `type: string` `length: 100` `required: N` `description: 수신자 성명`
  - receiverDeptName `type: string` `length: 40` `required: N` `description: 수신자 부서명`
  - receiverTEL `type: string` `length: 20` `required: N` `description: 수신자 연락처`
  - receiverHP `type: string` `length: 20` `required: N` `description: 수신자 휴대전화`
  - receiverEmail `type: string` `length: 100` `required: N` `description: 수신자 메일주소`
  - receiverFAX `type: string` `length: 20` `required: N` `description: 수신자 팩스번호`
  - businessLicenseYN `type: bool` `length: -` `required: N` `description: 팝빌에 등록된 사업자등록증 첨부 여부`
    - `true`: 첨부
    - `false`: 미첨부 : 기본값
    - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/reference/statement/dotnetcore/api/etc#GetSealURL)을 이용하여 등록
  - bankBookYN `type: bool` `length: -` `required: N` `description: 팝빌에 등록된 통장사본 첨부 여부`
    - `true`: 첨부
    - `false`: 미첨부 : 기본값
    - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/reference/statement/dotnetcore/api/etc#GetSealURL)을 이용하여 등록
  - smssendYN `type: bool?` `length: -` `required: N` `description: 알림문자 전송 여부`
    - `true`: 전송
    - `false`: 미전송 : 기본값
    - 수신자 : 수신자 휴대폰번호 {receiverHP}
    - 문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - propertyBag `type: propertyBag` `length: -` `required: N` `description: 추가속성`
    - 전자명세서 종류별 추가할 속성을 "key", "value" 형식으로 값을 입력 [\[참고\] 기본양식 추가속성](https://developers.popbill.com/guide/statement/introduction/statement-form#propertybag-table)
  - detailList `type: List<StatementDetail>` `length: -` `required: N` `description: 거래 물품 상세정보`
    - 길이 제한 없음
    - serialNum `type: int?` `length: -` `required: Y` `description: 일련번호`
      - 1부터 순차적으로 입력
    - purchaseDT `type: string` `length: 8` `required: N` `description: 거래일자`
      - 형식 : yyyyMMdd
    - itemName `type: string` `length: 100` `required: N` `description: 품명`
    - spec `type: string` `length: 60` `required: N` `description: 규격`
    - qty `type: string` `length: 12` `required: N` `description: 수량`
      - 소수점 아래 2번째 자리까지 입력 가능
    - unitCost `type: string` `length: 18` `required: N` `description: 단가`
      - 소수점 아래 2번째 자리까지 입력 가능
      - 마이너스 금액 입력 가능
    - supplyCost `type: string` `length: 18` `required: N` `description: 공급가액`
      - 정수만 입력 가능
      - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
    - tax `type: string` `length: 18` `required: N` `description: 세액`
      - 정수만 입력 가능
      - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
    - remark `type: string` `length: 100` `required: N` `description: 비고`
    - spare1 `type: string` `length: 100` `required: N` `description: 여분1`
    - spare2 `type: string` `length: 100` `required: N` `description: 여분2`
    - spare3 `type: string` `length: 100` `required: N` `description: 여분3`
    - spare4 `type: string` `length: 100` `required: N` `description: 여분4`
    - spare5 `type: string` `length: 100` `required: N` `description: 여분5`
    - spare6 `type: string` `length: 100` `required: N` `description: 여분6`
    - spare7 `type: string` `length: 100` `required: N` `description: 여분7`
    - spare8 `type: string` `length: 100` `required: N` `description: 여분8`
    - spare9 `type: string` `length: 100` `required: N` `description: 여분9`
    - spare10 `type: string` `length: 100` `required: N` `description: 여분10`
    - spare11 `type: string` `length: 100` `required: N` `description: 여분11`
    - spare12 `type: string` `length: 100` `required: N` `description: 여분12`
    - spare13 `type: string` `length: 100` `required: N` `description: 여분13`
    - spare14 `type: string` `length: 100` `required: N` `description: 여분14`
    - spare15 `type: string` `length: 100` `required: N` `description: 여분15`
    - spare16 `type: string` `length: 100` `required: N` `description: 여분16`
    - spare17 `type: string` `length: 100` `required: N` `description: 여분17`
    - spare18 `type: string` `length: 100` `required: N` `description: 여분18`
    - spare19 `type: string` `length: 100` `required: N` `description: 여분19`
    - spare20 `type: string` `length: 100` `required: N` `description: 여분20`
- 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 처리 실패에 대한 오류메시지`

## 3. Update - 수정

“임시저장” 상태의 전자명세서를 수정합니다.

```csharp
Response Update(string CorpNum, int itemCode, string mgtKey, Statement statement, string UserID = null)
```

### 요청

**Parameters**

- CorpNum `type: string` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- itemCode `type: int` `length: 3` `required: Y` `description: 전자명세서 문서 유형 (택 1)`
  - `121`: 거래명세서
  - `122`: 청구서
  - `123`: 견적서
  - `124`: 발주서
  - `125`: 입금표
  - `126`: 영수증
- mgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`
- statement `type: Statement` `length: -` `required: Y` `description: 전자명세서 정보`
  - itemCode `type: int?` `length: 3` `required: Y` `description: 전자명세서 문서 유형 (택 1)`
    - `121`: 거래명세서
    - `122`: 청구서
    - `123`: 견적서
    - `124`: 발주서
    - `125`: 입금표
    - `126`: 영수증
  - mgtKey `type: string` `length: 24` `required: Y` `description: 문서번호`
    - 전자명세서 관리를 위해 파트너가 할당하는 식별번호
    - 영문 대소문자, 숫자, 특수문자('-','\_')만 이용 가능
  - formCode `type: string` `length: 8` `required: N` `description: 맞춤양식 코드`
    - 기본값 : 팝빌에서 설정한 기본양식 사용
  - writeDate `type: string` `length: 8` `required: Y` `description: 작성일자`
    - 형식 : yyyyMMdd
  - taxType `type: string` `length: 2` `required: 조건부` `description: 과세형태 (택 1)`
    - `과세`
    - `영세`
    - `면세`
    - {itemCode}=121 경우 필수
  - purposeType `type: string` `length: 2` `required: Y` `description: 영수/청구 (택 1)`
    - `영수`
    - `청구`
    - `없음`
  - serialNum `type: string` `length: 30` `required: N` `description: 일련번호`
  - taxTotal `type: string` `length: 18` `required: Y` `description: 세액 합계`
    - 정수만 입력 가능
    - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
  - supplyCostTotal `type: string` `length: 18` `required: Y` `description: 공급가액 합계`
    - 정수만 입력 가능
    - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
  - totalAmount `type: string` `length: 18` `required: N` `description: 합계금액`
    - 정수만 입력 가능
    - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
  - remark1 `type: string` `length: 150` `required: N` `description: 비고 1`
  - remark2 `type: string` `length: 150` `required: N` `description: 비고 2`
  - remark3 `type: string` `length: 150` `required: N` `description: 비고 3`
  - senderCorpNum `type: string` `length: 10` `required: Y` `description: 발신자 사업자번호 ('-' 제외)`
  - senderTaxRegID `type: string` `length: 4` `required: N` `description: 발신자 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - senderCorpName `type: string` `length: 200` `required: N` `description: 발신자 상호`
  - senderCEOName `type: string` `length: 100` `required: N` `description: 발신자 대표자성명`
  - senderAddr `type: string` `length: 300` `required: N` `description: 발신자 주소`
  - senderBizType `type: string` `length: 100` `required: N` `description: 발신자 업태`
  - senderBizClass `type: string` `length: 100` `required: N` `description: 발신자 종목`
  - senderContactName `type: string` `length: 100` `required: N` `description: 발신자 성명`
  - senderDeptName `type: string` `length: 40` `required: N` `description: 발신자 부서명`
  - senderTEL `type: string` `length: 20` `required: N` `description: 발신자 연락처`
  - senderHP `type: string` `length: 20` `required: N` `description: 발신자 휴대전화`
  - senderEmail `type: string` `length: 100` `required: N` `description: 발신자 메일주소`
  - senderFAX `type: string` `length: 20` `required: N` `description: 발신자 팩스번호`
  - receiverCorpNum `type: string` `length: 10` `required: N` `description: 수신자 사업자번호 ('-' 제외)`
  - receiverTaxRegID `type: string` `length: 4` `required: N` `description: 수신자 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - receiverCorpName `type: string` `length: 200` `required: Y` `description: 수신자 상호`
  - receiverCEOName `type: string` `length: 100` `required: N` `description: 수신자 대표자성명`
  - receiverAddr `type: string` `length: 300` `required: N` `description: 수신자 주소`
  - receiverBizType `type: string` `length: 100` `required: N` `description: 수신자 업태`
  - receiverBizClass `type: string` `length: 100` `required: N` `description: 수신자 종목`
  - receiverContactName `type: string` `length: 100` `required: N` `description: 수신자 성명`
  - receiverDeptName `type: string` `length: 40` `required: N` `description: 수신자 부서명`
  - receiverTEL `type: string` `length: 20` `required: N` `description: 수신자 연락처`
  - receiverHP `type: string` `length: 20` `required: N` `description: 수신자 휴대전화`
  - receiverEmail `type: string` `length: 100` `required: N` `description: 수신자 메일주소`
  - receiverFAX `type: string` `length: 20` `required: N` `description: 수신자 팩스번호`
  - businessLicenseYN `type: bool` `length: -` `required: N` `description: 팝빌에 등록된 사업자등록증 첨부 여부`
    - `true`: 첨부
    - `false`: 미첨부 : 기본값
    - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/reference/statement/dotnetcore/api/etc#GetSealURL)을 이용하여 등록
  - bankBookYN `type: bool` `length: -` `required: N` `description: 팝빌에 등록된 통장사본 첨부 여부`
    - `true`: 첨부
    - `false`: 미첨부 : 기본값
    - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/reference/statement/dotnetcore/api/etc#GetSealURL)을 이용하여 등록
  - smssendYN `type: bool?` `length: -` `required: N` `description: 알림문자 전송 여부`
    - `true`: 전송
    - `false`: 미전송 : 기본값
    - 수신자 : 수신자 휴대폰번호 {receiverHP}
    - 문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - propertyBag `type: propertyBag` `length: -` `required: N` `description: 추가속성`
    - 전자명세서 종류별 추가할 속성을 "key", "value" 형식으로 값을 입력 [\[참고\] 기본양식 추가속성](https://developers.popbill.com/guide/statement/introduction/statement-form#propertybag-table)
  - detailList `type: List<StatementDetail>` `length: -` `required: N` `description: 거래 물품 상세정보`
    - 길이 제한 없음
    - serialNum `type: int?` `length: -` `required: Y` `description: 일련번호`
      - 1부터 순차적으로 입력
    - purchaseDT `type: string` `length: 8` `required: N` `description: 거래일자`
      - 형식 : yyyyMMdd
    - itemName `type: string` `length: 100` `required: N` `description: 품명`
    - spec `type: string` `length: 60` `required: N` `description: 규격`
    - qty `type: string` `length: 12` `required: N` `description: 수량`
      - 소수점 아래 2번째 자리까지 입력 가능
    - unitCost `type: string` `length: 18` `required: N` `description: 단가`
      - 소수점 아래 2번째 자리까지 입력 가능
      - 마이너스 금액 입력 가능
    - supplyCost `type: string` `length: 18` `required: N` `description: 공급가액`
      - 정수만 입력 가능
      - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
    - tax `type: string` `length: 18` `required: N` `description: 세액`
      - 정수만 입력 가능
      - 마이너스 금액 입력 가능, 소수점 아래 자동 절사
    - remark `type: string` `length: 100` `required: N` `description: 비고`
    - spare1 `type: string` `length: 100` `required: N` `description: 여분1`
    - spare2 `type: string` `length: 100` `required: N` `description: 여분2`
    - spare3 `type: string` `length: 100` `required: N` `description: 여분3`
    - spare4 `type: string` `length: 100` `required: N` `description: 여분4`
    - spare5 `type: string` `length: 100` `required: N` `description: 여분5`
    - spare6 `type: string` `length: 100` `required: N` `description: 여분6`
    - spare7 `type: string` `length: 100` `required: N` `description: 여분7`
    - spare8 `type: string` `length: 100` `required: N` `description: 여분8`
    - spare9 `type: string` `length: 100` `required: N` `description: 여분9`
    - spare10 `type: string` `length: 100` `required: N` `description: 여분10`
    - spare11 `type: string` `length: 100` `required: N` `description: 여분11`
    - spare12 `type: string` `length: 100` `required: N` `description: 여분12`
    - spare13 `type: string` `length: 100` `required: N` `description: 여분13`
    - spare14 `type: string` `length: 100` `required: N` `description: 여분14`
    - spare15 `type: string` `length: 100` `required: N` `description: 여분15`
    - spare16 `type: string` `length: 100` `required: N` `description: 여분16`
    - spare17 `type: string` `length: 100` `required: N` `description: 여분17`
    - spare18 `type: string` `length: 100` `required: N` `description: 여분18`
    - spare19 `type: string` `length: 100` `required: N` `description: 여분19`
    - spare20 `type: string` `length: 100` `required: N` `description: 여분20`
- 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 처리 실패에 대한 오류메시지`

## 4. Issue - 발행

“임시저장” 상태의 전자명세서를 발행하여, “발행완료” 상태로 처리합니다.

- 팝빌 사이트 \[ 전자명세서 > 관리 > 환경설정 ] 메뉴의 “발행시 자동승인” 옵션 설정을 통해 전자명세서를 “발행완료” 상태가 아닌 “승인대기” 상태로 발행 처리 할 수 있습니다.

```csharp
Response Issue(string CorpNum, int itemCode, string mgtKey, string Memo = null, string UserID = null, string EmailSubject = null)
```

> 전자명세서 발행 API 호출 시 포인트가 차감되며, 수신자에게 발행 안내 메일이 발송됩니다.

### 요청

**Parameters**

- CorpNum `type: string` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- itemCode `type: int` `length: 3` `required: Y` `description: 전자명세서 문서 유형 (택 1)`
  - `121`: 거래명세서
  - `122`: 청구서
  - `123`: 견적서
  - `124`: 발주서
  - `125`: 입금표
  - `126`: 영수증
- mgtKey `type: string` `length: 24` `required: Y` `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: 전자명세서 발행 안내메일 제목`
  - 기본값 : 팝빌에서 설정한 안내메일 제목 사용

### 응답

**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 처리 실패에 대한 오류메시지`

## 5. Cancel - 발행취소

발신자가 발행한 전자명세서를 발행취소합니다.

- “발행취소” 상태의 전자명세서를 삭제하면, 전자명세서 관리를 위해 할당했던 문서번호를 재사용 할 수 있습니다.

```csharp
Response Cancel(string CorpNum, int itemCode, string mgtKey, string Memo = null, string UserID = null)
```

### 요청

**Parameters**

- CorpNum `type: string` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- itemCode `type: int` `length: 3` `required: Y` `description: 전자명세서 문서 유형 (택 1)`
  - `121`: 거래명세서
  - `122`: 청구서
  - `123`: 견적서
  - `124`: 발주서
  - `125`: 입금표
  - `126`: 영수증
- mgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`
- Memo `type: string` `length: 200` `required: N` `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 처리 실패에 대한 오류메시지`

## 6. Delete - 삭제

삭제 가능한 상태의 전자명세서를 삭제합니다.\
※ 삭제 가능한 상태: “임시저장”, “취소”, “승인거부”, “발행취소”

```csharp
Response Delete(string CorpNum, int itemCode, string mgtKey, string UserID = null)
```

### 요청

**Parameters**

- CorpNum `type: string` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- itemCode `type: int` `length: 3` `required: Y` `description: 전자명세서 문서 유형 (택 1)`
  - `121`: 거래명세서
  - `122`: 청구서
  - `123`: 견적서
  - `124`: 발주서
  - `125`: 입금표
  - `126`: 영수증
- 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 처리 실패에 대한 오류메시지`
