전자(세금)계산서 역발행
전체 품목의 금액 합이 발행 금액이 됩니다. taxType에 따라 품목의 세액(tax)을 전달해주세요.
금액 계산 방식은 정발행과 동일합니다. 발행 금액 계산 가이드와 이메일 승인 역발행 | 간편 승인 역발행을 참고하세요.
요청의 텍스트에서 보이지 않는 문자는 자동으로 지웁니다. 탭·줄바꿈·캐리지리턴은 유지합니다. 이모지처럼 U+FFFF를 넘는 보충 문자는 400으로 거부합니다. 지원하지 않는 문자를 참고하세요.
POST
/
v1
/
taxInvoices
/
issueRequest
전자(세금)계산서 역발행
curl --request POST \
--url https://xapi.bolta.io/v1/taxInvoices/issueRequest \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"date": "2026-05-27",
"purpose": "CLAIM",
"taxType": "ZERO_RATE",
"supplier": {
"identificationNumber": "1234567890",
"taxRegistrationId": null,
"organizationName": "공급자 상호",
"representativeName": "공급자대표",
"address": null,
"businessItem": "소프트웨어",
"businessType": "서비스업",
"manager": {
"email": "supplier@example.com",
"name": "공급자담당자",
"telephone": null
}
},
"supplied": {
"identificationNumber": "0987654321",
"taxRegistrationId": null,
"organizationName": "공급받는자 상호",
"representativeName": "공급받는자대표",
"address": null,
"businessItem": null,
"businessType": null,
"managers": [
{
"email": "recipient@example.com",
"name": "공급받는자담당자",
"telephone": null
}
]
},
"items": [
{
"date": "2026-05-27",
"name": "영세율 품목",
"unitPrice": null,
"quantity": null,
"supplyCost": 100000,
"tax": 0,
"specification": null,
"description": null
}
],
"description": null
}
'import requests
url = "https://xapi.bolta.io/v1/taxInvoices/issueRequest"
payload = {
"date": "2026-05-27",
"purpose": "CLAIM",
"taxType": "ZERO_RATE",
"supplier": {
"identificationNumber": "1234567890",
"taxRegistrationId": None,
"organizationName": "공급자 상호",
"representativeName": "공급자대표",
"address": None,
"businessItem": "소프트웨어",
"businessType": "서비스업",
"manager": {
"email": "supplier@example.com",
"name": "공급자담당자",
"telephone": None
}
},
"supplied": {
"identificationNumber": "0987654321",
"taxRegistrationId": None,
"organizationName": "공급받는자 상호",
"representativeName": "공급받는자대표",
"address": None,
"businessItem": None,
"businessType": None,
"managers": [
{
"email": "recipient@example.com",
"name": "공급받는자담당자",
"telephone": None
}
]
},
"items": [
{
"date": "2026-05-27",
"name": "영세율 품목",
"unitPrice": None,
"quantity": None,
"supplyCost": 100000,
"tax": 0,
"specification": None,
"description": None
}
],
"description": None
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
date: '2026-05-27',
purpose: 'CLAIM',
taxType: 'ZERO_RATE',
supplier: {
identificationNumber: '1234567890',
taxRegistrationId: null,
organizationName: '공급자 상호',
representativeName: '공급자대표',
address: null,
businessItem: '소프트웨어',
businessType: '서비스업',
manager: {email: 'supplier@example.com', name: '공급자담당자', telephone: null}
},
supplied: {
identificationNumber: '0987654321',
taxRegistrationId: null,
organizationName: '공급받는자 상호',
representativeName: '공급받는자대표',
address: null,
businessItem: null,
businessType: null,
managers: [{email: 'recipient@example.com', name: '공급받는자담당자', telephone: null}]
},
items: [
{
date: '2026-05-27',
name: '영세율 품목',
unitPrice: null,
quantity: null,
supplyCost: 100000,
tax: 0,
specification: null,
description: null
}
],
description: null
})
};
fetch('https://xapi.bolta.io/v1/taxInvoices/issueRequest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://xapi.bolta.io/v1/taxInvoices/issueRequest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'date' => '2026-05-27',
'purpose' => 'CLAIM',
'taxType' => 'ZERO_RATE',
'supplier' => [
'identificationNumber' => '1234567890',
'taxRegistrationId' => null,
'organizationName' => '공급자 상호',
'representativeName' => '공급자대표',
'address' => null,
'businessItem' => '소프트웨어',
'businessType' => '서비스업',
'manager' => [
'email' => 'supplier@example.com',
'name' => '공급자담당자',
'telephone' => null
]
],
'supplied' => [
'identificationNumber' => '0987654321',
'taxRegistrationId' => null,
'organizationName' => '공급받는자 상호',
'representativeName' => '공급받는자대표',
'address' => null,
'businessItem' => null,
'businessType' => null,
'managers' => [
[
'email' => 'recipient@example.com',
'name' => '공급받는자담당자',
'telephone' => null
]
]
],
'items' => [
[
'date' => '2026-05-27',
'name' => '영세율 품목',
'unitPrice' => null,
'quantity' => null,
'supplyCost' => 100000,
'tax' => 0,
'specification' => null,
'description' => null
]
],
'description' => null
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://xapi.bolta.io/v1/taxInvoices/issueRequest"
payload := strings.NewReader("{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급자 상호\",\n \"representativeName\": \"공급자대표\",\n \"address\": null,\n \"businessItem\": \"소프트웨어\",\n \"businessType\": \"서비스업\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"공급자담당자\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급받는자 상호\",\n \"representativeName\": \"공급받는자대표\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"공급받는자담당자\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"영세율 품목\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://xapi.bolta.io/v1/taxInvoices/issueRequest")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급자 상호\",\n \"representativeName\": \"공급자대표\",\n \"address\": null,\n \"businessItem\": \"소프트웨어\",\n \"businessType\": \"서비스업\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"공급자담당자\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급받는자 상호\",\n \"representativeName\": \"공급받는자대표\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"공급받는자담당자\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"영세율 품목\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://xapi.bolta.io/v1/taxInvoices/issueRequest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급자 상호\",\n \"representativeName\": \"공급자대표\",\n \"address\": null,\n \"businessItem\": \"소프트웨어\",\n \"businessType\": \"서비스업\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"공급자담당자\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급받는자 상호\",\n \"representativeName\": \"공급받는자대표\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"공급받는자담당자\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"영세율 품목\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}"
response = http.request(request)
puts response.read_body{
"issuanceKey": "8D529FAD3EBAE050B79CE943CCC7CEDE"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}인증
API 키를 Base64 인코딩하여 전달합니다. Username에 API 키를 입력하고 Password는 비워두세요.
본문
application/json
작성일자
예시:
"2024-08-24"
RECEIPT: 영수, CLAIM: 청구
사용 가능한 옵션:
RECEIPT, CLAIM TAXABLE: 과세(전자세금계산서), ZERO_RATE: 영세율(전자세금계산서), TAX_FREE: 면세(계산서). TAXABLE은 품목의 세액이 null일 수 없고, ZERO_RATE은 모든 품목의 세액이 0이어야 합니다. TAX_FREE는 모든 품목의 세액이 null이거나 생략되어야 합니다.
사용 가능한 옵션:
TAXABLE, ZERO_RATE, TAX_FREE 예시:
"TAXABLE"
"ZERO_RATE"
"TAX_FREE"
공급자
Show child attributes
Show child attributes
공급받는자
Show child attributes
Show child attributes
품목
Required array length:
1 - 16 elementsShow child attributes
Show child attributes
위수탁 역발행은 지원하지 않습니다. 필드를 생략하거나 null을 전달하세요.
세금계산서 비고
Required string length:
1 - 150응답
발행 요청에 대한 식별번호. 포맷과 길이는 바뀔 수 있으므로 유의하시기 바랍니다.
예시:
"8D529FAD3EBAE050B79CE943CCC7CEDE"
⌘I
전자(세금)계산서 역발행
curl --request POST \
--url https://xapi.bolta.io/v1/taxInvoices/issueRequest \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"date": "2026-05-27",
"purpose": "CLAIM",
"taxType": "ZERO_RATE",
"supplier": {
"identificationNumber": "1234567890",
"taxRegistrationId": null,
"organizationName": "공급자 상호",
"representativeName": "공급자대표",
"address": null,
"businessItem": "소프트웨어",
"businessType": "서비스업",
"manager": {
"email": "supplier@example.com",
"name": "공급자담당자",
"telephone": null
}
},
"supplied": {
"identificationNumber": "0987654321",
"taxRegistrationId": null,
"organizationName": "공급받는자 상호",
"representativeName": "공급받는자대표",
"address": null,
"businessItem": null,
"businessType": null,
"managers": [
{
"email": "recipient@example.com",
"name": "공급받는자담당자",
"telephone": null
}
]
},
"items": [
{
"date": "2026-05-27",
"name": "영세율 품목",
"unitPrice": null,
"quantity": null,
"supplyCost": 100000,
"tax": 0,
"specification": null,
"description": null
}
],
"description": null
}
'import requests
url = "https://xapi.bolta.io/v1/taxInvoices/issueRequest"
payload = {
"date": "2026-05-27",
"purpose": "CLAIM",
"taxType": "ZERO_RATE",
"supplier": {
"identificationNumber": "1234567890",
"taxRegistrationId": None,
"organizationName": "공급자 상호",
"representativeName": "공급자대표",
"address": None,
"businessItem": "소프트웨어",
"businessType": "서비스업",
"manager": {
"email": "supplier@example.com",
"name": "공급자담당자",
"telephone": None
}
},
"supplied": {
"identificationNumber": "0987654321",
"taxRegistrationId": None,
"organizationName": "공급받는자 상호",
"representativeName": "공급받는자대표",
"address": None,
"businessItem": None,
"businessType": None,
"managers": [
{
"email": "recipient@example.com",
"name": "공급받는자담당자",
"telephone": None
}
]
},
"items": [
{
"date": "2026-05-27",
"name": "영세율 품목",
"unitPrice": None,
"quantity": None,
"supplyCost": 100000,
"tax": 0,
"specification": None,
"description": None
}
],
"description": None
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
date: '2026-05-27',
purpose: 'CLAIM',
taxType: 'ZERO_RATE',
supplier: {
identificationNumber: '1234567890',
taxRegistrationId: null,
organizationName: '공급자 상호',
representativeName: '공급자대표',
address: null,
businessItem: '소프트웨어',
businessType: '서비스업',
manager: {email: 'supplier@example.com', name: '공급자담당자', telephone: null}
},
supplied: {
identificationNumber: '0987654321',
taxRegistrationId: null,
organizationName: '공급받는자 상호',
representativeName: '공급받는자대표',
address: null,
businessItem: null,
businessType: null,
managers: [{email: 'recipient@example.com', name: '공급받는자담당자', telephone: null}]
},
items: [
{
date: '2026-05-27',
name: '영세율 품목',
unitPrice: null,
quantity: null,
supplyCost: 100000,
tax: 0,
specification: null,
description: null
}
],
description: null
})
};
fetch('https://xapi.bolta.io/v1/taxInvoices/issueRequest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://xapi.bolta.io/v1/taxInvoices/issueRequest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'date' => '2026-05-27',
'purpose' => 'CLAIM',
'taxType' => 'ZERO_RATE',
'supplier' => [
'identificationNumber' => '1234567890',
'taxRegistrationId' => null,
'organizationName' => '공급자 상호',
'representativeName' => '공급자대표',
'address' => null,
'businessItem' => '소프트웨어',
'businessType' => '서비스업',
'manager' => [
'email' => 'supplier@example.com',
'name' => '공급자담당자',
'telephone' => null
]
],
'supplied' => [
'identificationNumber' => '0987654321',
'taxRegistrationId' => null,
'organizationName' => '공급받는자 상호',
'representativeName' => '공급받는자대표',
'address' => null,
'businessItem' => null,
'businessType' => null,
'managers' => [
[
'email' => 'recipient@example.com',
'name' => '공급받는자담당자',
'telephone' => null
]
]
],
'items' => [
[
'date' => '2026-05-27',
'name' => '영세율 품목',
'unitPrice' => null,
'quantity' => null,
'supplyCost' => 100000,
'tax' => 0,
'specification' => null,
'description' => null
]
],
'description' => null
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://xapi.bolta.io/v1/taxInvoices/issueRequest"
payload := strings.NewReader("{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급자 상호\",\n \"representativeName\": \"공급자대표\",\n \"address\": null,\n \"businessItem\": \"소프트웨어\",\n \"businessType\": \"서비스업\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"공급자담당자\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급받는자 상호\",\n \"representativeName\": \"공급받는자대표\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"공급받는자담당자\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"영세율 품목\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://xapi.bolta.io/v1/taxInvoices/issueRequest")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급자 상호\",\n \"representativeName\": \"공급자대표\",\n \"address\": null,\n \"businessItem\": \"소프트웨어\",\n \"businessType\": \"서비스업\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"공급자담당자\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급받는자 상호\",\n \"representativeName\": \"공급받는자대표\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"공급받는자담당자\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"영세율 품목\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://xapi.bolta.io/v1/taxInvoices/issueRequest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급자 상호\",\n \"representativeName\": \"공급자대표\",\n \"address\": null,\n \"businessItem\": \"소프트웨어\",\n \"businessType\": \"서비스업\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"공급자담당자\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"공급받는자 상호\",\n \"representativeName\": \"공급받는자대표\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"공급받는자담당자\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"영세율 품목\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}"
response = http.request(request)
puts response.read_body{
"issuanceKey": "8D529FAD3EBAE050B79CE943CCC7CEDE"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}