6. Custom Functions
The following APIs are for the customized process only. It is required to notify partner center before implementing these functions.
6.1. Register - Draft
POST
https://popbill-test.linkhub.co.kr/Taxinvoice
POST
https://popbill.linkhub.co.kr/Taxinvoice
- This API saves the e-Tax invoice data with “Saved” status in POPBiLL server.
- To send an e-Tax invoice to the NTS, an e-Tax invoice with a “saved” status must be proceeded as an “issued” status via [Issue- Issue an e-Tax invoice] API.
- To implement the file attachment function, please refer to the following sequences as [Register – Save an e-Tax Invoice] → [AttachFile – Attach a file within an e-Tax invoice] → [Issue – Issue an e-Tax invoice].
Request
Request Headers
| No. | Field | Mandatory | Description |
|---|---|---|---|
| Authorization | Y | Auth Token | |
| Content-Type | Y | Request body format application/json |
|
| Accept-Language | N |
Response language
ko-KR: default
en-US
|
|
| Accept-Encoding | N | Response compression method gzip |
|
| X-PB-UserID | N | User’s POPBiLL ID |
Request Body
| No. | Field | Type | Length | Mandatory | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| issueType | string | 3 | Y |
Issuance type
정발행general issuance
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| taxType | string | 2 | Y |
Taxation type
과세taxable
영세zero-rated
면세exempted
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| chargeDirection | string | 3 | Y |
Charging Direction
정과금Paid by seller
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| serialNum | string | 30 | N | Serial number | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| kwon | number | 4 | N |
Volume of a book
integer values(+/-) only
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ho | number | 4 | N |
Number of a book
integer values(+/-) only
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| writeDate | string | 8 | Y |
Date of preparation
format : yyyyMMdd
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| purposeType | string | 8 | Y |
Payments received or not
영수payment received
청구payment not received
없음none
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| supplyCostTotal | string | 18 | Y |
Sum of supply values
integer values(+/-) only
decimals will be automatically truncated |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| taxTotal | string | 18 | Y |
Sum of tax amount
integer values(+/-) only
decimals will be automatically truncated |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| totalAmount | string | 18 | Y |
Total amount
integer values(+/-) only
decimals will be automatically truncated |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cash | string | 18 | Y | Payment method – ‘cash’ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| chkBill | string | 18 | Y | Payment method – ‘check’ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| credit | string | 18 | Y | Payment method – ‘credit’ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| note | string | 18 | Y | Payment method – ‘note’ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| remark1 | string | 150 | Conditional | 1st Remark | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| remark2 | string | 150 | N | 2nd Remark | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| remark3 | string | 150 | N | 3rd Remark | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerMgtKey | string | 24 | Y |
[Seller] document ID
unique value that can contain alphanumeric characters and special characters (‘-’, ‘_’)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerCorpNum | string | 10 | Y |
[Seller] business registration number 10 digits except a hyphen(‘-’)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerTaxRegID | string | 4 | N |
[Seller] identification number of a branch place
4 digits value
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerCorpName | string | 200 | Y | [Seller] company name | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerCEOName | string | 100 | Y | [Seller] CEO name | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerAddr | string | 300 | N | [Seller] company address | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerBizType | string | 100 | N | [Seller] type of business | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerBizClass | string | 100 | N | [Seller] items of business | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerContactName | string | 100 | N | [Seller] name of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerDeptName | string | 100 | N | [Seller] department of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerTEL | string | 20 | N | [Seller] contact number of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerHP | string | 20 | N | [Seller] cell phone number of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoicerEmail | string | 100 | N | [Seller] email of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeType | string | - | N |
[Buyer] type of customer
사업자business proprietor
개인individual
외국인foreigner
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeCorpNum | string | 13 | Y |
[Buyer] business registration number
- if {invoiceeType} = 사업자(business proprietor type) : business registration number, 10 digits except a hyphen(‘-’) - if {invoiceeType} = 개인(individual type) : resident registration number, 13 digits except a hyphen(‘-’) - if {invoiceeType} = 외국인(foreigner type) : 9999999999999 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeTaxRegID | string | 4 | N |
[Buyer] identification number of a branch place
4 digits
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeCorpName | string | 200 | Y | [Buyer] company name | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeCEOName | string | 100 | Y | [Buyer] CEO name | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeAddr | string | 300 | N | [Buyer] company address | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeBizType | string | 100 | N | [Buyer] type of business | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeBizClass | string | 100 | N | [Buyer] items of business | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeContactName1 | string | 100 | N | [Buyer] name of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeDeptName1 | string | 100 | N | [Buyer] department of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeTEL1 | string | 20 | N | [Buyer] contact number of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeHP1 | string | 20 | N | [Buyer] telephone number of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| invoiceeEmail1 | string | 100 | N | [Buyer] email of the person in charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifyCode | number | 1 | Conditional |
Reason for revocation
Refer to [Revised Invoice]
mandatory when writing a revised invoice
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| orgNTSConfirmNum | string | 24 | Conditional |
NTS confirmation number of the original tax invoice
mandatory when writing a revised invoice
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| detailList | array | - | N |
Detailed list of items
maximum : 99
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| addContactList | array | - | N |
Additional person in charge information of the buyer
use this when sending notification mails to multiple persons in charge
maximum : 5 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| memo | string | 200 | N | Memo for user’s convenience | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| writeSpecification | boolean | - | N |
Whether a user uses concurrent creation of a transaction details or not
truedo
falsedo not (default)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Request Example
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
Response Body
| No. | Field | Type | Length | Description |
|---|---|---|---|---|
| code | number | - | API response code | |
| message | string | - | API response message |
Response Example
{
"code": 1,
"message": "등록 완료"
}
6.2. AttachFile - File attachment
POST
https://popbill-test.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}/Files
POST
https://popbill.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}/Files
- This API attaches a single file to an e-Tax invoice with “Saved” status. (Maximum : 5 files)
Request
Request Headers
| No. | Field | Mandatory | Description |
|---|---|---|---|
| Authorization | Y | Auth Token | |
| Content-Type | Y | Request body format multipart/form-data |
|
| Accept-Language | N |
Response language
ko-KR: default
en-US
|
|
| Accept-Encoding | N | Response compression method gzip |
|
| X-PB-UserID | N | User’s POPBiLL ID |
Path Parameters
| No. | Field | Type | Length | Mandatory | Description |
|---|---|---|---|---|---|
| MgtKeyType | string | - | Y |
Type of the e-Tax invoice
SELLSales
|
|
| MgtKey | string | 24 | Y | Document ID |
Request Body
| No. | Field | Type | Length | Mandatory | Description |
|---|---|---|---|---|---|
| Filedata | file | - | Y | Data of an attachment file |
Request Example
curl --request POST \
--url 'https://{domain}/Taxinvoice/{MgtKeyType}/{MgtKey}/Files' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: multipart/form-data' \
--form 'Filedata=@"/path/test.jpg"'
Response
Response Body
| No. | Field | Type | Length | Description |
|---|---|---|---|---|
| code | number | - | API response code | |
| message | string | - | API response message |
Response Example
{
"code": 1,
"message": "첨부 완료"
}
6.3. Issue - Issuance
POST
https://popbill-test.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}
POST
https://popbill.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}
- This API issues (digitally signs) an e-Tax invoice with “Saved” status and proceed it as “Issued”.
Request
Request Headers
| No. | Field | Mandatory | Description |
|---|---|---|---|
| Authorization | Y | Auth Token | |
| Content-Type | Y | Request body format application/json |
|
| Accept-Language | N |
Response language
ko-KR: default
en-US
|
|
| Accept-Encoding | N | Response compression method gzip |
|
| X-HTTP-Method-Override | Y | Request method override ISSUE |
|
| X-PB-UserID | N | User’s POPBiLL ID |
Path Parameters
| No. | Field | Type | Length | Mandatory | Description |
|---|---|---|---|---|---|
| MgtKeyType | string | - | Y |
Type of the e-Tax invoice
SELLSales
|
|
| MgtKey | string | 24 | Y | Document ID |
Request Body
| No. | Field | Type | Length | Mandatory | Description |
|---|---|---|---|---|---|
| memo | string | 200 | N | Memo for user’s convenience | |
| emailSubject | string | 300 | N |
Title of a notification mail sent to a buyer
default : title assigned by POPBiLL
|
|
| forceIssue | boolean | - | N |
Whether a user permits to issue an overdue e-Tax invoice or not
truedo
falsedo not (default)
|
Request Example
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
Response Body
| No. | Field | Type | Length | Description |
|---|---|---|---|---|
| code | number | - | API response code | |
| message | string | - | API response message | |
| ntsConfirmNum | string | 24 |
NTS confirmation number
POPBiLL automatically assigns this when issuing a tax invoice.
|
Response Example
{
"code": 1,
"message": "발행 완료",
"ntsConfirmNum": "20251016888888880000004c",
"issueDT": null
}
6.4. GetFiles - Check attached file list
GET
https://popbill-test.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}/Files
GET
https://popbill.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}/Files
- This API returns a list of attachments within a single e-Tax invoice.
Request
Request Headers
| No. | Field | Mandatory | Description |
|---|---|---|---|
| Authorization | Y | Auth Token | |
| Accept-Language | N |
Response language
ko-KR: default
en-US
|
|
| Accept-Encoding | N | Response compression method gzip |
|
| X-PB-UserID | N | User’s POPBiLL ID |
Path Parameters
| No. | Field | Type | Length | Mandatory | Description |
|---|---|---|---|---|---|
| MgtKeyType | string | - | Y |
Type of the e-Tax invoice
SELLSales
|
|
| MgtKey | string | 24 | Y | Document ID |
Request Example
curl --request GET \
--url 'https://{domain}/Taxinvoice/{MgtKeyType}/{MgtKey}/Files' \
--header 'Authorization: Bearer {token}'
Response
Response Body
| No. | Field | Type | Length | Description |
|---|---|---|---|---|
| serialNum | number | 1 |
Serial number
item to manage the list of attachment files
|
|
| attachedFile | string | 255 |
File ID
It is required to enter this value when calling [DeleteFile - Delete an attachment within an e-Tax invoice] API.
|
|
| displayName | string | 255 | Name of an attachment file | |
| regDT | string | 14 |
Date and time of attachment creation
format : yyyyMMddHHmmss
|
Response Example
[
{
"displayName": "test.jpg",
"serialNum": 2,
"attachedFile": "B8930D66-6684-4B25-ABA0-3BD4E848ECAF.PBF",
"regDT": "20251022203916"
}
]
6.5. DeleteFile - Delete attached file
POST
https://popbill-test.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}/Files/{FileID}
POST
https://popbill.linkhub.co.kr/Taxinvoice/{MgtKeyType}/{MgtKey}/Files/{FileID}
- This API deletes a single attachment of an e-Tax invoice with “Saved” status.
Request
Request Headers
| No. | Field | Mandatory | Description |
|---|---|---|---|
| Authorization | Y | Auth Token | |
| Accept-Language | N |
Response language
ko-KR: default
en-US
|
|
| Accept-Encoding | N | Response compression method gzip |
|
| X-HTTP-Method-Override | Y | Request method override DELETE |
|
| X-PB-UserID | N | User’s POPBiLL ID |
Path Parameters
| No. | Field | Type | Length | Mandatory | Description |
|---|---|---|---|---|---|
| MgtKeyType | string | - | Y |
Type of the e-Tax invoice
SELLSales
|
|
| MgtKey | string | 24 | Y | Document ID | |
| FileID | string | 255 | Y |
Unique identification number assigned by POPBiLL system to manage attachment files.
to find this, refer to the returned value of the AttachedFile via [GetFiles – View the list of attachments within an e-Tax invoice] API.
|
Request Example
curl --request POST \
--url 'https://{domain}/Taxinvoice/{MgtKeyType}/{MgtKey}/Files/{FileID}' \
--header 'Authorization: Bearer {token}' \
--header 'X-HTTP-Method-Override: DELETE'
Response
Response Body
| No. | Field | Type | Length | Description |
|---|---|---|---|---|
| code | number | - |
API response code
1Success
|
|
| message | string | - | API response message |
Response Example
{
"code": 1,
"message": "첨부삭제 완료"
}
