> ## 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 Hometax and deduct no points. Business registration number `1000000014` ends as `COMPLETED` and `1000000071` as `FAILED` right away. The result for `1000000014` includes a sample PDF URL. [Document issuance guide](/en/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/api-introduction/overview) |
    [Authentication guide](/en/api-introduction/authentication) | [Use
    cases](/en/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/api-introduction/issuance-guide) | [Amendment
      types](/en/api-introduction/amendment-guide)
  - name: Tax Invoice Retrieval
    description: Retrieve e-tax invoice results and request processing status.
  - name: Reverse Issuance
    description: >
      Request and manage reverse issuance of e-tax invoices. [Email-approval
      reverse issuance](/en/api-introduction/usecase-reverse-email) |
      [Simple-approval reverse
      issuance](/en/api-introduction/usecase-reverse-simple)
  - name: Cash Receipt
    description: >
      Issue, cancel, and check the status of cash receipts. Check the final
      result via webhook or the status API. [Cash receipt
      guide](/en/api-introduction/cash-receipt-guide) | [Cash receipt
      webhooks](/en/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/api-introduction/business-registration-status)
  - 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/api-introduction/bank-account-transactions)
  - name: Document Issuance
    description: >
      Issue National Tax Service certificates from Hometax and download the
      original PDF. You can issue documents only for the business that owns the
      API key, and you must register a joint certificate in the Bolta dashboard.
      Each document deducts 500 points. [Document issuance
      guide](/en/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/api-introduction/glossary) | [Delegated
      issuance](/en/api-introduction/usecase-delegated) | [Brokered Tax Invoice
      Issuance](/en/api-introduction/usecase-brokered)
  - name: Certificate
    description: >
      Register and manage issuer certificates. [Certificate
      registration](/en/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 Hometax and deduct no points. Business
        registration number `1000000014` ends as `COMPLETED` and `1000000071` as
        `FAILED` right away. The result for `1000000014` includes a sample PDF
        URL. [Document issuance guide](/en/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:
                  businessRegistrationNumber: '1234567890'
                  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:
                  businessRegistrationNumber: '1234567890'
                  document:
                    type: BUSINESS_REGISTRATION_PROOF
                    language: EN
              Business registration certificate reissue:
                x-parity-id: business-registration-certificate
                summary: Reissue after loss
                value:
                  businessRegistrationNumber: '1234567890'
                  document:
                    type: BUSINESS_REGISTRATION_CERTIFICATE
                    reason: 분실
              Tax payment certificate:
                x-parity-id: tax-payment-certificate
                summary: Other purpose
                value:
                  businessRegistrationNumber: '1234567890'
                  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:
                  businessRegistrationNumber: '1234567890'
                  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:
                  businessRegistrationNumber: '1234567890'
                  document:
                    type: STANDARD_FINANCIAL_STATEMENT_PROOF
                    fiscalYearEnd: 2025-12
      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: >-
            Invalid request format, or a test key request with a number outside
            the list. The response `code` is `INVALID_REQUEST`.
          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'
        '403':
          description: >-
            The business registration number does not belong to the business
            that owns the API key. The response `code` is `TARGET_NOT_ALLOWED`.
          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. Register it in the Bolta dashboard.

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

            `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: >-
            Temporary internal API communication error. The response `code` is
            `SERVICE_UNAVAILABLE`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: false
components:
  schemas:
    DocumentIssuanceRequest:
      type: object
      description: Document issuance request
      properties:
        businessRegistrationNumber:
          type: string
          description: >-
            Business registration number of the business that owns the API key.
            Hyphens are allowed.
          example: '1234567890'
        document:
          $ref: '#/components/schemas/DocumentIssuanceDocument'
      required:
        - businessRegistrationNumber
        - 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. 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. Filled only when `COMPLETED`
            and within the retention period. For test keys, a sample PDF URL.
        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'
      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'
    DocumentIssuanceType:
      type: string
      description: Document type
      enum:
        - BUSINESS_REGISTRATION_PROOF
        - BUSINESS_REGISTRATION_CERTIFICATE
        - TAX_PAYMENT_CERTIFICATE
        - VAT_TAX_BASE_PROOF
        - STANDARD_FINANCIAL_STATEMENT_PROOF
    DocumentIssuanceLanguage:
      type: string
      description: Document language
      enum:
        - KO
        - EN
    DocumentIssuanceStatus:
      type: string
      description: >
        Issuance status

        - `ACCEPTED`: Accepted

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

        - `COMPLETED`: Issued

        - `FAILED`: Issuance failed. No points are deducted. Check the
        certificate, tax arrears, and filing status, then request again with a
        new `Bolta-Client-Reference-Id`

        - `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.
      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.
      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
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Base64-encode your API key and pass it. Enter the API key as the
        username and leave the password empty.

````