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

# Request Document Issuance

> Accept a document issuance request. The API returns `202 Accepted` with `issuanceKey`, and issuance runs asynchronously. Retrieve the result with `issuanceKey`.

Test keys do not submit to any agency and deduct no points. Hometax documents always end as `COMPLETED` right away. For a corporate registry, `corporationNumber` `1100000000014` ends as `COMPLETED` and `1100000000071` as `FAILED` right away, and any other number returns `400 INVALID_REQUEST`. A `COMPLETED` result includes a sample PDF URL. [Document issuance guide](/en/docs/api-introduction/document-issuance)




## OpenAPI

````yaml /openapi.en.yaml post /v1/documentIssuances
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: 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/documentIssuances:
    post:
      tags:
        - Document Issuance
      summary: Request Document Issuance
      description: >
        Accept a document issuance request. The API returns `202 Accepted` with
        `issuanceKey`, and issuance runs asynchronously. Retrieve the result
        with `issuanceKey`.


        Test keys do not submit to any agency and deduct no points. Hometax
        documents always end as `COMPLETED` right away. For a corporate
        registry, `corporationNumber` `1100000000014` ends as `COMPLETED` and
        `1100000000071` as `FAILED` right away, and any other number returns
        `400 INVALID_REQUEST`. A `COMPLETED` result includes a sample PDF URL.
        [Document issuance guide](/en/docs/api-introduction/document-issuance)
      parameters:
        - name: Bolta-Client-Reference-Id
          in: header
          description: >-
            Enter a client reference ID of 1 to 255 characters. When you resend
            the same value with the same body, the API returns the existing
            request. When you send the same value with a different body, the API
            returns `409 Conflict` with `IDEMPOTENCY_CONFLICT`.
          required: true
          example: order-20260919-001
          schema:
            type: string
            minLength: 1
            maxLength: 255
            pattern: \S
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentIssuanceRequest'
            examples:
              Business registration proof:
                x-parity-id: business-registration-proof
                summary: Korean business registration proof
                value:
                  document:
                    type: BUSINESS_REGISTRATION_PROOF
                    language: KO
              English business registration proof:
                x-parity-id: business-registration-proof-en
                summary: Issued with the English information registered in Hometax
                value:
                  document:
                    type: BUSINESS_REGISTRATION_PROOF
                    language: EN
              Business registration certificate reissue:
                x-parity-id: business-registration-certificate
                summary: Reissue after loss
                value:
                  document:
                    type: BUSINESS_REGISTRATION_CERTIFICATE
                    reason: 분실
              Tax payment certificate:
                x-parity-id: tax-payment-certificate
                summary: Other purpose
                value:
                  document:
                    type: TAX_PAYMENT_CERTIFICATE
                    purpose: OTHER
              VAT tax base proof:
                x-parity-id: vat-tax-base-proof
                summary: First and second periods of 2025
                value:
                  document:
                    type: VAT_TAX_BASE_PROOF
                    from: 2025-01
                    to: 2025-12
              Standard financial statement proof:
                x-parity-id: standard-financial-statement-proof
                summary: Fiscal year 2025 for a corporation with a December year end
                value:
                  document:
                    type: STANDARD_FINANCIAL_STATEMENT_PROOF
                    fiscalYearEnd: 2025-12
              Corporate registry view copy:
                x-parity-id: corporate-registry-view
                summary: Including cancelled entries
                value:
                  document:
                    type: CORPORATE_REGISTRY_VIEW
                    corporationNumber: 110111-1234567
                    cancelledEntries: INCLUDE
              Corporate registry submission copy:
                x-parity-id: corporate-registry-issuance
                summary: Excluding cancelled entries
                value:
                  document:
                    type: CORPORATE_REGISTRY_ISSUANCE
                    corporationNumber: '1101111234567'
                    cancelledEntries: EXCLUDE
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentIssuanceResponse'
              examples:
                Accepted:
                  x-parity-id: accepted
                  summary: Response right after acceptance
                  value:
                    issuanceKey: 00000000-0000-4000-8000-000000000001
                    clientReferenceId: order-20260919-001
                    type: BUSINESS_REGISTRATION_PROOF
                    language: KO
                    status: ACCEPTED
                    requestedAt: '2026-09-19T03:00:00Z'
                    issuedOn: null
                    retentionExpiresAt: null
                    downloadUrl: null
                    downloadUrlExpiresAt: null
          headers: {}
        '400':
          description: >
            The request cannot be accepted. Check the response `code` for the
            cause.

            `INVALID_REQUEST`: Invalid request format, missing `language` for a
            business registration proof, invalid corporation registration
            number, missing `cancelledEntries` for a corporate registry, or a
            test key request with a corporation registration number outside the
            list.

            `PERIOD_NOT_CLOSED`: The fiscal year of the standard financial
            statement proof has not ended. Request a fiscal year with a filed
            return.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: API key authentication failed. The response has no body.
        '402':
          description: >-
            Insufficient point balance. The response `code` is
            `PAYMENT_REQUIRED`. Top up in the Developer Center.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >
            The request cannot be accepted. Check the response `code` for the
            cause.

            `CERTIFICATE_REQUIRED`: The joint certificate is not registered or
            has expired. Applies to Hometax documents only. Register it in the
            Bolta dashboard.

            `IDEMPOTENCY_CONFLICT`: A different body for the same
            `Bolta-Client-Reference-Id`.

            `OUTSIDE_SERVICE_HOURS`: Requested outside the document's request
            hours. See [Issuance
            hours](/en/docs/api-introduction/document-issuance#issuance-hours).

            `TARGET_BUSY`: Another request is issuing the same corporate
            registry document with the same `cancelledEntries` for the same
            corporation. Request again after it finishes.

            `POINT_RESERVED_BY_IN_FLIGHT_REQUESTS`: The balance is short once
            requests in progress are counted. Top up, or request again after
            they finish.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Five requests are already in progress. Requests sent at the same
            time are also accepted only up to five. The response `code` is
            `TOO_MANY_IN_FLIGHT`. Request again after they finish.
          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 request cannot be processed right now. Check the response `code`
            for the cause.

            `DOCUMENT_ISSUANCE_UNAVAILABLE`: Bolta cannot issue the document
            right now. No points are reserved. Request again shortly.

            `SERVICE_UNAVAILABLE`: A temporary internal API communication error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: false
components:
  schemas:
    DocumentIssuanceRequest:
      type: object
      description: Document issuance request
      properties:
        document:
          $ref: '#/components/schemas/DocumentIssuanceDocument'
      required:
        - document
    DocumentIssuanceResponse:
      type: object
      description: Document issuance request and result
      properties:
        issuanceKey:
          type: string
          format: uuid
          description: Issuance request identifier
        clientReferenceId:
          type: string
          description: '`Bolta-Client-Reference-Id` used for the request'
        type:
          $ref: '#/components/schemas/DocumentIssuanceType'
        language:
          allOf:
            - $ref: '#/components/schemas/DocumentIssuanceLanguage'
          description: >-
            Language of the issued document. Always `KO` for documents other
            than the business registration proof.
        status:
          $ref: '#/components/schemas/DocumentIssuanceStatus'
        requestedAt:
          type: string
          format: date-time
          description: Time the request was accepted (UTC)
        issuedOn:
          type:
            - string
            - 'null'
          format: date
          description: >-
            Issue date printed on the original PDF. For a corporate registry,
            the view or issue date. Filled only when `COMPLETED`.
        retentionExpiresAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Retention end time (UTC). 30 days after issuance. Filled only when
            `COMPLETED`.
        downloadUrl:
          type:
            - string
            - 'null'
          format: uri
          description: >-
            Original PDF URL, valid for 5 minutes for Hometax documents and 1
            minute for a corporate registry. Filled only when `COMPLETED` and
            within the retention period. For test keys, a sample PDF URL valid
            for 5 minutes for every document type.
        downloadUrlExpiresAt:
          type:
            - string
            - 'null'
          format: date-time
          description: '`downloadUrl` expiry time (UTC)'
      required:
        - issuanceKey
        - clientReferenceId
        - type
        - language
        - status
        - requestedAt
        - issuedOn
        - retentionExpiresAt
        - downloadUrl
        - downloadUrlExpiresAt
    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
    DocumentIssuanceDocument:
      description: Document to issue. Fill in the input that matches `type`.
      oneOf:
        - $ref: '#/components/schemas/BusinessRegistrationProofDocument'
        - $ref: '#/components/schemas/BusinessRegistrationCertificateDocument'
        - $ref: '#/components/schemas/TaxPaymentCertificateDocument'
        - $ref: '#/components/schemas/VatTaxBaseProofDocument'
        - $ref: '#/components/schemas/StandardFinancialStatementProofDocument'
        - $ref: '#/components/schemas/CorporateRegistryViewDocument'
        - $ref: '#/components/schemas/CorporateRegistryIssuanceDocument'
      discriminator:
        propertyName: type
        mapping:
          BUSINESS_REGISTRATION_PROOF:
            $ref: '#/components/schemas/BusinessRegistrationProofDocument'
          BUSINESS_REGISTRATION_CERTIFICATE:
            $ref: '#/components/schemas/BusinessRegistrationCertificateDocument'
          TAX_PAYMENT_CERTIFICATE:
            $ref: '#/components/schemas/TaxPaymentCertificateDocument'
          VAT_TAX_BASE_PROOF:
            $ref: '#/components/schemas/VatTaxBaseProofDocument'
          STANDARD_FINANCIAL_STATEMENT_PROOF:
            $ref: '#/components/schemas/StandardFinancialStatementProofDocument'
          CORPORATE_REGISTRY_VIEW:
            $ref: '#/components/schemas/CorporateRegistryViewDocument'
          CORPORATE_REGISTRY_ISSUANCE:
            $ref: '#/components/schemas/CorporateRegistryIssuanceDocument'
    DocumentIssuanceType:
      type: string
      description: Document type
      enum:
        - BUSINESS_REGISTRATION_PROOF
        - BUSINESS_REGISTRATION_CERTIFICATE
        - TAX_PAYMENT_CERTIFICATE
        - VAT_TAX_BASE_PROOF
        - STANDARD_FINANCIAL_STATEMENT_PROOF
        - CORPORATE_REGISTRY_VIEW
        - CORPORATE_REGISTRY_ISSUANCE
    DocumentIssuanceLanguage:
      type: string
      description: Document language
      enum:
        - KO
        - EN
    DocumentIssuanceStatus:
      type: string
      description: >
        Issuance status

        - `ACCEPTED`: Accepted, not yet submitted to the agency

        - `SUBMITTED`: Submitted to the agency, waiting for the result

        - `COMPLETED`: Issued

        - `FAILED`: Issuance failed. No points are deducted. For Hometax
        documents, check the certificate, tax arrears, and filing status. For a
        corporate registry, check the corporation registration number and the
        corporation's type and status. If nothing is wrong, request again
        shortly. Use a new `Bolta-Client-Reference-Id` when you request again

        - `ACTION_REQUIRED`: Bolta is checking the result. Do not request the
        same document again; wait until it changes to `COMPLETED` or `FAILED`
      enum:
        - ACCEPTED
        - SUBMITTED
        - COMPLETED
        - FAILED
        - ACTION_REQUIRED
    BusinessRegistrationProofDocument:
      type: object
      description: Business registration proof
      properties:
        type:
          type: string
          const: BUSINESS_REGISTRATION_PROOF
        language:
          allOf:
            - $ref: '#/components/schemas/DocumentIssuanceLanguage'
          description: >-
            `EN` issues the proof with the English business information
            registered in Hometax. If that information is missing or malformed,
            the request ends as `FAILED` and deducts no points.
      required:
        - type
        - language
    BusinessRegistrationCertificateDocument:
      type: object
      description: Business registration certificate reissue
      properties:
        type:
          type: string
          const: BUSINESS_REGISTRATION_CERTIFICATE
        reason:
          type: string
          minLength: 1
          maxLength: 10
          description: >-
            Reissue reason, printed as is on the certificate. Enter the actual
            reason (for example, `분실`). After trimming leading and trailing
            spaces, it must be 1 to 10 characters with no control characters.
      required:
        - type
        - reason
    TaxPaymentCertificateDocument:
      type: object
      description: >-
        Tax payment certificate. Hometax does not issue it while national taxes
        are in arrears. Valid for 30 days from the issue date. See [Issuance
        hours](/en/docs/api-introduction/document-issuance#issuance-hours) for
        the request hours.
      properties:
        type:
          type: string
          const: TAX_PAYMENT_CERTIFICATE
        purpose:
          type: string
          enum:
            - PAYMENT_RECEIPT
            - OTHER
          description: Purpose. `PAYMENT_RECEIPT` or `OTHER`
      required:
        - type
        - purpose
    VatTaxBaseProofDocument:
      type: object
      description: >-
        VAT tax base proof. `from` cannot be later than `to`. One request covers
        up to five years.
      properties:
        type:
          type: string
          const: VAT_TAX_BASE_PROOF
        from:
          type: string
          pattern: ^\d{4}-(01|07)$
          description: Start month of the tax period. January or July
          example: 2025-01
        to:
          type: string
          pattern: ^\d{4}-(06|12)$
          description: End month of the tax period. June or December
          example: 2025-12
      required:
        - type
        - from
        - to
    StandardFinancialStatementProofDocument:
      type: object
      description: >-
        Standard financial statement proof. Only fiscal years with a filed
        corporate or comprehensive income tax return can be issued. For a fiscal
        year that has not ended, the API returns `400 PERIOD_NOT_CLOSED`.
      properties:
        type:
          type: string
          const: STANDARD_FINANCIAL_STATEMENT_PROOF
        fiscalYearEnd:
          type: string
          pattern: ^\d{4}-(0[1-9]|1[0-2])$
          description: Fiscal year end month. For a sole proprietor, only the year is used.
          example: 2025-12
      required:
        - type
        - fiscalYearEnd
    CorporateRegistryViewDocument:
      type: object
      description: >-
        Certified copy of corporate registry, view copy. Use it to check the
        contents. Bolta issues the registry of the corporation in
        `corporationNumber`.
      properties:
        type:
          type: string
          const: CORPORATE_REGISTRY_VIEW
        corporationNumber:
          $ref: '#/components/schemas/CorporationNumber'
        cancelledEntries:
          $ref: '#/components/schemas/CorporateRegistryCancelledEntries'
      required:
        - type
        - corporationNumber
        - cancelledEntries
    CorporateRegistryIssuanceDocument:
      type: object
      description: >-
        Certified copy of corporate registry, submission copy. Request it when
        you submit the document to a government office or bank. Bolta issues the
        registry of the corporation in `corporationNumber`.
      properties:
        type:
          type: string
          const: CORPORATE_REGISTRY_ISSUANCE
        corporationNumber:
          $ref: '#/components/schemas/CorporationNumber'
        cancelledEntries:
          $ref: '#/components/schemas/CorporateRegistryCancelledEntries'
      required:
        - type
        - corporationNumber
        - cancelledEntries
    CorporationNumber:
      type: string
      pattern: ^(\d{13}|\d{6}-\d{7})$
      description: 13-digit corporation registration number. A hyphen is allowed.
      example: 110111-1234567
    CorporateRegistryCancelledEntries:
      type: string
      enum:
        - INCLUDE
        - EXCLUDE
      description: Whether to include cancelled entries
  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.

````