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

# 서류 발급 요청

> 서류 발급을 접수합니다. API가 `202 Accepted`와 `issuanceKey`를 반환하고 발급은 비동기로 진행합니다. `issuanceKey`로 결과를 조회하세요.

테스트 키는 홈택스에 신청하지 않고 포인트도 차감하지 않습니다. 사업자등록번호 `1000000014`는 `COMPLETED`, `1000000071`은 `FAILED`로 바로 끝납니다. `1000000014`의 조회 응답에는 샘플 PDF 주소가 담깁니다. [서류 발급 가이드](/docs/api-introduction/document-issuance)




## OpenAPI

````yaml /openapi.yaml post /v1/documentIssuances
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: 전자(세금)계산서의 발행 결과와 요청 처리 상태를 조회합니다.
  - name: 세금계산서 역발행
    description: >
      전자(세금)계산서 역발행 요청 및 관리. [이메일 승인
      역발행](/docs/api-introduction/usecase-reverse-email) | [간편 승인
      역발행](/docs/api-introduction/usecase-reverse-simple)
  - name: 현금영수증
    description: >
      현금영수증을 발행하거나 취소하고 처리 상태를 조회합니다. 최종 결과는 웹훅이나 상태 조회 API로 확인하세요. [현금영수증 발행
      가이드](/docs/api-introduction/cash-receipt-guide) | [현금영수증
      웹훅](/docs/api-introduction/webhook-cash-receipt)
  - name: 사업자등록 상태 조회
    description: >
      사업자등록번호의 등록 상태와 과세유형을 단건 또는 최대 100건 일괄로 조회합니다. 발급자 등록과 공동인증서가 필요 없습니다.
      [사업자등록 상태 조회 가이드](/docs/api-introduction/business-registration-status)
  - name: 입출금내역 조회
    description: >
      볼타에 연결한 내 사업자의 입출금 계좌와 입출금내역을 조회하고 동기화를 요청합니다. 스탠다드 플랜 이상을 구독해야 하며 포인트는
      차감하지 않습니다. 계좌는 볼타 대시보드에서 먼저 연결하세요. [입출금내역 조회
      가이드](/docs/api-introduction/bank-account-transactions)
  - name: 서류 발급
    description: >
      홈택스 국세 증명 서류를 발급하고 원본 PDF를 내려받습니다. API 키가 속한 사업자의 서류만 발급하며, 볼타 대시보드에
      공동인증서를 등록해야 합니다. 서류 한 건에 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/documentIssuances:
    post:
      tags:
        - 서류 발급
      summary: 서류 발급 요청
      description: >
        서류 발급을 접수합니다. API가 `202 Accepted`와 `issuanceKey`를 반환하고 발급은 비동기로 진행합니다.
        `issuanceKey`로 결과를 조회하세요.


        테스트 키는 홈택스에 신청하지 않고 포인트도 차감하지 않습니다. 사업자등록번호 `1000000014`는 `COMPLETED`,
        `1000000071`은 `FAILED`로 바로 끝납니다. `1000000014`의 조회 응답에는 샘플 PDF 주소가 담깁니다.
        [서류 발급 가이드](/docs/api-introduction/document-issuance)
      parameters:
        - name: Bolta-Client-Reference-Id
          in: header
          description: >-
            1~255자의 요청자 관리번호를 입력하세요. 같은 값과 같은 본문으로 다시 보내면 API가 기존 요청을 반환합니다. 같은
            값에 다른 본문을 보내면 `409 Conflict`와 `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:
              사업자등록증명:
                x-parity-id: business-registration-proof
                summary: 국문 사업자등록증명
                value:
                  businessRegistrationNumber: '1234567890'
                  document:
                    type: BUSINESS_REGISTRATION_PROOF
                    language: KO
              영문 사업자등록증명:
                x-parity-id: business-registration-proof-en
                summary: 홈택스에 등록된 영문 정보로 발급
                value:
                  businessRegistrationNumber: '1234567890'
                  document:
                    type: BUSINESS_REGISTRATION_PROOF
                    language: EN
              사업자등록증 재발급:
                x-parity-id: business-registration-certificate
                summary: 분실로 재발급
                value:
                  businessRegistrationNumber: '1234567890'
                  document:
                    type: BUSINESS_REGISTRATION_CERTIFICATE
                    reason: 분실
              납세증명서:
                x-parity-id: tax-payment-certificate
                summary: 기타 용도
                value:
                  businessRegistrationNumber: '1234567890'
                  document:
                    type: TAX_PAYMENT_CERTIFICATE
                    purpose: OTHER
              부가가치세 과세표준증명:
                x-parity-id: vat-tax-base-proof
                summary: 2025년 1기와 2기
                value:
                  businessRegistrationNumber: '1234567890'
                  document:
                    type: VAT_TAX_BASE_PROOF
                    from: 2025-01
                    to: 2025-12
              표준재무제표증명:
                x-parity-id: standard-financial-statement-proof
                summary: 12월 결산 법인의 2025 사업연도
                value:
                  businessRegistrationNumber: '1234567890'
                  document:
                    type: STANDARD_FINANCIAL_STATEMENT_PROOF
                    fiscalYearEnd: 2025-12
      responses:
        '202':
          description: 접수 완료
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentIssuanceResponse'
              examples:
                접수:
                  x-parity-id: accepted
                  summary: 접수 직후 응답
                  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: >-
            요청 형식 오류이거나 테스트 키로 안내 목록 밖 번호를 요청했습니다. 응답의 `code`는
            `INVALID_REQUEST`입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: API 키 인증 실패. 응답 본문이 없습니다.
        '402':
          description: 포인트 잔액이 부족합니다. 응답의 `code`는 `PAYMENT_REQUIRED`입니다. 개발자센터에서 충전하세요.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: API 키가 속한 사업자가 아닌 사업자등록번호입니다. 응답의 `code`는 `TARGET_NOT_ALLOWED`입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >
            요청을 접수할 수 없습니다. 응답의 `code`로 원인을 구분하세요.

            `CERTIFICATE_REQUIRED`: 공동인증서 미등록 또는 만료. 볼타 대시보드에서 등록하세요.

            `IDEMPOTENCY_CONFLICT`: 같은 `Bolta-Client-Reference-Id`에 다른 본문.

            `POINT_RESERVED_BY_IN_FLIGHT_REQUESTS`: 처리 중인 요청까지 합치면 잔액 부족. 충전하거나
            끝난 뒤 다시 요청하세요.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            처리 중인 요청이 5건입니다. 동시에 보낸 요청도 5건까지만 접수합니다. 응답의 `code`는
            `TOO_MANY_IN_FLIGHT`입니다. 끝난 뒤 다시 요청하세요.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: 서버 내부 오류. 응답의 `code`는 `INTERNAL_SERVER_ERROR`입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: 일시적인 내부 API 통신 오류. 응답의 `code`는 `SERVICE_UNAVAILABLE`입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: false
components:
  schemas:
    DocumentIssuanceRequest:
      type: object
      description: 서류 발급 요청
      properties:
        businessRegistrationNumber:
          type: string
          description: API 키가 속한 사업자의 사업자등록번호. 하이픈을 넣어도 됩니다.
          example: '1234567890'
        document:
          $ref: '#/components/schemas/DocumentIssuanceDocument'
      required:
        - businessRegistrationNumber
        - document
    DocumentIssuanceResponse:
      type: object
      description: 서류 발급 요청과 결과
      properties:
        issuanceKey:
          type: string
          format: uuid
          description: 발급 요청 식별자
        clientReferenceId:
          type: string
          description: 요청에 사용한 `Bolta-Client-Reference-Id`
        type:
          $ref: '#/components/schemas/DocumentIssuanceType'
        language:
          allOf:
            - $ref: '#/components/schemas/DocumentIssuanceLanguage'
          description: 발급한 서류의 언어. 사업자등록증명이 아닌 서류는 항상 `KO`입니다.
        status:
          $ref: '#/components/schemas/DocumentIssuanceStatus'
        requestedAt:
          type: string
          format: date-time
          description: 요청을 접수한 시각(UTC)
        issuedOn:
          type:
            - string
            - 'null'
          format: date
          description: 원본 PDF에 적힌 발급일. `COMPLETED`에서만 채웁니다.
        retentionExpiresAt:
          type:
            - string
            - 'null'
          format: date-time
          description: 보관 만료 시각(UTC). 발급 후 30일입니다. `COMPLETED`에서만 채웁니다.
        downloadUrl:
          type:
            - string
            - 'null'
          format: uri
          description: >-
            원본 PDF 주소. 5분 동안 유효합니다. `COMPLETED`이고 보관 기간 안일 때만 채웁니다. 테스트 키는 샘플
            PDF 주소입니다.
        downloadUrlExpiresAt:
          type:
            - string
            - 'null'
          format: date-time
          description: '`downloadUrl` 만료 시각(UTC)'
      required:
        - issuanceKey
        - clientReferenceId
        - type
        - language
        - status
        - requestedAt
        - issuedOn
        - retentionExpiresAt
        - downloadUrl
        - downloadUrlExpiresAt
    ErrorResponse:
      type: object
      description: API 요청 실패 시 반환되는 에러 응답
      properties:
        code:
          type: string
          description: 에러 타입 식별자
        message:
          type: string
          description: 에러 설명
        traceId:
          type: string
          description: 요청 추적 식별자
      required:
        - code
        - message
        - traceId
    DocumentIssuanceDocument:
      description: 발급할 서류. `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: 서류 종류
      enum:
        - BUSINESS_REGISTRATION_PROOF
        - BUSINESS_REGISTRATION_CERTIFICATE
        - TAX_PAYMENT_CERTIFICATE
        - VAT_TAX_BASE_PROOF
        - STANDARD_FINANCIAL_STATEMENT_PROOF
    DocumentIssuanceLanguage:
      type: string
      description: 서류 언어
      enum:
        - KO
        - EN
    DocumentIssuanceStatus:
      type: string
      description: >
        발급 상태

        - `ACCEPTED`: 접수

        - `SUBMITTED`: 홈택스 신청 완료, 결과 대기

        - `COMPLETED`: 발급 완료

        - `FAILED`: 발급 실패. 포인트를 차감하지 않습니다. 인증서, 체납, 신고 여부를 확인하고 새
        `Bolta-Client-Reference-Id`로 다시 요청하세요

        - `ACTION_REQUIRED`: 볼타가 결과 확인 중. 같은 서류를 다시 요청하지 마세요. `COMPLETED` 또는
        `FAILED`로 바뀔 때까지 기다리세요
      enum:
        - ACCEPTED
        - SUBMITTED
        - COMPLETED
        - FAILED
        - ACTION_REQUIRED
    BusinessRegistrationProofDocument:
      type: object
      description: 사업자등록증명
      properties:
        type:
          type: string
          const: BUSINESS_REGISTRATION_PROOF
        language:
          allOf:
            - $ref: '#/components/schemas/DocumentIssuanceLanguage'
          description: >-
            `EN`은 홈택스에 등록된 사업자 영문 정보로 발급합니다. 영문 정보가 없거나 형식이 맞지 않으면 `FAILED`로 끝나고
            포인트를 차감하지 않습니다.
      required:
        - type
        - language
    BusinessRegistrationCertificateDocument:
      type: object
      description: 사업자등록증 재발급
      properties:
        type:
          type: string
          const: BUSINESS_REGISTRATION_CERTIFICATE
        reason:
          type: string
          minLength: 1
          maxLength: 10
          description: >-
            재발급 사유. 사업자등록증에 그대로 인쇄되니 실제 사유를 적으세요(예: `분실`). 앞뒤 공백을 제거한 뒤 1~10자여야
            하며 제어 문자는 쓸 수 없습니다.
      required:
        - type
        - reason
    TaxPaymentCertificateDocument:
      type: object
      description: 납세증명서. 국세 체납이 있으면 홈택스가 발급하지 않습니다. 유효기간은 발급일부터 30일입니다.
      properties:
        type:
          type: string
          const: TAX_PAYMENT_CERTIFICATE
        purpose:
          type: string
          enum:
            - PAYMENT_RECEIPT
            - OTHER
          description: 용도. `PAYMENT_RECEIPT`(대금수령), `OTHER`(기타)
      required:
        - type
        - purpose
    VatTaxBaseProofDocument:
      type: object
      description: 부가가치세 과세표준증명. `from`은 `to`보다 늦을 수 없습니다. 최대 5개 연도까지 한 번에 발급합니다.
      properties:
        type:
          type: string
          const: VAT_TAX_BASE_PROOF
        from:
          type: string
          pattern: ^\d{4}-(01|07)$
          description: 과세기간 시작 연월. 01월 또는 07월
          example: 2025-01
        to:
          type: string
          pattern: ^\d{4}-(06|12)$
          description: 과세기간 끝 연월. 06월 또는 12월
          example: 2025-12
      required:
        - type
        - from
        - to
    StandardFinancialStatementProofDocument:
      type: object
      description: 표준재무제표증명. 법인세나 종합소득세 신고를 마친 사업연도만 발급됩니다.
      properties:
        type:
          type: string
          const: STANDARD_FINANCIAL_STATEMENT_PROOF
        fiscalYearEnd:
          type: string
          pattern: ^\d{4}-(0[1-9]|1[0-2])$
          description: 사업연도 종료 연월. 개인사업자는 연도만 봅니다.
          example: 2025-12
      required:
        - type
        - fiscalYearEnd
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: API 키를 Base64 인코딩하여 전달합니다. Username에 API 키를 입력하고 Password는 비워두세요.

````