# 발행/전송

## 1. RegistIssue - 즉시 발행

| HTTP Method | 테스트(Sandbox)                                    | 운영(Production)                             |
| ----------- | ----------------------------------------------- | ------------------------------------------ |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice> | <https://popbill.linkhub.co.kr/Taxinvoice> |

- 작성된 세금계산서 데이터를 팝빌에 저장과 동시에 발행(전자서명)하여 “발행완료” 상태로 처리합니다. [\[참고\] 팝빌 국세청 전송 정책](https://developers.popbill.com/guide/taxinvoice/introduction/policy-of-send-to-nts)
- “발행완료”된 전자세금계산서는 국세청 전송 이전에 [\[CancelIssue – 발행취소\]](#CancelIssue) API로 국세청 신고 대상에서 제외할 수 있습니다.\
  ※ [\[Register - 임시저장\]](#Register)과 [\[Issue - 발행\]](#Issue) API 기능을 한 번의 프로세스로 처리합니다.

> 세금계산서 발행을 위해서 공급자의 인증서가 팝빌 인증서버에 사전등록 되어야 합니다.\
> ※ 위수탁의 경우, 수탁자의 인증서 등록이 필요합니다.\
> 세금계산서 발행시 포인트가 과금되며, 공급받는자에게 발행 메일이 발송됩니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `ISSUE`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**요청 본문**

- issueType `type: string` `length: 3` `required: Y` `description: 발행형태 (택 1)`
  - `정발행`
  - `위수탁`
- taxType `type: string` `length: 2` `required: Y` `description: 과세형태 (택 1)`
  - `과세`
  - `영세`
  - `면세`
- chargeDirection `type: string` `length: 3` `required: Y` `description: 과금방향`
  - `정과금`: 공급자 과금
- serialNum `type: string` `length: 30` `required: N` `description: 일련번호`
- kwon `type: number` `length: 4` `required: N` `description: 책번호 "권" 항목`
  - 정수만 입력 가능
- ho `type: number` `length: 4` `required: N` `description: 책번호 "호" 항목`
  - 정수만 입력 가능
- writeDate `type: string` `length: 8` `required: Y` `description: 작성일자`
  - 형식 : yyyyMMdd
- purposeType `type: string` `length: 2` `required: Y` `description: 영수/청구`
  - `영수`
  - `청구`
  - `없음`
- supplyCostTotal `type: string` `length: 18` `required: Y` `description: 공급가액 합계`
  - 정수만 입력 가능(소수점 자동 절사)
- taxTotal `type: string` `length: 18` `required: Y` `description: 세액 합계`
  - 정수만 입력 가능(소수점 자동 절사)
- totalAmount `type: string` `length: 18` `required: Y` `description: 합계금액`
  - 정수만 입력 가능(소수점 자동 절사)
- cash `type: string` `length: 18` `required: N` `description: 현금`
- chkBill `type: string` `length: 18` `required: N` `description: 수표`
- credit `type: string` `length: 18` `required: N` `description: 외상`
- note `type: string` `length: 18` `required: N` `description: 어음`
- remark1 `type: string` `length: 150` `required: 조건부` `description: 비고1`
  - {invoiceeType}="외국인" 경우\
    외국인등록번호 또는 여권번호 필수 입력
- remark2 `type: string` `length: 150` `required: N` `description: 비고2`
- remark3 `type: string` `length: 150` `required: N` `description: 비고3`
- invoicerMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호
  - 영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="정발행" 경우 필수
- invoicerCorpNum `type: string` `length: 10` `required: Y` `description: 공급자 사업자번호 ('-' 제외)`
- invoicerTaxRegID `type: string` `length: 4` `required: N` `description: 공급자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- invoicerCorpName `type: string` `length: 200` `required: Y` `description: 공급자 상호`
- invoicerCEOName `type: string` `length: 100` `required: Y` `description: 공급자 대표자 성명`
- invoicerAddr `type: string` `length: 300` `required: N` `description: 공급자 주소`
- invoicerBizType `type: string` `length: 100` `required: N` `description: 공급자 업태`
- invoicerBizClass `type: string` `length: 100` `required: N` `description: 공급자 종목`
- invoicerContactName `type: string` `length: 100` `required: N` `description: 공급자 담당자 성명`
- invoicerDeptName `type: string` `length: 100` `required: N` `description: 공급자 담당자 부서명`
- invoicerTEL `type: string` `length: 20` `required: N` `description: 공급자 담당자 연락처`
- invoicerHP `type: string` `length: 20` `required: N` `description: 공급자 담당자 휴대폰`
- invoicerEmail `type: string` `length: 100` `required: N` `description: 공급자 담당자 메일`
- invoicerSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="정발행" 경우\
    세금계산서 발행시점에 알림문자 전송
- invoiceeMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급받는자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
- invoiceeType `type: string` `length: -` `required: N` `description: 공급받는자 유형 (택 1)`
  - `사업자`
  - `개인`
  - `외국인`
- invoiceeCorpNum `type: string` `length: 13` `required: Y` `description: 공급받는자 등록번호 ('-' 제외)`
  - {invoiceeType}="사업자" 경우 사업자번호
  - {invoiceeType}="개인" 경우 주민등록번호
  - {invoiceeType}="외국인" 경우 "9999999999999"
- invoiceeTaxRegID `type: string` `length: 4` `required: N` `description: 공급받는자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- invoiceeCorpName `type: string` `length: 200` `required: Y` `description: 공급받는자 상호`
- invoiceeCEOName `type: string` `length: 100` `required: Y` `description: 공급받는자 대표자 성명`
- invoiceeAddr `type: string` `length: 300` `required: N` `description: 공급받는자 주소`
- invoiceeBizType `type: string` `length: 100` `required: N` `description: 공급받는자 업태`
- invoiceeBizClass `type: string` `length: 100` `required: N` `description: 공급받는자 종목`
- invoiceeContactName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 성명`
- invoiceeDeptName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 부서명`
- invoiceeTEL1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 연락처`
- invoiceeHP1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 휴대폰`
- invoiceeEmail1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 메일`
- invoiceeSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급받는자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급자 휴대폰번호 {invoicerHP}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
- trusteeMgtKey `type: string` `length: 24` `required: 조건부` `description: 수탁자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="위수탁" 경우 필수
- trusteeCorpNum `type: string` `length: 10` `required: 조건부` `description: 수탁자 사업자번호 ('-' 제외)`
  - {issueType}="위수탁" 경우 필수
- trusteeTaxRegID `type: string` `length: 4` `required: N` `description: 수탁자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- trusteeCorpName `type: string` `length: 200` `required: 조건부` `description: 수탁자 상호`
  - {issueType}="위수탁" 경우 필수
- trusteeCEOName `type: string` `length: 100` `required: 조건부` `description: 수탁자 대표자 성명`
  - {issueType}="위수탁" 경우 필수
- trusteeAddr `type: string` `length: 300` `required: N` `description: 수탁자 주소`
- trusteeBizType `type: string` `length: 100` `required: N` `description: 수탁자 업태`
- trusteeBizClass `type: string` `length: 100` `required: N` `description: 수탁자 종목`
- trusteeContactName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 성명`
- trusteeDeptName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 부서명`
- trusteeTEL `type: string` `length: 20` `required: N` `description: 수탁자 담당자 연락처`
- trusteeHP `type: string` `length: 20` `required: N` `description: 수탁자 담당자 휴대폰`
- trusteeEmail `type: string` `length: 100` `required: N` `description: 수탁자 담당자 메일`
- trusteeSMSSendYN `type: boolean` `length: -` `required: N` `description: 수탁자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="위수탁" 경우\
    세금계산서 발행시점에 알림문자 전송
- modifyCode `type: number` `length: 1` `required: 조건부` `description: 수정 사유코드`
  - 수정세금계산서 작성시 필수 [\[참고\] 수정세금계산서](https://developers.popbill.com/guide/taxinvoice/introduction/modified-taxinvoice "_blank")
- orgNTSConfirmNum `type: string` `length: 24` `required: 조건부` `description: 당초 국세청승인번호`
  - 수정세금계산서 작성시 필수
- businessLicenseYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 사업자등록증 첨부 여부`
  - `true`: 첨부
  - `false`: 미첨부 : 기본값
  - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
- bankBookYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 통장사본 첨부 여부`
  - `true`: 첨부
  - `false`: 미첨부 : 기본값
  - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
- detailList `type: array` `length: -` `required: N` `description: 품목 상세정보`
  - 최대 : 99개
  - serialNum `type: number` `length: 2` `required: Y` `description: 일련번호`
  - 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: 수량`
    - -99999999.99 \~ 999999999.99\
      소수점 아래 2번째 자리까지 입력 가능
  - unitCost `type: string` `length: 18` `required: N` `description: 단가`
    - -99999999999999.99 \~ 999999999999999.99\
      소수점 아래 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: 비고`
- addContactList `type: array` `length: -` `required: N` `description: 공급받는자 추가담당자 정보`
  - 여러 담당자에게 발행 안내 메일을 보내야할 경우 사용\
    최대 : 5명
  - serialNum `type: number` `length: 1` `required: Y` `description: 일련번호`
  - contactName `type: string` `length: 100` `required: N` `description: 담당자 성명`
  - email `type: string` `length: 100` `required: Y` `description: 메일`
- memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`
- emailSubject `type: string` `length: 300` `required: N` `description: 세금계산서 발행 안내메일 제목`
  - 기본값 : 팝빌에서 설정한 안내메일 제목
- writeSpecification `type: boolean` `length: -` `required: N` `description: 거래명세서 동시작성 여부`
  - `true`: 사용
  - `false`: 미사용 : 기본값
  - 공급받는자 유형 {invoiceeType}="사업자" 경우만 가능
- forceIssue `type: boolean` `length: -` `required: N` `description: 지연발행 가능여부`
  - `true`: 가능
  - `false`: 불가능 : 기본값
- dealInvoiceKey `type: string` `length: 24` `required: N` `description: 거래명세서 문서번호`
  - 기본값 : 세금계산서 문서번호와 동일하게 할당
  - {writeSpecification}=true 경우 할당

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --header 'X-HTTP-Method-Override: ISSUE' \
  --data '{
    "issueType": "정발행",
    "taxType": "과세",
    "chargeDirection": "정과금",
    "writeDate": "20251117",
    "purposeType": "영수",
    "supplyCostTotal": "10000",
    "taxTotal": "1000",
    "totalAmount": "11000",
    "invoicerMgtKey": "TEST202511170900000",
    "invoicerCorpNum": "1234567890",
    "invoicerCorpName": "공급자 상호",
    "invoicerCEOName": "공급자 대표자 성명",
    "invoiceeType": "사업자",
    "invoiceeCorpNum": "1234567890",
    "invoiceeCorpName": "공급받는자 상호",
    "invoiceeCEOName": "공급받는자 대표자 성명",
    "detailList": [
        {
            "serialNum": 1,
            "purchaseDT": "20251117",
            "itemName": "품명",
            "spec": "규격",
            "qty": "1",
            "unitCost": "10000",
            "supplyCost": "10000",
            "tax": "1000",
            "remark": "비고"
        }
    ],
    "addContactList": [
        {
            "serialNum": 1,
            "contactName": "담당자 성명",
            "email": "test@test.com"
        }
    ]
}'
```

### Response

**응답 본문**

- code `type: number` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: string` `length: -` `description: API 처리에 대한 응답메시지`
- ntsConfirmNum `type: string` `length: 24` `description: 국세청승인번호`
  - 전자세금계산서 발행 시점에 팝빌에서 자동으로 할당
- issueDT `type: string` `length: 14` `description: 발행일시`
  - 형식 : yyyyMMddHHmmss

**응답 예시**

```json
{
  "code": 1,
  "message": "발행 완료",
  "ntsConfirmNum": "202510168888888800000023",
  "issueDT": "20251016151123"
}
```

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

| HTTP Method | 테스트(Sandbox)                                    | 운영(Production)                             |
| ----------- | ----------------------------------------------- | ------------------------------------------ |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice> | <https://popbill.linkhub.co.kr/Taxinvoice> |

- 최대 100건의 세금계산서 발행을 한번의 요청으로 접수합니다.

> 세금계산서 발행을 위해서 공급자의 인증서가 팝빌 인증서버에 사전등록 되어야 합니다.\
> ※ 위수탁의 경우, 수탁자의 인증서 등록이 필요합니다.\
> 세금계산서 발행시 포인트가 과금되며, 공급받는자에게 발행 메일이 발송됩니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `BULKISSUE`
- X-PB-Message-Digest `required: Y` `description: Message Digest`
  - 요청 본문의 무결성을 검증하는데 사용
  - [\[참고\] X-PB-Message-Digest](https://developers.popbill.com/api-reference/taxinvoice/getting-started/etc-header#x-pb-message-digest)
- X-PB-Submit-ID `required: Y` `description: 제출아이디`
  - 영문, 숫자, '-' 조합으로 최대 36자 길이로 구성
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**요청 본문**

- invoices `type: array` `length: -` `required: Y` `description: 전자세금계산서 목록`
  - 최대 : 100건
  - issueType `type: string` `length: 3` `required: Y` `description: 발행형태 (택 1)`
    - `정발행`
    - `역발행`
    - `위수탁`
  - taxType `type: string` `length: 2` `required: Y` `description: 과세형태 (택 1)`
    - `과세`
    - `영세`
    - `면세`
  - chargeDirection `type: string` `length: 3` `required: Y` `description: 과금방향`
    - `정과금`: 공급자 과금
  - serialNum `type: string` `length: 30` `required: N` `description: 일련번호`
  - kwon `type: number` `length: 4` `required: N` `description: 책번호 "권" 항목`
    - 정수만 입력 가능
  - ho `type: number` `length: 4` `required: N` `description: 책번호 "호" 항목`
    - 정수만 입력 가능
  - writeDate `type: string` `length: 8` `required: Y` `description: 작성일자`
    - 형식 : yyyyMMdd
  - purposeType `type: string` `length: 2` `required: Y` `description: 영수/청구`
    - `영수`
    - `청구`
    - `없음`
  - supplyCostTotal `type: string` `length: 18` `required: Y` `description: 공급가액 합계`
    - 정수만 입력 가능(소수점 자동 절사)
  - taxTotal `type: string` `length: 18` `required: Y` `description: 세액 합계`
    - 정수만 입력 가능(소수점 자동 절사)
  - totalAmount `type: string` `length: 18` `required: Y` `description: 합계금액`
    - 정수만 입력 가능(소수점 자동 절사)
  - cash `type: string` `length: 18` `required: N` `description: 현금`
  - chkBill `type: string` `length: 18` `required: N` `description: 수표`
  - credit `type: string` `length: 18` `required: N` `description: 외상`
  - note `type: string` `length: 18` `required: N` `description: 어음`
  - remark1 `type: string` `length: 150` `required: 조건부` `description: 비고1`
    - {invoiceeType}="외국인" 경우\
      외국인등록번호 또는 여권번호 필수 입력
  - remark2 `type: string` `length: 150` `required: N` `description: 비고2`
  - remark3 `type: string` `length: 150` `required: N` `description: 비고3`
  - invoicerMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급자 문서번호`
    - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
      영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
    - {issueType}="정발행" 경우 필수
  - invoicerCorpNum `type: string` `length: 10` `required: Y` `description: 공급자 사업자번호 ('-' 제외)`
  - invoicerTaxRegID `type: string` `length: 4` `required: N` `description: 공급자 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - invoicerCorpName `type: string` `length: 200` `required: Y` `description: 공급자 상호`
  - invoicerCEOName `type: string` `length: 100` `required: Y` `description: 공급자 대표자 성명`
  - invoicerAddr `type: string` `length: 300` `required: N` `description: 공급자 주소`
  - invoicerBizType `type: string` `length: 100` `required: N` `description: 공급자 업태`
  - invoicerBizClass `type: string` `length: 100` `required: N` `description: 공급자 종목`
  - invoicerContactName `type: string` `length: 100` `required: N` `description: 공급자 담당자 성명`
  - invoicerDeptName `type: string` `length: 100` `required: N` `description: 공급자 담당자 부서명`
  - invoicerTEL `type: string` `length: 20` `required: N` `description: 공급자 담당자 연락처`
  - invoicerHP `type: string` `length: 20` `required: N` `description: 공급자 담당자 휴대폰`
  - invoicerEmail `type: string` `length: 100` `required: N` `description: 공급자 담당자 메일`
  - invoicerSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급자 알림문자 전송 여부`
    - `true`: 전송
    - `false`: 미전송 : 기본값
    - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
      문자 전송 포인트가 차감(단, 전송실패 건은 환불)
    - {issueType}="정발행" 경우\
      세금계산서 발행시점에 알림문자 전송
  - invoiceeMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급받는자 문서번호`
    - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
      영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
    - {issueType}="역발행" 경우 필수
  - invoiceeType `type: string` `length: -` `required: N` `description: 공급받는자 유형 (택 1)`
    - `사업자`
    - `개인`
    - `외국인`
  - invoiceeCorpNum `type: string` `length: 13` `required: Y` `description: 공급받는자 등록번호 ('-' 제외)`
    - {invoiceeType}="사업자" 경우 사업자번호
    - {invoiceeType}="개인" 경우 주민등록번호
    - {invoiceeType}="외국인" 경우 "9999999999999"
  - invoiceeTaxRegID `type: string` `length: 4` `required: N` `description: 공급받는자 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - invoiceeCorpName `type: string` `length: 200` `required: Y` `description: 공급받는자 상호`
  - invoiceeCEOName `type: string` `length: 100` `required: Y` `description: 공급받는자 대표자 성명`
  - invoiceeAddr `type: string` `length: 300` `required: N` `description: 공급받는자 주소`
  - invoiceeBizType `type: string` `length: 100` `required: N` `description: 공급받는자 업태`
  - invoiceeBizClass `type: string` `length: 100` `required: N` `description: 공급받는자 종목`
  - invoiceeContactName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 성명`
  - invoiceeDeptName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 부서명`
  - invoiceeTEL1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 연락처`
  - invoiceeHP1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 휴대폰`
  - invoiceeEmail1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 메일`
  - invoiceeSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급받는자 알림문자 전송 여부`
    - `true`: 전송
    - `false`: 미전송 : 기본값
    - 수신자 : 공급자 휴대폰번호 {invoicerHP}\
      문자 전송 포인트가 차감(단, 전송실패 건은 환불)
    - {issueType}="역발행" 경우\
      세금계산서 역발행 요청시점에 알림문자 전송
  - trusteeMgtKey `type: string` `length: 24` `required: 조건부` `description: 수탁자 문서번호`
    - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
      영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
    - {issueType}="위수탁" 경우 필수
  - trusteeCorpNum `type: string` `length: 10` `required: 조건부` `description: 수탁자 사업자번호 ('-' 제외)`
    - {issueType}="위수탁" 경우 필수
  - trusteeTaxRegID `type: string` `length: 4` `required: N` `description: 수탁자 종사업장 식별번호`
    - 종사업장 식별번호는 4자리 숫자로만 구성
  - trusteeCorpName `type: string` `length: 200` `required: 조건부` `description: 수탁자 상호`
    - {issueType}="위수탁" 경우 필수
  - trusteeCEOName `type: string` `length: 100` `required: 조건부` `description: 수탁자 대표자 성명`
    - {issueType}="위수탁" 경우 필수
  - trusteeAddr `type: string` `length: 300` `required: N` `description: 수탁자 주소`
  - trusteeBizType `type: string` `length: 100` `required: N` `description: 수탁자 업태`
  - trusteeBizClass `type: string` `length: 100` `required: N` `description: 수탁자 종목`
  - trusteeContactName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 성명`
  - trusteeDeptName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 부서명`
  - trusteeTEL `type: string` `length: 20` `required: N` `description: 수탁자 담당자 연락처`
  - trusteeHP `type: string` `length: 20` `required: N` `description: 수탁자 담당자 휴대폰`
  - trusteeEmail `type: string` `length: 100` `required: N` `description: 수탁자 담당자 메일`
  - trusteeSMSSendYN `type: boolean` `length: -` `required: N` `description: 수탁자 알림문자 전송 여부`
    - `true`: 전송
    - `false`: 미전송 : 기본값
    - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
      문자 전송 포인트가 차감(단, 전송실패 건은 환불)
    - {issueType}="위수탁" 경우\
      세금계산서 발행시점에 알림문자 전송
  - modifyCode `type: number` `length: 1` `required: 조건부` `description: 수정 사유코드`
    - 수정세금계산서 작성시 필수 [\[참고\] 수정세금계산서](https://developers.popbill.com/guide/taxinvoice/introduction/modified-taxinvoice)
  - orgNTSConfirmNum `type: string` `length: 24` `required: 조건부` `description: 당초 국세청승인번호`
    - 수정세금계산서 작성시 필수
  - businessLicenseYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 사업자등록증 첨부 여부`
    - `true`: 첨부
    - `false`: 미첨부 : 기본값
    - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
  - bankBookYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 통장사본 첨부 여부`
    - `true`: 첨부
    - `false`: 미첨부 : 기본값
    - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
  - detailList `type: array` `length: -` `required: N` `description: 품목 상세정보`
    - 최대 : 99개
    - serialNum `type: number` `length: 2` `required: Y` `description: 일련번호`
    - 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: 수량`
      - -99999999.99 \~ 999999999.99\
        소수점 아래 2번째 자리까지 입력 가능
    - unitCost `type: string` `length: 18` `required: N` `description: 단가`
      - -99999999999999.99 \~ 999999999999999.99\
        소수점 아래 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: 비고`
  - addContactList `type: array` `length: -` `required: N` `description: 공급받는자 추가담당자 정보`
    - 여러 담당자에게 발행 안내 메일을 보내야할 경우 사용\
      최대 : 5명
    - serialNum `type: number` `length: 1` `required: Y` `description: 일련번호`
    - contactName `type: string` `length: 100` `required: N` `description: 담당자 성명`
    - email `type: string` `length: 100` `required: Y` `description: 메일`
  - memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`
  - emailSubject `type: string` `length: 300` `required: N` `description: 세금계산서 발행 안내메일 제목`
    - 기본값 : 팝빌에서 설정한 안내메일 제목
  - writeSpecification `type: boolean` `length: -` `required: N` `description: 거래명세서 동시작성 여부`
    - `true`: 사용
    - `false`: 미사용 : 기본값
    - 공급받는자 유형 {invoiceeType}="사업자" 경우만 가능
  - dealInvoiceKey `type: string` `length: 24` `required: N` `description: 거래명세서 문서번호`
    - 기본값 : 세금계산서 문서번호와 동일하게 할당
    - {writeSpecification}=true 경우 할당
- forceIssue `type: boolean` `length: -` `required: N` `description: 지연발행 가능여부`
  - `true`: 가능
  - `false`: 불가능 : 기본값

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --header 'X-HTTP-Method-Override: BULKISSUE' \
  --header 'X-PB-Message-Digest: {MessageDigest}' \
  --header 'X-PB-Submit-ID: {submitID}' \
  --data '{
    "invoices": [
        {
            "issueType": "정발행",
            "taxType": "과세",
            "chargeDirection": "정과금",
            "writeDate": "20251016",
            "purposeType": "영수",
            "supplyCostTotal": "10000",
            "taxTotal": "1000",
            "totalAmount": "11000",
            "invoicerMgtKey": "TEST202510281800000",
            "invoicerCorpNum": "1234567890",
            "invoicerCorpName": "공급자 상호",
            "invoicerCEOName": "공급자 대표자 성명",
            "invoiceeType": "사업자",
            "invoiceeCorpNum": "1234567890",
            "invoiceeCorpName": "공급받는자 상호",
            "invoiceeCEOName": "공급받는자 대표자 성명",
            "detailList": [
                {
                    "serialNum": 1,
                    "purchaseDT": "20251117",
                    "itemName": "품명",
                    "spec": "규격",
                    "qty": "1",
                    "unitCost": "10000",
                    "supplyCost": "10000",
                    "tax": "1000",
                    "remark": "비고"
                }
            ],
            "addContactList": [
                {
                    "serialNum": 1,
                    "contactName": "담당자 성명",
                    "email": "test@test.com"
                }
            ]
        }
    ]
}'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "접수 완료",
    "receiptID": "0251023-cf84677932f44e3baa2541160366"
}
```

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

| HTTP Method | 테스트(Sandbox)                                                          | 운영(Production)                                                   |
| ----------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- |
| GET         | <https://popbill-test.linkhub.co.kr/Taxinvoice/BULK/{submitID}/State> | <https://popbill.linkhub.co.kr/Taxinvoice/BULK/{submitID}/State> |

- 접수시 기재한 SubmitID를 사용하여 세금계산서 접수결과를 확인합니다.
- txState(접수상태)가 2(완료)일 때, 개별 세금계산서 발행결과(성공/실패) 확인이 가능합니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**Path 파라미터**

- submitID `type: string` `length: 36` `required: Y` `description: 파트너가 할당한 제출 아이디`

**요청 예시**

```bash
curl --request GET \
  --url 'https://{domain}/Taxinvoice/BULK/{submitID}/State' \
  --header 'Authorization: Bearer {token}'
```

### Response

**응답 본문**

- code `type: number` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: string` `length: -` `description: API 처리에 대한 응답메시지`
- receiptID `type: string` `length: 36` `description: 접수아이디`
  - 접수 시점에 팝빌에서 자동으로 할당
- submitID `type: string` `length: 36` `description: 접수 시점에 고객사에서 할당한 제출아이디`
- submitCount `type: number` `length: -` `description: 세금계산서 접수 건수`
- successCount `type: number` `length: -` `description: 세금계산서 발행 성공 건수`
- failCount `type: number` `length: -` `description: 세금계산서 발행 실패 건수`
- txState `type: number` `length: 1` `description: 접수상태`
  - `0`: 접수
  - `1`: 처리중
  - `2`: 처리완료
- txStartDT `type: string` `length: 14` `description: 발행처리 시작일시`
  - 형식 : yyyyMMddHHmmss
- txEndDT `type: string` `length: 14` `description: 발행처리 완료일시`
  - 형식 : yyyyMMddHHmmss
- txResultCode `type: number` `length: -` `description: 접수 결과코드`
  - 성공 : 1
  - 실패 : 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code "_blank")
- issueResult `type: array` `length: -` `description: 발행결과`
  - 최대 : 100건
  - invoicerMgtKey `type: string` `length: 24` `description: 공급자 문서번호`
    - 공급자의 문서 관리를 위해 파트너가 할당한 식별번호
  - trusteeMgtKey `type: string` `length: 24` `description: 수탁자 문서번호`
    - 파트너가 할당한 문서번호
  - code `type: number` `length: -` `description: API 처리에 대한 응답코드`
    - 성공 : 1
    - 실패 : 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code "_blank")
  - message `type: string` `length: -` `description: API 처리에 대한 응답메시지`
  - ntsconfirmNum `type: string` `length: 24` `description: 국세청승인번호`
    - 전자세금계산서 발행 시점에 팝빌에서 자동으로 할당
  - issueDT `type: string` `length: 14` `description: 발행일시`
    - 형식 : yyyyMMddHHmmss
- receiptDT `type: string` `length: 14` `description: 접수일시`
  - 형식 : yyyyMMddHHmmss

**응답 예시**

```json
{
    "code": 1,
    "message": "확인 완료",
    "receiptID": "0251023-cf84677932f44e3baa2541160366",
    "submitID": "20210930-01",
    "submitCount": 1,
    "successCount": 1,
    "failCount": 0,
    "txState": 2,
    "txStartDT": "20251023113522",
    "txEndDT": "20251023113527",
    "txResultCode": 1,
    "issueResult": [
        {
            "invoicerMgtKey": "20251023-02-2",
            "code": 1,
            "ntsconfirmNum": "20251023888888880000000e",
            "issueDT": "20251023114550"
        }
    ],
    "receiptDT": "20251023113521"
}
```

## 4. Register - 임시저장

| HTTP Method | 테스트(Sandbox)                                    | 운영(Production)                             |
| ----------- | ----------------------------------------------- | ------------------------------------------ |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice> | <https://popbill.linkhub.co.kr/Taxinvoice> |

- 작성된 세금계산서 데이터를 팝빌에 저장합니다.
- “임시저장” 상태의 세금계산서는 [\[Issue - 발행\]](#Issue) API를 호출하여 “발행완료” 처리한 경우에만 국세청으로 전송됩니다.

> 세금계산서 파일첨부 기능을 구현하는 경우, [\[Register – 임시저장\]](#Register) → [\[AttachFile – 파일첨부\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#AttachFile) → [\[Issue – 발행\]](#Issue) API를 차례로 호출합니다.\
> 역발행 세금계산서를 저장하는 경우, `chargeDirection` 값을 통해 과금 주체를 지정할 수 있습니다.\
> ※ 정과금: 공급자 과금, 역과금: 공급받는자 과금\
> 임시저장된 세금계산서는 팝빌 사이트 ‘임시문서함’에서 확인 가능합니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**요청 본문**

- issueType `type: string` `length: 3` `required: Y` `description: 발행형태 (택 1)`
  - `정발행`
  - `역발행`
  - `위수탁`
- taxType `type: string` `length: 2` `required: Y` `description: 과세형태 (택 1)`
  - `과세`
  - `영세`
  - `면세`
- chargeDirection `type: string` `length: 3` `required: Y` `description: 과금방향 (택 1)`
  - `정과금`: 공급자 과금
  - `역과금`: 공급받는자 과금
  - {issueType}="정발행", "역발행", "위수탁" 경우 정과금 가능\
    {issueType}="역발행" 경우 역과금 가능
- serialNum `type: string` `length: 30` `required: N` `description: 일련번호`
- kwon `type: number` `length: 4` `required: N` `description: 책번호 "권" 항목`
  - 정수만 입력 가능
- ho `type: number` `length: 4` `required: N` `description: 책번호 "호" 항목`
  - 정수만 입력 가능
- writeDate `type: string` `length: 8` `required: Y` `description: 작성일자`
  - 형식 : yyyyMMdd
- purposeType `type: string` `length: 2` `required: Y` `description: 영수/청구`
  - `영수`
  - `청구`
  - `없음`
- supplyCostTotal `type: string` `length: 18` `required: Y` `description: 공급가액 합계`
  - 정수만 입력 가능(소수점 자동 절사)
- taxTotal `type: string` `length: 18` `required: Y` `description: 세액 합계`
  - 정수만 입력 가능(소수점 자동 절사)
- totalAmount `type: string` `length: 18` `required: Y` `description: 합계금액`
  - 정수만 입력 가능(소수점 자동 절사)
- cash `type: string` `length: 18` `required: N` `description: 현금`
- chkBill `type: string` `length: 18` `required: N` `description: 수표`
- credit `type: string` `length: 18` `required: N` `description: 외상`
- note `type: string` `length: 18` `required: N` `description: 어음`
- remark1 `type: string` `length: 150` `required: 조건부` `description: 비고1`
  - {invoiceeType}="외국인" 경우\
    외국인등록번호 또는 여권번호 필수 입력
- remark2 `type: string` `length: 150` `required: N` `description: 비고2`
- remark3 `type: string` `length: 150` `required: N` `description: 비고3`
- invoicerMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호
  - 영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="정발행" 경우 필수
- invoicerCorpNum `type: string` `length: 10` `required: Y` `description: 공급자 사업자번호 ('-' 제외)`
- invoicerTaxRegID `type: string` `length: 4` `required: N` `description: 공급자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- invoicerCorpName `type: string` `length: 200` `required: Y` `description: 공급자 상호`
- invoicerCEOName `type: string` `length: 100` `required: Y` `description: 공급자 대표자 성명`
- invoicerAddr `type: string` `length: 300` `required: N` `description: 공급자 주소`
- invoicerBizType `type: string` `length: 100` `required: N` `description: 공급자 업태`
- invoicerBizClass `type: string` `length: 100` `required: N` `description: 공급자 종목`
- invoicerContactName `type: string` `length: 100` `required: N` `description: 공급자 담당자 성명`
- invoicerDeptName `type: string` `length: 100` `required: N` `description: 공급자 담당자 부서명`
- invoicerTEL `type: string` `length: 20` `required: N` `description: 공급자 담당자 연락처`
- invoicerHP `type: string` `length: 20` `required: N` `description: 공급자 담당자 휴대폰`
- invoicerEmail `type: string` `length: 100` `required: N` `description: 공급자 담당자 메일`
- invoicerSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="정발행" 경우\
    세금계산서 발행시점에 알림문자 전송
- invoiceeMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급받는자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="역발행" 경우 필수
- invoiceeType `type: string` `length: -` `required: N` `description: 공급받는자 유형 (택 1)`
  - `사업자`
  - `개인`
  - `외국인`
- invoiceeCorpNum `type: string` `length: 13` `required: Y` `description: 공급받는자 등록번호 ('-' 제외)`
  - {invoiceeType}="사업자" 경우 사업자번호
  - {invoiceeType}="개인" 경우 주민등록번호
  - {invoiceeType}="외국인" 경우 "9999999999999"
- invoiceeTaxRegID `type: string` `length: 4` `required: N` `description: 공급받는자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- invoiceeCorpName `type: string` `length: 200` `required: Y` `description: 공급받는자 상호`
- invoiceeCEOName `type: string` `length: 100` `required: Y` `description: 공급받는자 대표자 성명`
- invoiceeAddr `type: string` `length: 300` `required: N` `description: 공급받는자 주소`
- invoiceeBizType `type: string` `length: 100` `required: N` `description: 공급받는자 업태`
- invoiceeBizClass `type: string` `length: 100` `required: N` `description: 공급받는자 종목`
- invoiceeContactName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 성명`
- invoiceeDeptName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 부서명`
- invoiceeTEL1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 연락처`
- invoiceeHP1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 휴대폰`
- invoiceeEmail1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 메일`
- invoiceeSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급받는자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급자 휴대폰번호 {invoicerHP}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
- trusteeMgtKey `type: string` `length: 24` `required: 조건부` `description: 수탁자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="위수탁" 경우 필수
- trusteeCorpNum `type: string` `length: 10` `required: 조건부` `description: 수탁자 사업자번호 ('-' 제외)`
  - {issueType}="위수탁" 경우 필수
- trusteeTaxRegID `type: string` `length: 4` `required: N` `description: 수탁자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- trusteeCorpName `type: string` `length: 200` `required: 조건부` `description: 수탁자 상호`
  - {issueType}="위수탁" 경우 필수
- trusteeCEOName `type: string` `length: 100` `required: 조건부` `description: 수탁자 대표자 성명`
  - {issueType}="위수탁" 경우 필수
- trusteeAddr `type: string` `length: 300` `required: N` `description: 수탁자 주소`
- trusteeBizType `type: string` `length: 100` `required: N` `description: 수탁자 업태`
- trusteeBizClass `type: string` `length: 100` `required: N` `description: 수탁자 종목`
- trusteeContactName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 성명`
- trusteeDeptName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 부서명`
- trusteeTEL `type: string` `length: 20` `required: N` `description: 수탁자 담당자 연락처`
- trusteeHP `type: string` `length: 20` `required: N` `description: 수탁자 담당자 휴대폰`
- trusteeEmail `type: string` `length: 100` `required: N` `description: 수탁자 담당자 메일`
- trusteeSMSSendYN `type: boolean` `length: -` `required: N` `description: 수탁자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="위수탁" 경우\
    세금계산서 발행시점에 알림문자 전송
- modifyCode `type: number` `length: 1` `required: 조건부` `description: 수정 사유코드`
  - 수정세금계산서 작성시 필수 [\[참고\] 수정세금계산서](https://developers.popbill.com/guide/taxinvoice/introduction/modified-taxinvoice "_blank")
- orgNTSConfirmNum `type: string` `length: 24` `required: 조건부` `description: 당초 국세청승인번호`
  - 수정세금계산서 작성시 필수
- businessLicenseYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 사업자등록증 첨부 여부`
  - `true`: 첨부
  - `false`: 미첨부 : 기본값
  - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
- bankBookYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 통장사본 첨부 여부`
  - `true`: 첨부
  - `false`: 미첨부 : 기본값
  - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
- detailList `type: array` `length: -` `required: N` `description: 품목 상세정보`
  - 최대 : 99개
  - serialNum `type: number` `length: 2` `required: Y` `description: 일련번호`
  - 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: 수량`
    - -99999999.99 \~ 999999999.99\
      소수점 아래 2번째 자리까지 입력 가능
  - unitCost `type: string` `length: 18` `required: N` `description: 단가`
    - -99999999999999.99 \~ 999999999999999.99\
      소수점 아래 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: 비고`
- addContactList `type: array` `length: -` `required: N` `description: 공급받는자 추가담당자 정보`
  - 여러 담당자에게 발행 안내 메일을 보내야할 경우 사용\
    최대 : 5명
  - serialNum `type: number` `length: 1` `required: Y` `description: 일련번호`
  - contactName `type: string` `length: 100` `required: N` `description: 담당자 성명`
  - email `type: string` `length: 100` `required: Y` `description: 메일`
- memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`
- emailSubject `type: string` `length: 300` `required: N` `description: 세금계산서 발행 안내메일 제목`
  - 기본값 : 팝빌에서 설정한 안내메일 제목
- writeSpecification `type: boolean` `length: -` `required: N` `description: 거래명세서 동시작성 여부`
  - `true`: 사용
  - `false`: 미사용 : 기본값
  - 공급받는자 유형 {invoiceeType}="사업자" 경우만 가능
- forceIssue `type: boolean` `length: -` `required: N` `description: 지연발행 가능여부`
  - `true`: 가능
  - `false`: 불가능 : 기본값
- dealInvoiceKey `type: string` `length: 24` `required: N` `description: 거래명세서 문서번호`
  - 기본값 : 세금계산서 문서번호와 동일하게 할당
  - {writeSpecification}=true 경우 할당

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "issueType": "정발행",
    "taxType": "과세",
    "chargeDirection": "정과금",
    "writeDate": "20251117",
    "purposeType": "영수",
    "supplyCostTotal": "10000",
    "taxTotal": "1000",
    "totalAmount": "11000",
    "invoicerMgtKey": "TEST202511170900000",
    "invoicerCorpNum": "1234567890",
    "invoicerCorpName": "공급자 상호",
    "invoicerCEOName": "공급자 대표자 성명",
    "invoiceeType": "사업자",
    "invoiceeCorpNum": "1234567890",
    "invoiceeCorpName": "공급받는자 상호",
    "invoiceeCEOName": "공급받는자 대표자 성명",
    "detailList": [
        {
            "serialNum": 1,
            "purchaseDT": "20251117",
            "itemName": "품명",
            "spec": "규격",
            "qty": "1",
            "unitCost": "10000",
            "supplyCost": "10000",
            "tax": "1000",
            "remark": "비고"
        }
    ],
    "addContactList": [
        {
            "serialNum": 1,
            "contactName": "담당자 성명",
            "email": "test@test.com"
        }
    ]
}'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "등록 완료"
}
```

## 5. Update - 수정

| HTTP Method | 테스트(Sandbox)                                                          | 운영(Production)                                                   |
| ----------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> | <https://popbill.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> |

- “임시저장” 상태의 세금계산서를 수정합니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `PATCH`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**Path 파라미터**

- MgtKeyType `type: string` `length: -` `required: Y` `description: 문서번호 유형 (택 1)`
  - `SELL`: 매출
  - `TRUSTEE`: 위수탁
- MgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`

**요청 본문**

- issueType `type: string` `length: 3` `required: Y` `description: 발행형태 (택 1)`
  - `정발행`
  - `역발행`
  - `위수탁`
- taxType `type: string` `length: 2` `required: Y` `description: 과세형태 (택 1)`
  - `과세`
  - `영세`
  - `면세`
- chargeDirection `type: string` `length: 3` `required: Y` `description: 과금방향 (택 1)`
  - `정과금`: 공급자 과금
  - `역과금`: 공급받는자 과금
  - {issueType}="정발행", "역발행", "위수탁" 경우 정과금 가능\
    {issueType}="역발행" 경우 역과금 가능
- serialNum `type: string` `length: 30` `required: N` `description: 일련번호`
- kwon `type: number` `length: 4` `required: N` `description: 책번호 "권" 항목`
  - 정수만 입력 가능
- ho `type: number` `length: 4` `required: N` `description: 책번호 "호" 항목`
  - 정수만 입력 가능
- writeDate `type: string` `length: 8` `required: Y` `description: 작성일자`
  - 형식 : yyyyMMdd
- purposeType `type: string` `length: 2` `required: Y` `description: 영수/청구`
  - `영수`
  - `청구`
  - `없음`
- supplyCostTotal `type: string` `length: 18` `required: Y` `description: 공급가액 합계`
  - 정수만 입력 가능(소수점 자동 절사)
- taxTotal `type: string` `length: 18` `required: Y` `description: 세액 합계`
  - 정수만 입력 가능(소수점 자동 절사)
- totalAmount `type: string` `length: 18` `required: Y` `description: 합계금액`
  - 정수만 입력 가능(소수점 자동 절사)
- cash `type: string` `length: 18` `required: Y` `description: 현금`
- chkBill `type: string` `length: 18` `required: Y` `description: 수표`
- credit `type: string` `length: 18` `required: Y` `description: 외상`
- note `type: string` `length: 18` `required: Y` `description: 어음`
- remark1 `type: string` `length: 150` `required: 조건부` `description: 비고1`
  - {invoiceeType}="외국인" 경우\
    외국인등록번호 또는 여권번호 필수 입력
- remark2 `type: string` `length: 150` `required: N` `description: 비고2`
- remark3 `type: string` `length: 150` `required: N` `description: 비고3`
- invoicerMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="정발행" 경우 필수
- invoicerCorpNum `type: string` `length: 10` `required: Y` `description: 공급자 사업자번호 ('-' 제외)`
- invoicerTaxRegID `type: string` `length: 4` `required: N` `description: 공급자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- invoicerCorpName `type: string` `length: 200` `required: Y` `description: 공급자 상호`
- invoicerCEOName `type: string` `length: 100` `required: Y` `description: 공급자 대표자 성명`
- invoicerAddr `type: string` `length: 300` `required: N` `description: 공급자 주소`
- invoicerBizType `type: string` `length: 100` `required: N` `description: 공급자 업태`
- invoicerBizClass `type: string` `length: 100` `required: N` `description: 공급자 종목`
- invoicerContactName `type: string` `length: 100` `required: N` `description: 공급자 담당자 성명`
- invoicerDeptName `type: string` `length: 100` `required: N` `description: 공급자 담당자 부서명`
- invoicerTEL `type: string` `length: 20` `required: N` `description: 공급자 담당자 연락처`
- invoicerHP `type: string` `length: 20` `required: N` `description: 공급자 담당자 휴대폰`
- invoicerEmail `type: string` `length: 100` `required: N` `description: 공급자 담당자 메일`
- invoicerSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="정발행" 경우\
    세금계산서 발행시점에 알림문자 전송
- invoiceeMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급받는자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="역발행" 경우 필수
- invoiceeType `type: string` `length: -` `required: N` `description: 공급받는자 유형 (택 1)`
  - `사업자`
  - `개인`
  - `외국인`
- invoiceeCorpNum `type: string` `length: 13` `required: Y` `description: 공급받는자 등록번호 ('-' 제외)`
  - {invoiceeType}="사업자" 경우 사업자번호
  - {invoiceeType}="개인" 경우 주민등록번호
  - {invoiceeType}="외국인" 경우 "9999999999999"
- invoiceeTaxRegID `type: string` `length: 4` `required: N` `description: 공급받는자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- invoiceeCorpName `type: string` `length: 200` `required: Y` `description: 공급받는자 상호`
- invoiceeCEOName `type: string` `length: 100` `required: Y` `description: 공급받는자 대표자 성명`
- invoiceeAddr `type: string` `length: 300` `required: N` `description: 공급받는자 주소`
- invoiceeBizType `type: string` `length: 100` `required: N` `description: 공급받는자 업태`
- invoiceeBizClass `type: string` `length: 100` `required: N` `description: 공급받는자 종목`
- invoiceeContactName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 성명`
- invoiceeDeptName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 부서명`
- invoiceeTEL1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 연락처`
- invoiceeHP1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 휴대폰`
- invoiceeEmail1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 메일`
- invoiceeSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급받는자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급자 휴대폰번호 {invoicerHP}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="역발행" 경우\
    세금계산서 역발행 요청시점에 알림문자 전송
- trusteeMgtKey `type: string` `length: 24` `required: 조건부` `description: 수탁자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="위수탁" 경우 필수
- trusteeCorpNum `type: string` `length: 10` `required: 조건부` `description: 수탁자 사업자번호 ('-' 제외)`
  - {issueType}="위수탁" 경우 필수
- trusteeTaxRegID `type: string` `length: 4` `required: N` `description: 수탁자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- trusteeCorpName `type: string` `length: 200` `required: 조건부` `description: 수탁자 상호`
  - {issueType}="위수탁" 경우 필수
- trusteeCEOName `type: string` `length: 100` `required: 조건부` `description: 수탁자 대표자 성명`
  - {issueType}="위수탁" 경우 필수
- trusteeAddr `type: string` `length: 300` `required: N` `description: 수탁자 주소`
- trusteeBizType `type: string` `length: 100` `required: N` `description: 수탁자 업태`
- trusteeBizClass `type: string` `length: 100` `required: N` `description: 수탁자 종목`
- trusteeContactName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 성명`
- trusteeDeptName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 부서명`
- trusteeTEL `type: string` `length: 20` `required: N` `description: 수탁자 담당자 연락처`
- trusteeHP `type: string` `length: 20` `required: N` `description: 수탁자 담당자 휴대폰`
- trusteeEmail `type: string` `length: 100` `required: N` `description: 수탁자 담당자 메일`
- trusteeSMSSendYN `type: boolean` `length: -` `required: N` `description: 수탁자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="위수탁" 경우\
    세금계산서 발행시점에 알림문자 전송
- modifyCode `type: number` `length: 1` `required: 조건부` `description: 수정 사유코드`
  - 수정세금계산서 작성시 필수 [\[참고\] 수정세금계산서](https://developers.popbill.com/guide/taxinvoice/introduction/modified-taxinvoice)
- orgNTSConfirmNum `type: string` `length: 24` `required: 조건부` `description: 당초 국세청승인번호`
  - 수정세금계산서 작성시 필수
- businessLicenseYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 사업자등록증 첨부 여부`
  - `true`: 첨부
  - `false`: 미첨부 : 기본값
  - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
- bankBookYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 통장사본 첨부 여부`
  - `true`: 첨부
  - `false`: 미첨부 : 기본값
  - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
- detailList `type: array` `length: -` `required: N` `description: 품목 상세정보`
  - 최대 : 99개
  - serialNum `type: number` `length: 2` `required: Y` `description: 일련번호`
  - 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: 수량`
    - -99999999.99 \~ 999999999.99\
      소수점 아래 2번째 자리까지 입력 가능
  - unitCost `type: string` `length: 18` `required: N` `description: 단가`
    - -99999999999999.99 \~ 999999999999999.99\
      소수점 아래 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: 비고`
- addContactList `type: array` `length: -` `required: N` `description: 공급받는자 추가담당자 정보`
  - 여러 담당자에게 발행 안내 메일을 보내야할 경우 사용\
    최대 : 5명
  - serialNum `type: number` `length: 1` `required: Y` `description: 일련번호`
  - contactName `type: string` `length: 100` `required: N` `description: 담당자 성명`
  - email `type: string` `length: 100` `required: Y` `description: 메일`
- memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`
- emailSubject `type: string` `length: 300` `required: N` `description: 세금계산서 발행 안내메일 제목`
  - 기본값 : 팝빌에서 설정한 안내메일 제목
- writeSpecification `type: boolean` `length: -` `required: N` `description: 거래명세서 동시작성 여부`
  - `true`: 사용
  - `false`: 미사용 : 기본값
  - 공급받는자 유형 {invoiceeType}="사업자" 경우만 가능
- forceIssue `type: boolean` `length: -` `required: N` `description: 지연발행 가능여부`
  - `true`: 가능
  - `false`: 불가능 : 기본값
- dealInvoiceKey `type: string` `length: 24` `required: N` `description: 거래명세서 문서번호`
  - 기본값 : 세금계산서 문서번호와 동일하게 할당
  - {writeSpecification}=true 경우 할당

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice/{MgtKeyType}/{MgtKey}' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --header 'X-HTTP-Method-Override: PATCH' \
  --data '{
    "issueType": "정발행",
    "taxType": "과세",
    "chargeDirection": "정과금",
    "writeDate": "20251117",
    "purposeType": "영수",
    "supplyCostTotal": "10000",
    "taxTotal": "1000",
    "totalAmount": "11000",
    "invoicerMgtKey": "TEST202511170900000",
    "invoicerCorpNum": "1234567890",
    "invoicerCorpName": "공급자 상호",
    "invoicerCEOName": "공급자 대표자 성명",
    "invoiceeType": "사업자",
    "invoiceeCorpNum": "1234567890",
    "invoiceeCorpName": "공급받는자 상호",
    "invoiceeCEOName": "공급받는자 대표자 성명",
    "detailList": [
        {
            "serialNum": 1,
            "purchaseDT": "20251117",
            "itemName": "품명",
            "spec": "규격",
            "qty": "1",
            "unitCost": "10000",
            "supplyCost": "10000",
            "tax": "1000",
            "remark": "비고"
        }
    ],
    "addContactList": [
        {
            "serialNum": 1,
            "contactName": "담당자 성명",
            "email": "test@test.com"
        }
    ]
}'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "수정 완료"
}
```

## 6. Issue - 발행

| HTTP Method | 테스트(Sandbox)                                                          | 운영(Production)                                                   |
| ----------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> | <https://popbill.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> |

- “임시저장” 또는 “(역)발행대기” 상태의 세금계산서를 발행(전자서명)하며, “발행완료” 상태로 처리합니다. [\[참고\] 팝빌 국세청 전송 정책](https://developers.popbill.com/guide/taxinvoice/introduction/policy-of-send-to-nts)
- “발행완료”된 전자세금계산서는 국세청 전송 이전에 [\[CancelIssue – 발행취소\]](#CancelIssue) API로 국세청 신고 대상에서 제외할 수 있습니다.

> 세금계산서 발행을 위해서 공급자의 인증서가 팝빌 인증서버에 사전등록 되어야 합니다.\
> ※ 위수탁의 경우, 수탁자의 인증서 등록이 필요합니다.\
> 세금계산서 발행시 포인트가 과금되며, 공급받는자에게 발행 메일이 발송됩니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization)
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `ISSUE`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**Path 파라미터**

- MgtKeyType `type: string` `length: -` `required: Y` `description: 문서번호 유형 (택 1)`
  - `SELL`: 매출
  - `TRUSTEE`: 위수탁
- MgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`

**요청 본문**

- memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`
- emailSubject `type: string` `length: 300` `required: N` `description: 세금계산서 발행 안내메일 제목`
  - 기본값 : 팝빌에서 설정한 안내메일 제목
- forceIssue `type: boolean` `length: -` `required: N` `description: 지연발행 가능여부`
  - `true`: 가능
  - `false`: 불가능 : 기본값

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice/SELL/{MgtKey}' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --header 'X-HTTP-Method-Override: ISSUE' \
  --data '{
    "memo": "메모",
    "emailSubject": "세금계산서 발행 안내메일 제목",
    "forceIssue": false
  }'
```

### Response

**응답 본문**

- code `type: number` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: string` `length: -` `description: API 처리에 대한 응답메시지`
- ntsConfirmNum `type: string` `length: 24` `description: 국세청승인번호`
  - 전자세금계산서 발행 시점에 팝빌에서 자동으로 할당
- issueDT `type: string` `length: -` `description: 발행일시`
  - 형식 : yyyyMMddHHmmss

**응답 예시**

```json
{
    "code": 1,
    "message": "발행 완료",
    "ntsConfirmNum": "20251016888888880000004c",
    "issueDT": null
}
```

## 7. CancelIssue - 발행취소

| HTTP Method | 테스트(Sandbox)                                                          | 운영(Production)                                                   |
| ----------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> | <https://popbill.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> |

- 국세청 전송 이전 “발행완료” 상태의 전자세금계산서를 “발행취소”하고 국세청 신고대상에서 제외합니다.

> [\[Delete – 삭제\]](https://developers.popbill.com/api-reference/taxinvoice/api/issue#Delete) API를 호출하여 “발행취소” 상태의 전자세금계산서를 삭제하면, 문서번호 재사용이 가능합니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization)
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `CANCELISSUE`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**Path 파라미터**

- MgtKeyType `type: string` `length: -` `required: Y` `description: 문서번호 유형 (택 1)`
  - `SELL`: 매출
  - `TRUSTEE`: 위수탁
- MgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`

**요청 본문**

- memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice/{MgtKeyType}/{MgtKey}' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --header 'X-HTTP-Method-Override: CANCELISSUE' \
  --data '{
    "memo": "메모"
  }'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "발행취소 완료"
}
```

## 8. RegistRequest - 역발행 즉시 요청

| HTTP Method | 테스트(Sandbox)                                    | 운영(Production)                             |
| ----------- | ----------------------------------------------- | ------------------------------------------ |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice> | <https://popbill.linkhub.co.kr/Taxinvoice> |

- 공급받는자가 작성한 세금계산서 데이터를 팝빌에 저장하고 공급자에게 송부하여 발행을 요청합니다.
- 역발행 요청된 세금계산서는 “(역)발행대기” 상태이며, 공급자가 팝빌 사이트 또는 API를 호출하여 발행한 경우에만 국세청으로 전송됩니다.
- 공급자는 팝빌 사이트의 “매출 발행 대기함”에서 발행대기 상태의 역발행 세금계산서를 확인할 수 있습니다.\
  ※ [\[Register – 임시저장\]](#Register)과 [\[Request – 역발행 요청\]](#Request) API 기능을 한 번의 프로세스로 처리합니다.

> 역발행 요청시 공급자에게 역발행 요청 메일이 발송됩니다.\
> 공급자가 역발행 세금계산서 발행시 포인트가 과금되며, `chargeDirection` 값에 따라 과금 주체를 변경할 수 있습니다.\
> ※ 정과금 : 공급자 과금, 역과금 : 공급받는자 과금

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `REQUEST`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**요청 본문**

- issueType `type: string` `length: 3` `required: Y` `description: 발행형태`
  - `역발행`
- taxType `type: string` `length: 2` `required: Y` `description: 과세형태 (택 1)`
  - `과세`
  - `영세`
  - `면세`
- chargeDirection `type: string` `length: 3` `required: Y` `description: 과금방향 (택 1)`
  - `정과금`: 공급자 과금
  - `역과금`: 공급받는자 과금
  - {issueType}="정발행", "역발행", "위수탁" 경우 정과금 가능\
    {issueType}="역발행" 경우 역과금 가능
- serialNum `type: string` `length: 30` `required: N` `description: 일련번호`
- kwon `type: number` `length: 4` `required: N` `description: 책번호 "권" 항목`
  - 정수만 입력 가능
- ho `type: number` `length: 4` `required: N` `description: 책번호 "호" 항목`
  - 정수만 입력 가능
- writeDate `type: string` `length: 8` `required: Y` `description: 작성일자`
  - 형식 : yyyyMMdd
- purposeType `type: string` `length: 2` `required: Y` `description: 영수/청구`
  - `영수`
  - `청구`
  - `없음`
- supplyCostTotal `type: string` `length: 18` `required: Y` `description: 공급가액 합계`
  - 정수만 입력 가능(소수점 자동 절사)
- taxTotal `type: string` `length: 18` `required: Y` `description: 세액 합계`
  - 정수만 입력 가능(소수점 자동 절사)
- totalAmount `type: string` `length: 18` `required: Y` `description: 합계금액`
  - 정수만 입력 가능(소수점 자동 절사)
- cash `type: string` `length: 18` `required: N` `description: 현금`
- chkBill `type: string` `length: 18` `required: N` `description: 수표`
- credit `type: string` `length: 18` `required: N` `description: 외상`
- note `type: string` `length: 18` `required: N` `description: 어음`
- remark1 `type: string` `length: 150` `required: 조건부` `description: 비고1`
  - {invoiceeType}="외국인" 경우\
    외국인등록번호 또는 여권번호 필수 입력
- remark2 `type: string` `length: 150` `required: N` `description: 비고2`
- remark3 `type: string` `length: 150` `required: N` `description: 비고3`
- invoicerMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="정발행" 경우 필수
- invoicerCorpNum `type: string` `length: 10` `required: Y` `description: 공급자 사업자번호 ('-' 제외)`
- invoicerTaxRegID `type: string` `length: 4` `required: N` `description: 공급자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- invoicerCorpName `type: string` `length: 200` `required: Y` `description: 공급자 상호`
- invoicerCEOName `type: string` `length: 100` `required: Y` `description: 공급자 대표자 성명`
- invoicerAddr `type: string` `length: 300` `required: N` `description: 공급자 주소`
- invoicerBizType `type: string` `length: 100` `required: N` `description: 공급자 업태`
- invoicerBizClass `type: string` `length: 100` `required: N` `description: 공급자 종목`
- invoicerContactName `type: string` `length: 100` `required: N` `description: 공급자 담당자 성명`
- invoicerDeptName `type: string` `length: 100` `required: N` `description: 공급자 담당자 부서명`
- invoicerTEL `type: string` `length: 20` `required: N` `description: 공급자 담당자 연락처`
- invoicerHP `type: string` `length: 20` `required: N` `description: 공급자 담당자 휴대폰`
- invoicerEmail `type: string` `length: 100` `required: N` `description: 공급자 담당자 메일`
- invoicerSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="정발행" 경우\
    세금계산서 발행시점에 알림문자 전송
- invoiceeMgtKey `type: string` `length: 24` `required: 조건부` `description: 공급받는자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="역발행" 경우 필수
- invoiceeType `type: string` `length: -` `required: N` `description: 공급받는자 유형 (택 1)`
  - `사업자`
  - `개인`
  - `외국인`
- invoiceeCorpNum `type: string` `length: 13` `required: Y` `description: 공급받는자 등록번호 ('-' 제외)`
  - {invoiceeType}="사업자" 경우 사업자번호
  - {invoiceeType}="개인" 경우 주민등록번호
  - {invoiceeType}="외국인" 경우 "9999999999999"
- invoiceeTaxRegID `type: string` `length: 4` `required: N` `description: 공급받는자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- invoiceeCorpName `type: string` `length: 200` `required: Y` `description: 공급받는자 상호`
- invoiceeCEOName `type: string` `length: 100` `required: Y` `description: 공급받는자 대표자 성명`
- invoiceeAddr `type: string` `length: 300` `required: N` `description: 공급받는자 주소`
- invoiceeBizType `type: string` `length: 100` `required: N` `description: 공급받는자 업태`
- invoiceeBizClass `type: string` `length: 100` `required: N` `description: 공급받는자 종목`
- invoiceeContactName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 성명`
- invoiceeDeptName1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 부서명`
- invoiceeTEL1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 연락처`
- invoiceeHP1 `type: string` `length: 20` `required: N` `description: 공급받는자 담당자 휴대폰`
- invoiceeEmail1 `type: string` `length: 100` `required: N` `description: 공급받는자 담당자 메일`
- invoiceeSMSSendYN `type: boolean` `length: -` `required: N` `description: 공급받는자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급자 휴대폰번호 {invoicerHP}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="역발행" 경우\
    세금계산서 역발행 요청시점에 알림문자 전송
- trusteeMgtKey `type: string` `length: 24` `required: 조건부` `description: 수탁자 문서번호`
  - 문서 관리를 위해 파트너가 할당하는 고유 식별번호\
    영문 대소문자, 숫자, 특수문자('-', '\_')만 입력 가능
  - {issueType}="위수탁" 경우 필수
- trusteeCorpNum `type: string` `length: 10` `required: 조건부` `description: 수탁자 사업자번호 ('-' 제외)`
  - {issueType}="위수탁" 경우 필수
- trusteeTaxRegID `type: string` `length: 4` `required: N` `description: 수탁자 종사업장 식별번호`
  - 종사업장 식별번호는 4자리 숫자로만 구성
- trusteeCorpName `type: string` `length: 200` `required: 조건부` `description: 수탁자 상호`
  - {issueType}="위수탁" 경우 필수
- trusteeCEOName `type: string` `length: 100` `required: 조건부` `description: 수탁자 대표자 성명`
  - {issueType}="위수탁" 경우 필수
- trusteeAddr `type: string` `length: 300` `required: N` `description: 수탁자 주소`
- trusteeBizType `type: string` `length: 100` `required: N` `description: 수탁자 업태`
- trusteeBizClass `type: string` `length: 100` `required: N` `description: 수탁자 종목`
- trusteeContactName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 성명`
- trusteeDeptName `type: string` `length: 100` `required: N` `description: 수탁자 담당자 부서명`
- trusteeTEL `type: string` `length: 20` `required: N` `description: 수탁자 담당자 연락처`
- trusteeHP `type: string` `length: 20` `required: N` `description: 수탁자 담당자 휴대폰`
- trusteeEmail `type: string` `length: 100` `required: N` `description: 수탁자 담당자 메일`
- trusteeSMSSendYN `type: boolean` `length: -` `required: N` `description: 수탁자 알림문자 전송 여부`
  - `true`: 전송
  - `false`: 미전송 : 기본값
  - 수신자 : 공급받는자 휴대폰번호 {invoiceeHP1}\
    문자 전송 포인트가 차감(단, 전송실패 건은 환불)
  - {issueType}="위수탁" 경우\
    세금계산서 발행시점에 알림문자 전송
- modifyCode `type: number` `length: 1` `required: 조건부` `description: 수정 사유코드`
  - 수정세금계산서 작성시 필수 [\[참고\] 수정세금계산서](https://developers.popbill.com/guide/taxinvoice/introduction/modified-taxinvoice)
- orgNTSConfirmNum `type: string` `length: 24` `required: 조건부` `description: 당초 국세청승인번호`
  - 수정세금계산서 작성시 필수
- businessLicenseYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 사업자등록증 첨부 여부`
  - `true`: 첨부
  - `false`: 미첨부 : 기본값
  - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
- bankBookYN `type: boolean` `length: -` `required: N` `description: 팝빌에 등록된 통장사본 첨부 여부`
  - `true`: 첨부
  - `false`: 미첨부 : 기본값
  - 팝빌 사이트 또는 [\[GetSealURL - 인감 및 첨부문서 등록 팝업 URL\]](https://developers.popbill.com/api-reference/taxinvoice/api/etc#GetSealURL)을 이용하여 등록
- detailList `type: array` `length: -` `required: N` `description: 품목 상세정보`
  - 최대 : 99개
  - serialNum `type: number` `length: 2` `required: Y` `description: 일련번호`
  - 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: 수량`
    - -99999999.99 \~ 999999999.99\
      소수점 아래 2번째 자리까지 입력 가능
  - unitCost `type: string` `length: 18` `required: N` `description: 단가`
    - -99999999999999.99 \~ 999999999999999.99\
      소수점 아래 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: 비고`
- addContactList `type: array` `length: -` `required: N` `description: 공급받는자 추가담당자 정보`
  - 여러 담당자에게 발행 안내 메일을 보내야할 경우 사용\
    최대 : 5명
  - serialNum `type: number` `length: 1` `required: Y` `description: 일련번호`
  - contactName `type: string` `length: 100` `required: N` `description: 담당자 성명`
  - email `type: string` `length: 100` `required: Y` `description: 메일`
- memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`
- emailSubject `type: string` `length: 300` `required: N` `description: 세금계산서 발행 안내메일 제목`
  - 기본값 : 팝빌에서 설정한 안내메일 제목
- writeSpecification `type: boolean` `length: -` `required: N` `description: 거래명세서 동시작성 여부`
  - `true`: 사용
  - `false`: 미사용 : 기본값
  - 공급받는자 유형 {invoiceeType}="사업자" 경우만 가능
- forceIssue `type: boolean` `length: -` `required: N` `description: 지연발행 가능여부`
  - `true`: 가능
  - `false`: 불가능 : 기본값
- dealInvoiceKey `type: string` `length: 24` `required: N` `description: 거래명세서 문서번호`
  - 기본값 : 세금계산서 문서번호와 동일하게 할당
  - {writeSpecification}=true 경우 할당

**요청 예시**

```bash
curl --request POST \
--url 'https://{domain}/Taxinvoice' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--header 'X-HTTP-Method-Override: REQUEST' \
--data '{
    "issueType": "역발행",
    "taxType": "과세",
    "chargeDirection": "정과금",
    "writeDate": "20251016",
    "purposeType": "영수",
    "supplyCostTotal": "10000",
    "taxTotal": "1000",
    "totalAmount": "11000",
    "invoicerCorpNum": "1234567890",
    "invoicerCorpName": "공급자 상호",
    "invoicerCEOName": "공급자 대표자 성명",
    "invoiceeMgtKey": "TEST202510281800000",
    "invoiceeType": "사업자",
    "invoiceeCorpNum": "1234567890",
    "invoiceeCorpName": "공급받는자 상호",
    "invoiceeCEOName": "공급받는자 대표자 성명",
    "detailList": [
        {
            "serialNum": 1,
            "purchaseDT": "20251117",
            "itemName": "품명",
            "spec": "규격",
            "qty": "1",
            "unitCost": "10000",
            "supplyCost": "10000",
            "tax": "1000",
            "remark": "비고"
        }
    ],
    "addContactList": [
        {
            "serialNum": 1,
            "contactName": "담당자 성명",
            "email": "test@test.com"
        }
    ]
}'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "발행요청 완료"
}
```

## 9. Request - 역발행 요청

| HTTP Method | 테스트(Sandbox)                                                 | 운영(Production)                                          |
| ----------- | ------------------------------------------------------------ | ------------------------------------------------------- |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice/BUY/{MgtKey}> | <https://popbill.linkhub.co.kr/Taxinvoice/BUY/{MgtKey}> |

- 공급받는자가 저장된 역발행 세금계산서를 공급자에게 송부하여 발행 요청합니다.
- 역발행 요청된 세금계산서는 “(역)발행대기” 상태이며, 공급자가 팝빌 사이트 또는 API를 호출하여 발행한 경우에만 국세청으로 전송됩니다.
- 공급자는 팝빌 사이트의 “매출 발행 대기함”에서 발행대기 상태의 역발행 세금계산서를 확인할 수 있습니다.

> 역발행 요청시 공급자에게 역발행 요청 메일이 발송됩니다.\
> 공급자가 역발행 세금계산서 발행시 포인트가 과금됩니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `REQUEST`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**Path 파라미터**

- MgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`

**요청 본문**

- memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice/BUY/{mgtKey}' \
  --header 'Authorization: Bearer {token}' \
  --header 'X-HTTP-Method-Override: REQUEST' \
  --header 'Content-Type: application/json' \
  --data '{
    "memo": "메모"
  }'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "(역)발행요청 완료"
}
```

## 10. CancelRequest - 역발행 요청취소

| HTTP Method | 테스트(Sandbox)                                                 | 운영(Production)                                          |
| ----------- | ------------------------------------------------------------ | ------------------------------------------------------- |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice/BUY/{MgtKey}> | <https://popbill.linkhub.co.kr/Taxinvoice/BUY/{MgtKey}> |

- 공급자가 요청받은 역발행 세금계산서를 발행하기 전, 공급받는자가 역발행요청을 취소합니다.
- API 호출시 “취소” 상태로 변경되고, 해당 역발행 세금계산서는 공급자에 의해 발행 될 수 없습니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `CANCELREQUEST`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**Path 파라미터**

- MgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`

**요청 본문**

- memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice/BUY/{mgtKey}' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --header 'X-HTTP-Method-Override: CANCELREQUEST' \
  --data '{
    "memo": "메모"
  }'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "(역)발행요청 취소 완료"
}
```

## 11. Refuse - 역발행 요청거부

| HTTP Method | 테스트(Sandbox)                                                  | 운영(Production)                                           |
| ----------- | ------------------------------------------------------------- | -------------------------------------------------------- |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice/SELL/{MgtKey}> | <https://popbill.linkhub.co.kr/Taxinvoice/SELL/{MgtKey}> |

- 공급자가 공급받는자에게 역발행 요청 받은 세금계산서의 발행을 거부합니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Content-Type `required: Y` `description: 요청 본문 형식`
  - `application/json`
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `REFUSE`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**Path 파라미터**

- MgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`

**요청 본문**

- memo `type: string` `length: 200` `required: N` `description: 세금계산서 상태 이력을 관리하기 위한 메모`

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice/SELL/{MgtKey}' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --header 'X-HTTP-Method-Override: REFUSE' \
  --data '{
    "memo": "메모"
  }'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "역발행 거부 완료"
}
```

## 12. Delete - 삭제

| HTTP Method | 테스트(Sandbox)                                                          | 운영(Production)                                                   |
| ----------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> | <https://popbill.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> |

- 삭제 가능한 상태의 세금계산서를 삭제합니다.\
  ※ 삭제 가능한 상태: “임시저장”, “발행취소”, “역발행거부”, “역발행취소”, “전송실패”

> 삭제 처리된 세금계산서의 문서번호는 재사용이 가능합니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization "_blank")
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `DELETE`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**Path 파라미터**

- MgtKeyType `type: string` `length: -` `required: Y` `description: 문서번호 유형 (택 1)`
  - `SELL`: 매출
  - `BUY`: 매입
  - `TRUSTEE`: 위수탁
- MgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice/{MgtKeyType}/{MgtKey}' \
  --header 'Authorization: Bearer {token}' \
  --header 'X-HTTP-Method-Override: DELETE'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "삭제 완료"
}
```

## 13. SendToNTS - 국세청 즉시 전송

| HTTP Method | 테스트(Sandbox)                                                          | 운영(Production)                                                   |
| ----------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- |
| POST        | <https://popbill-test.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> | <https://popbill.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}> |

- “발행완료” 상태의 전자세금계산서를 국세청에 즉시 전송하며, API 호출 후 최대 30분 이내에 전송 처리가 완료됩니다.

> [\[GetInfo – 상태확인\]](https://developers.popbill.com/api-reference/taxinvoice/api/info#GetInfo) API 또는 [\[Webhook\]](https://developers.popbill.com/api-reference/taxinvoice/webhook/introduction)을 통해 국세청 전송 결과를 확인 합니다.

### Request

**요청 헤더**

- Authorization `required: Y` `description: 인증 토큰`
  - [\[참고\] 인증 및 헤더 설정](https://developers.popbill.com/api-reference/taxinvoice/getting-started/authorization)
- Accept-Language `required: N` `description: 응답 언어 설정`
  - `ko-KR`: 기본값
  - `en-US`
- Accept-Encoding `required: N` `description: 응답 압축 방식`
  - `gzip`
- X-HTTP-Method-Override `required: Y` `description: 요청 메서드 재정의`
  - `NTS`
- X-PB-UserID `required: N` `description: 팝빌회원 아이디`

**Path 파라미터**

- MgtKeyType `type: string` `length: -` `required: Y` `description: 문서번호 유형 (택 1)`
  - `SELL`: 매출
  - `TRUSTEE`: 위수탁
- MgtKey `type: string` `length: 24` `required: Y` `description: 파트너가 할당한 문서번호`

**요청 예시**

```bash
curl --request POST \
  --url 'https://{domain}/Taxinvoice/{MgtKeyType}/{MgtKey}' \
  --header 'Authorization: Bearer {token}' \
  --header 'X-HTTP-Method-Override: NTS'
```

### Response

**응답 본문**

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

**응답 예시**

```json
{
    "code": 1,
    "message": "전송요청 완료"
}
```
