> ## 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.

# Extract and Verify Business Registration Certificate

> Read one business registration certificate file, then verify the business registration number, first representative name, and opening date it read against NTS records. This API requires no issuer registration, no certificate, and no client reference id. Processing takes up to about 45 seconds, so set your client read timeout to 60 seconds or more.

A test key returns a fixed result regardless of the uploaded file. [Business registration certificate extraction and verification guide](/en/docs/api-introduction/business-registration-certificate)




## OpenAPI

````yaml /openapi.en.yaml post /v1/businessRegistrationCertificates:extract
openapi: 3.1.0
info:
  title: Bolta API
  description: >
    The Bolta e-tax invoice API. [API
    Overview](/en/docs/api-introduction/overview) | [Authentication
    guide](/en/docs/api-introduction/authentication) | [Use
    cases](/en/docs/api-introduction/usecase-b2b)
  version: 1.0.0
servers:
  - url: https://xapi.bolta.io
    description: Bolta API server
security:
  - basicAuth: []
tags:
  - name: Tax Invoice Issuance
    description: >
      Issue and amend e-tax invoices. [Calculating the issuance
      amount](/en/docs/api-introduction/issuance-guide) | [Amendment
      types](/en/docs/api-introduction/amendment-guide)
  - name: Tax Invoice Retrieval
    description: >
      Retrieve e-tax invoice results and request processing status, and download
      the PDF of an issued tax invoice. [Tax invoice PDF
      guide](/en/docs/api-introduction/tax-invoice-pdf)
  - name: Reverse Issuance
    description: >
      Request and manage reverse issuance of e-tax invoices. [Email-approval
      reverse issuance](/en/docs/api-introduction/usecase-reverse-email) |
      [Simple-approval reverse
      issuance](/en/docs/api-introduction/usecase-reverse-simple)
  - name: Cash Receipt
    description: >
      Issue, cancel, and check the status of cash receipts. [Cash receipt
      guide](/en/docs/api-introduction/cash-receipt-guide) | [Cash receipt
      webhooks](/en/docs/api-introduction/webhook-cash-receipt)
  - name: Business Registration Status
    description: >
      Check the registration status and tax type of a business registration
      number. Look up one number or up to 100 numbers at once. This API requires
      no issuer registration and no certificate. [Business registration status
      guide](/en/docs/api-introduction/business-registration-status)
  - name: Business Registration Certificate Extraction and Verification
    description: >
      Reads the business registration number, business name, representative
      names, opening date, address, and industries from a business registration
      certificate file, and returns the NTS verification result. This API
      requires no issuer registration and no certificate. Each document whose
      verification result is `MATCHED` or `NOT_MATCHED` deducts 100 points.
      [Business registration certificate extraction and verification
      guide](/en/docs/api-introduction/business-registration-certificate)
  - name: Revenue and Expense
    description: >
      Retrieve the revenue and expense tax invoices of your own business in
      Bolta in the order they changed, and request a collection. Responses
      include documents issued through Bolta and documents collected from
      Hometax. You need a Standard plan or higher, and the calls deduct no
      points. Connect Hometax in the Bolta dashboard first. [Revenue and expense
      guide](/en/docs/api-introduction/revenue-expense)
  - name: Bank Account Transactions
    description: >
      Retrieve the bank accounts and transactions connected to your own business
      in Bolta, and request a sync. You need a Standard plan or higher, and the
      calls deduct no points. Connect bank accounts in the Bolta dashboard
      first. [Bank account transactions
      guide](/en/docs/api-introduction/bank-account-transactions)
  - name: Bank Account Holder
    description: >
      Look up account holder names with a bank code and an account number. One
      path takes a single account and the other takes up to 100 accounts at
      once. Each account that returns a holder name deducts 50 points. [Bank
      account holder guide](/en/docs/api-introduction/bank-account-holder)
  - name: Document Issuance
    description: >
      Issue National Tax Service certificates from Hometax or a certified copy
      of corporate registry, and download the original PDF. Hometax documents
      are issued only for the business that owns the API key, and you must
      register a joint certificate in the Bolta dashboard. A corporate registry
      is issued for the corporation in `corporationNumber` and needs no joint
      certificate. Supported corporation types are stock company, limited
      company, general partnership company, limited partnership company, limited
      liability company, incorporated association, incorporated foundation,
      medical corporation, cooperative (including social cooperative), and other
      corporate entity (such as a patent corporation). Each document deducts 500
      points for Hometax documents, 1,000 points for a corporate registry view
      copy, and 1,500 points for a submission copy. [Document issuance
      guide](/en/docs/api-introduction/document-issuance)
  - name: Issuer
    description: >
      Register and manage businesses that act as tax invoice issuers.
      Certificate requirements depend on the issuance type.
      [Glossary](/en/docs/api-introduction/glossary) | [Delegated
      issuance](/en/docs/api-introduction/usecase-delegated) | [Brokered Tax
      Invoice Issuance](/en/docs/api-introduction/usecase-brokered)
  - name: Certificate
    description: >
      Register and manage issuer certificates. [Certificate
      registration](/en/docs/api-introduction/certificate-registration)
paths:
  /v1/businessRegistrationCertificates:extract:
    post:
      tags:
        - Business Registration Certificate Extraction and Verification
      summary: Extract and Verify Business Registration Certificate
      description: >
        Read one business registration certificate file, then verify the
        business registration number, first representative name, and opening
        date it read against NTS records. This API requires no issuer
        registration, no certificate, and no client reference id. Processing
        takes up to about 45 seconds, so set your client read timeout to 60
        seconds or more.


        A test key returns a fixed result regardless of the uploaded file.
        [Business registration certificate extraction and verification
        guide](/en/docs/api-introduction/business-registration-certificate)
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/BusinessRegistrationCertificateExtractionRequest
      responses:
        '200':
          description: >-
            Extraction succeeded. When `validation` is `UNAVAILABLE`, the API
            deducts no points.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/BusinessRegistrationCertificateExtractionResponse
              examples:
                NTS verified:
                  x-parity-id: matched
                  summary: Fixed test key result
                  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: >
            The API cannot accept the file. Check the response `code` for the
            cause.

            `INVALID_REQUEST`: The `file` part is missing, the file is empty, or
            the file is over 5 MB.

            `INVALID_FILE`: The format is unsupported, the file is unreadable,
            the PDF has more than 5 pages, or the document is not a business
            registration certificate or its business registration number cannot
            be read. Show `message` to the user and ask for another file.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: API key authentication failed. The response has no body.
        '402':
          description: >-
            The point balance is insufficient. The response `code` is
            `PAYMENT_REQUIRED`. Top up in the developer center.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Counting the points that in-flight requests hold, the balance is
            insufficient. The response `code` is
            `POINT_RESERVED_BY_IN_FLIGHT_REQUESTS`. Top up, or request again
            after the in-flight requests finish.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '415':
          description: >-
            The `Content-Type` is not `multipart/form-data`. The response `code`
            is `UNSUPPORTED_MEDIA_TYPE`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >
            You reached a rate limit. Send the same file again after
            `Retry-After`.

            `TOO_MANY_IN_FLIGHT`: The same partner already has a request in
            progress. Live keys only.

            `RATE_LIMITED`: You exceeded the daily volume of 1,000, or Bolta
            extraction capacity is full.
          headers:
            Retry-After:
              description: Seconds until you can retry
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Internal server error. The response `code` is
            `INTERNAL_SERVER_ERROR`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: >
            The API cannot extract the certificate right now. Check the response
            `code` for the cause.

            `EXTRACTION_UNAVAILABLE`: Extraction failed or timed out. Retry
            later.

            `LOOKUP_UNAVAILABLE`: Bolta cannot evaluate the rate limit.

            `SERVICE_UNAVAILABLE`: Temporary internal API communication error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: false
components:
  schemas:
    BusinessRegistrationCertificateExtractionRequest:
      type: object
      description: Business registration certificate extraction and verification request
      properties:
        file:
          type: string
          format: binary
          description: >-
            One business registration certificate file. PDF, JPG, PNG, or WebP,
            5 MB (5,242,880 bytes) or smaller. A PDF must have 5 pages or fewer.
      required:
        - file
    BusinessRegistrationCertificateExtractionResponse:
      type: object
      description: >-
        Business registration certificate extraction and verification result.
        The response always contains every field.
      properties:
        certificate:
          $ref: >-
            #/components/schemas/BusinessRegistrationCertificateExtractionCertificate
        inputQuality:
          type: string
          enum:
            - SUFFICIENT
            - LOW_RESOLUTION
          description: >-
            Image resolution check. For `LOW_RESOLUTION`, ask for a larger image
            or a PDF.
        validation:
          type: string
          enum:
            - MATCHED
            - NOT_MATCHED
            - UNAVAILABLE
          description: >-
            NTS verification result for the business registration number, first
            representative name, and opening date. `UNAVAILABLE` means an NTS
            outage prevented verification, and the API deducts no points.
      required:
        - certificate
        - inputQuality
        - validation
    ErrorResponse:
      type: object
      description: The error response returned when an API request fails
      properties:
        code:
          type: string
          description: Error type identifier
        message:
          type: string
          description: Error description
        traceId:
          type: string
          description: Request trace identifier
      required:
        - code
        - message
        - traceId
    BusinessRegistrationCertificateExtractionCertificate:
      type: object
      description: >-
        Values read from the document. A value the API could not read is `null`,
        and a list is empty. `businessRegistrationNumber` is always present. If
        the API cannot read it, it returns `400 INVALID_FILE`.
      properties:
        businessRegistrationNumber:
          type: string
          description: Ten-digit business registration number without hyphens
        organizationName:
          type:
            - string
            - 'null'
          description: Business name (corporate name)
        representativeNames:
          type: array
          description: >-
            Representative names in printed order, without role labels. NTS
            verification uses only the first name.
          maxItems: 10
          items:
            type: string
        openedOn:
          type:
            - string
            - 'null'
          format: date
          description: Opening date
        address:
          type:
            - string
            - 'null'
          description: Business address
        industries:
          type: array
          description: Industry rows in printed order
          maxItems: 20
          items:
            $ref: >-
              #/components/schemas/BusinessRegistrationCertificateExtractionIndustry
        corporationRegistrationNumber:
          type:
            - string
            - 'null'
          description: >-
            Thirteen-digit corporation registration number without hyphens.
            Corporate certificates only.
        taxRegistrationId:
          type:
            - string
            - 'null'
          description: Four-digit sub-business place number
      required:
        - businessRegistrationNumber
        - organizationName
        - representativeNames
        - openedOn
        - address
        - industries
        - corporationRegistrationNumber
        - taxRegistrationId
    BusinessRegistrationCertificateExtractionIndustry:
      type: object
      description: >-
        One industry row. The business type and business item in the same row
        form a pair.
      properties:
        businessType:
          type:
            - string
            - 'null'
          description: Business type
        businessItem:
          type:
            - string
            - 'null'
          description: Business item
      required:
        - businessType
        - businessItem
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Append a colon to your API key, Base64-encode it, and put it in the
        header. Enter the API key as the username and leave the password empty.

````