사업자등록증 인식과 진위확인
사업자등록증 파일 한 건을 읽고, 읽은 사업자등록번호, 첫 번째 대표자명, 개업일로 국세청 진위확인을 합니다. 발급자 등록과 공동인증서가 필요 없고, 요청자 관리번호도 쓰지 않습니다. 처리에 최대 약 45초가 걸리므로 클라이언트 읽기 타임아웃은 60초 이상으로 잡으세요.
테스트 키는 올린 파일과 관계없이 고정 결과를 돌려줍니다. 사업자등록증 인식과 진위확인 가이드
POST
/
v1
/
businessRegistrationCertificates:extract
사업자등록증 인식과 진위확인
curl --request POST \
--url https://xapi.bolta.io/v1/businessRegistrationCertificates:extract \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file'import requests
url = "https://xapi.bolta.io/v1/businessRegistrationCertificates:extract"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Basic <encoded-value>'}};
options.body = form;
fetch('https://xapi.bolta.io/v1/businessRegistrationCertificates:extract', 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/businessRegistrationCertificates:extract",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: multipart/form-data"
],
]);
$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/businessRegistrationCertificates:extract"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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/businessRegistrationCertificates:extract")
.header("Authorization", "Basic <encoded-value>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://xapi.bolta.io/v1/businessRegistrationCertificates:extract")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"certificate": {
"businessRegistrationNumber": "1000000014",
"organizationName": "(주)볼타테스트",
"representativeNames": [
"김볼타"
],
"openedOn": "2020-01-01",
"address": "서울특별시 테스트구 가상로 1",
"industries": [
{
"businessType": "정보통신업",
"businessItem": "응용 소프트웨어 개발 및 공급업"
}
],
"corporationRegistrationNumber": "1101110000000",
"taxRegistrationId": null
},
"inputQuality": "SUFFICIENT",
"validation": "MATCHED"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}인증
API 키 뒤에 콜론을 붙여 Base64로 인코딩해 헤더에 넣으세요. Username에 API 키를 입력하고 Password는 비워두세요.
본문
multipart/form-data
사업자등록증 인식과 진위확인 요청
사업자등록증 파일 한 개. PDF, JPG, PNG, WebP 형식, 5MB(5,242,880바이트) 이하, PDF는 5쪽 이하입니다.
응답
인식 성공. validation이 UNAVAILABLE이면 포인트를 차감하지 않습니다.
사업자등록증 인식과 진위확인 결과. 모든 필드를 항상 포함합니다.
문서에서 읽은 값. 읽지 못한 값은 null, 목록은 빈 배열입니다. businessRegistrationNumber는 항상 담고, 읽지 못하면 400 INVALID_FILE을 반환합니다.
Show child attributes
Show child attributes
이미지 해상도 판정. LOW_RESOLUTION이면 더 큰 이미지나 PDF로 다시 받으세요.
사용 가능한 옵션:
SUFFICIENT, LOW_RESOLUTION 사업자등록번호, 첫 번째 대표자명, 개업일의 국세청 진위확인 결과. UNAVAILABLE은 국세청 장애로 진위확인을 하지 못한 결과이며 포인트를 차감하지 않습니다.
사용 가능한 옵션:
MATCHED, NOT_MATCHED, UNAVAILABLE 사업자등록증 인식과 진위확인
curl --request POST \
--url https://xapi.bolta.io/v1/businessRegistrationCertificates:extract \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file'import requests
url = "https://xapi.bolta.io/v1/businessRegistrationCertificates:extract"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Basic <encoded-value>'}};
options.body = form;
fetch('https://xapi.bolta.io/v1/businessRegistrationCertificates:extract', 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/businessRegistrationCertificates:extract",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: multipart/form-data"
],
]);
$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/businessRegistrationCertificates:extract"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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/businessRegistrationCertificates:extract")
.header("Authorization", "Basic <encoded-value>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://xapi.bolta.io/v1/businessRegistrationCertificates:extract")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"certificate": {
"businessRegistrationNumber": "1000000014",
"organizationName": "(주)볼타테스트",
"representativeNames": [
"김볼타"
],
"openedOn": "2020-01-01",
"address": "서울특별시 테스트구 가상로 1",
"industries": [
{
"businessType": "정보통신업",
"businessItem": "응용 소프트웨어 개발 및 공급업"
}
],
"corporationRegistrationNumber": "1101110000000",
"taxRegistrationId": null
},
"inputQuality": "SUFFICIENT",
"validation": "MATCHED"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}