> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bolta.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 사업자등록증 인식과 진위확인

> 사업자등록증 파일 한 건을 읽고, 읽은 사업자등록번호, 첫 번째 대표자명, 개업일로 국세청 진위확인을 합니다. 발급자 등록과 공동인증서가 필요 없고, 요청자 관리번호도 쓰지 않습니다. 처리에 최대 약 45초가 걸리므로 클라이언트 읽기 타임아웃은 60초 이상으로 잡으세요.

테스트 키는 올린 파일과 관계없이 고정 결과를 돌려줍니다. [사업자등록증 인식과 진위확인 가이드](/docs/api-introduction/business-registration-certificate)




## OpenAPI

````yaml /openapi.yaml post /v1/businessRegistrationCertificates:extract
openapi: 3.1.0
info:
  title: 볼타 API
  description: >
    볼타 전자세금계산서 API입니다. [API 소개](/docs/api-introduction/overview) | [인증
    가이드](/docs/api-introduction/authentication) | [사용
    사례](/docs/api-introduction/usecase-b2b)
  version: 1.0.0
servers:
  - url: https://xapi.bolta.io
    description: 볼타 API 서버
security:
  - basicAuth: []
tags:
  - name: 세금계산서 발행
    description: >
      전자(세금)계산서를 정발행하거나 수정발행합니다. [발행 금액
      계산](/docs/api-introduction/issuance-guide) | [수정발행
      유형](/docs/api-introduction/amendment-guide)
  - name: 세금계산서 조회
    description: >
      전자(세금)계산서의 발행 결과와 요청 처리 상태를 조회하고, 발행 완료한 세금계산서의 PDF를 내려받습니다. [세금계산서 PDF 조회
      가이드](/docs/api-introduction/tax-invoice-pdf)
  - name: 세금계산서 역발행
    description: >
      전자(세금)계산서 역발행 요청 및 관리. [이메일 승인
      역발행](/docs/api-introduction/usecase-reverse-email) | [간편 승인
      역발행](/docs/api-introduction/usecase-reverse-simple)
  - name: 현금영수증
    description: >
      현금영수증을 발행하거나 취소하고 처리 상태를 조회합니다. [현금영수증 발행
      가이드](/docs/api-introduction/cash-receipt-guide) | [현금영수증
      웹훅](/docs/api-introduction/webhook-cash-receipt)
  - name: 사업자등록 상태 조회
    description: >
      사업자등록번호의 등록 상태와 과세유형을 단건 또는 최대 100건 일괄로 조회합니다. 발급자 등록과 공동인증서가 필요 없습니다.
      [사업자등록 상태 조회 가이드](/docs/api-introduction/business-registration-status)
  - name: 사업자등록증 인식과 진위확인
    description: >
      사업자등록증 파일에서 사업자등록번호, 상호, 대표자명, 개업일, 주소, 업종을 읽고 국세청 진위확인 결과를 함께 돌려줍니다. 발급자
      등록과 공동인증서가 필요 없습니다. 진위확인 결과가 `MATCHED`나 `NOT_MATCHED`인 문서마다 100포인트를 차감합니다.
      [사업자등록증 인식과 진위확인
      가이드](/docs/api-introduction/business-registration-certificate)
  - name: 매출/매입 내역 조회
    description: >
      볼타에 쌓인 내 사업자의 매출과 매입 세금계산서를 바뀐 순서로 조회하고 수집을 요청합니다. 볼타에서 발행한 문서와 홈택스에서 수집한
      문서가 모두 실립니다. 스탠다드 플랜 이상을 구독해야 하며 포인트는 차감하지 않습니다. 홈택스 연동은 볼타 대시보드에서 먼저 하세요.
      [매출/매입 내역 조회 가이드](/docs/api-introduction/revenue-expense)
  - name: 입출금내역 조회
    description: >
      볼타에 연결한 내 사업자의 입출금 계좌와 입출금내역을 조회하고 동기화를 요청합니다. 스탠다드 플랜 이상을 구독해야 하며 포인트는
      차감하지 않습니다. 계좌는 볼타 대시보드에서 먼저 연결하세요. [입출금내역 조회
      가이드](/docs/api-introduction/bank-account-transactions)
  - name: 예금주 조회
    description: >
      은행코드와 계좌번호로 예금주명을 조회합니다. 한 계좌씩 묻는 경로와 최대 100개를 한 번에 묻는 경로가 있습니다. 예금주를 돌려준
      계좌마다 50포인트를 차감합니다. [예금주 조회
      가이드](/docs/api-introduction/bank-account-holder)
  - name: 서류 발급
    description: >
      홈택스 국세 증명 서류와 법인등기사항전부증명서를 발급하고 원본 PDF를 내려받습니다. 홈택스 서류는 API 키가 속한 사업자의 서류만
      발급하며, 볼타 대시보드에 공동인증서를 등록해야 합니다. 법인등기는 `corporationNumber`의 법인 등기부를 발급하고
      공동인증서가 필요 없습니다. 지원하는 법인 종류는 주식회사, 유한회사, 합명회사, 합자회사, 유한책임회사, 사단법인, 재단법인,
      의료법인, 협동조합(사회적협동조합 포함), 기타법인(특허법인 등)입니다. 한 건에 홈택스 서류 500포인트, 법인등기 열람용
      1,000포인트, 제출용 1,500포인트를 차감합니다. [서류 발급
      가이드](/docs/api-introduction/document-issuance)
  - name: 발급자
    description: >
      세금계산서 발행 주체인 발급자를 등록하고 관리합니다. 발행 방식에 따라 공동인증서 필요 여부가 다릅니다. [용어
      정리](/docs/api-introduction/glossary) | [대리
      정발행](/docs/api-introduction/usecase-delegated) | [위수탁
      발행](/docs/api-introduction/usecase-brokered)
  - name: 인증서
    description: >
      발급자 공동인증서 등록 및 관리. [인증서
      등록](/docs/api-introduction/certificate-registration)
paths:
  /v1/businessRegistrationCertificates:extract:
    post:
      tags:
        - 사업자등록증 인식과 진위확인
      summary: 사업자등록증 인식과 진위확인
      description: >
        사업자등록증 파일 한 건을 읽고, 읽은 사업자등록번호, 첫 번째 대표자명, 개업일로 국세청 진위확인을 합니다. 발급자 등록과
        공동인증서가 필요 없고, 요청자 관리번호도 쓰지 않습니다. 처리에 최대 약 45초가 걸리므로 클라이언트 읽기 타임아웃은 60초
        이상으로 잡으세요.


        테스트 키는 올린 파일과 관계없이 고정 결과를 돌려줍니다. [사업자등록증 인식과 진위확인
        가이드](/docs/api-introduction/business-registration-certificate)
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/BusinessRegistrationCertificateExtractionRequest
      responses:
        '200':
          description: 인식 성공. `validation`이 `UNAVAILABLE`이면 포인트를 차감하지 않습니다.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/BusinessRegistrationCertificateExtractionResponse
              examples:
                진위확인 일치:
                  x-parity-id: matched
                  summary: 테스트 키 고정 결과
                  value:
                    certificate:
                      businessRegistrationNumber: '1000000014'
                      organizationName: (주)볼타테스트
                      representativeNames:
                        - 김볼타
                      openedOn: '2020-01-01'
                      address: 서울특별시 테스트구 가상로 1
                      industries:
                        - businessType: 정보통신업
                          businessItem: 응용 소프트웨어 개발 및 공급업
                      corporationRegistrationNumber: '1101110000000'
                      taxRegistrationId: null
                    inputQuality: SUFFICIENT
                    validation: MATCHED
          headers: {}
        '400':
          description: >
            파일을 받을 수 없습니다. 응답의 `code`로 원인을 구분하세요.

            `INVALID_REQUEST`: `file` 파트가 없거나, 빈 파일이거나, 5MB를 넘습니다.

            `INVALID_FILE`: 지원하지 않는 형식, 읽을 수 없는 파일, 5쪽을 넘는 PDF, 사업자등록증이 아니거나
            사업자등록번호를 읽을 수 없는 파일입니다. `message`를 사용자에게 보여 주고 다른 파일을 받으세요.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: API 키 인증 실패. 응답 본문이 없습니다.
        '402':
          description: 포인트 잔액이 부족합니다. 응답의 `code`는 `PAYMENT_REQUIRED`입니다. 개발자센터에서 충전하세요.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            처리 중인 요청이 잡아 둔 포인트까지 합치면 잔액이 모자랍니다. 응답의 `code`는
            `POINT_RESERVED_BY_IN_FLIGHT_REQUESTS`입니다. 충전하거나 처리 중인 요청이 끝난 뒤 다시
            요청하세요.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '415':
          description: >-
            `Content-Type`이 `multipart/form-data`가 아닙니다. 응답의 `code`는
            `UNSUPPORTED_MEDIA_TYPE`입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: |
            호출 한도에 도달했습니다. `Retry-After` 이후에 같은 파일로 다시 시도하세요.
            `TOO_MANY_IN_FLIGHT`: 같은 파트너의 처리 중인 요청이 있습니다. 라이브 키만 해당합니다.
            `RATE_LIMITED`: 하루 처리 한도 1,000건을 넘었거나 볼타 인식 처리량이 가득 찼습니다.
          headers:
            Retry-After:
              description: 재시도까지 남은 시간(초)
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: 서버 내부 오류. 응답의 `code`는 `INTERNAL_SERVER_ERROR`입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: |
            지금은 인식할 수 없습니다. 응답의 `code`로 원인을 구분하세요.
            `EXTRACTION_UNAVAILABLE`: 인식에 실패했거나 처리 시간을 넘었습니다. 잠시 후 다시 시도하세요.
            `LOOKUP_UNAVAILABLE`: 호출 한도를 판정할 수 없습니다.
            `SERVICE_UNAVAILABLE`: 일시적인 내부 API 통신 오류입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: false
components:
  schemas:
    BusinessRegistrationCertificateExtractionRequest:
      type: object
      description: 사업자등록증 인식과 진위확인 요청
      properties:
        file:
          type: string
          format: binary
          description: >-
            사업자등록증 파일 한 개. PDF, JPG, PNG, WebP 형식, 5MB(5,242,880바이트) 이하, PDF는 5쪽
            이하입니다.
      required:
        - file
    BusinessRegistrationCertificateExtractionResponse:
      type: object
      description: 사업자등록증 인식과 진위확인 결과. 모든 필드를 항상 포함합니다.
      properties:
        certificate:
          $ref: >-
            #/components/schemas/BusinessRegistrationCertificateExtractionCertificate
        inputQuality:
          type: string
          enum:
            - SUFFICIENT
            - LOW_RESOLUTION
          description: 이미지 해상도 판정. `LOW_RESOLUTION`이면 더 큰 이미지나 PDF로 다시 받으세요.
        validation:
          type: string
          enum:
            - MATCHED
            - NOT_MATCHED
            - UNAVAILABLE
          description: >-
            사업자등록번호, 첫 번째 대표자명, 개업일의 국세청 진위확인 결과. `UNAVAILABLE`은 국세청 장애로 진위확인을
            하지 못한 결과이며 포인트를 차감하지 않습니다.
      required:
        - certificate
        - inputQuality
        - validation
    ErrorResponse:
      type: object
      description: API 요청 실패 시 반환되는 에러 응답
      properties:
        code:
          type: string
          description: 에러 타입 식별자
        message:
          type: string
          description: 에러 설명
        traceId:
          type: string
          description: 요청 추적 식별자
      required:
        - code
        - message
        - traceId
    BusinessRegistrationCertificateExtractionCertificate:
      type: object
      description: >-
        문서에서 읽은 값. 읽지 못한 값은 `null`, 목록은 빈 배열입니다. `businessRegistrationNumber`는
        항상 담고, 읽지 못하면 `400 INVALID_FILE`을 반환합니다.
      properties:
        businessRegistrationNumber:
          type: string
          description: 하이픈 없는 10자리 사업자등록번호
        organizationName:
          type:
            - string
            - 'null'
          description: 상호(법인명)
        representativeNames:
          type: array
          description: 대표자 이름. 인쇄된 순서대로 담고 역할 표기는 뗍니다. 진위확인에는 첫 번째 이름만 씁니다.
          maxItems: 10
          items:
            type: string
        openedOn:
          type:
            - string
            - 'null'
          format: date
          description: 개업연월일
        address:
          type:
            - string
            - 'null'
          description: 사업장 소재지
        industries:
          type: array
          description: 업종 행. 인쇄된 순서대로 담습니다.
          maxItems: 20
          items:
            $ref: >-
              #/components/schemas/BusinessRegistrationCertificateExtractionIndustry
        corporationRegistrationNumber:
          type:
            - string
            - 'null'
          description: 하이픈 없는 13자리 법인등록번호. 법인 등록증에만 있습니다.
        taxRegistrationId:
          type:
            - string
            - 'null'
          description: 종사업장번호 4자리
      required:
        - businessRegistrationNumber
        - organizationName
        - representativeNames
        - openedOn
        - address
        - industries
        - corporationRegistrationNumber
        - taxRegistrationId
    BusinessRegistrationCertificateExtractionIndustry:
      type: object
      description: 업종 한 행. 같은 행의 업태와 종목이 짝입니다.
      properties:
        businessType:
          type:
            - string
            - 'null'
          description: 업태
        businessItem:
          type:
            - string
            - 'null'
          description: 종목
      required:
        - businessType
        - businessItem
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        API 키 뒤에 콜론을 붙여 Base64로 인코딩해 헤더에 넣으세요. Username에 API 키를 입력하고 Password는
        비워두세요.

````