> ## 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`를 먼저 반환합니다. 최종 결과는 웹훅이나 상태 조회 API로 확인하세요.

수취인 유형(`recipient.type`)과 발급수단(`recipient.value`) 입력 방식, 금액·검증 규칙은 [현금영수증 발행 가이드](/docs/api-introduction/cash-receipt-guide)를 참고하세요.




## OpenAPI

````yaml /openapi.yaml post /v1/cashReceipts
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: >
      전자(세금)계산서 역발행 요청 및 관리. [이메일 승인
      역발행](/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-events)
  - name: 공급자
    description: >
      세금계산서를 발행하는 공급자(발행자)를 등록·관리합니다. [용어 정리](/docs/api-introduction/glossary) |
      [대리 정발행](/docs/api-introduction/usecase-delegated)
  - name: 인증서
    description: |
      공급자 공동인증서 등록 및 관리. [인증 가이드](/docs/api-introduction/authentication)
paths:
  /v1/cashReceipts:
    post:
      tags:
        - 현금영수증
      summary: 현금영수증 발행
      description: >
        현금영수증 발행 요청은 비동기입니다. API가 `202 Accepted`와 `issuanceKey`를 먼저 반환합니다. 최종
        결과는 웹훅이나 상태 조회 API로 확인하세요.


        수취인 유형(`recipient.type`)과 발급수단(`recipient.value`) 입력 방식, 금액·검증 규칙은
        [현금영수증 발행 가이드](/docs/api-introduction/cash-receipt-guide)를 참고하세요.
      parameters:
        - name: Supplier-Key
          in: header
          description: >-
            공급자 등록 API(POST /v1/suppliers)에서 발급받은 supplierKey를 입력하세요. 요청 본문의
            `issuer.businessRegistrationNumber`는 이 키에 연결된 사업자등록번호와 같아야 합니다. [용어
            정리](/docs/api-introduction/glossary) | [인증
            가이드](/docs/api-introduction/authentication)
          required: true
          example: SupplierKey_bf8paz
          schema:
            type: string
        - name: Bolta-Client-Reference-Id
          in: header
          description: >-
            1~255자의 요청자 관리번호를 입력하세요. 이 값은 멱등키로 사용합니다. 같은 값과 동일한 요청으로 다시 호출하면
            API가 기존 결과를 반환하고, 요청 내용이나 유형이 다르면 `409 Conflict`를 반환합니다. 상태를 다시 조회할
            때 이 값을 `clientReferenceId`에 입력하세요. [인증
            가이드](/docs/api-introduction/authentication#client-reference-id)
          required: true
          example: your-unique-reference-id
          schema:
            type: string
        - name: Bolta-Webhook-Test-Code
          in: header
          description: >-
            테스트 키에서 실패 웹훅을 재현할 때만 사용하세요. 실패 코드를 입력하면 API가 해당 실패 웹훅을 전송합니다.
            운영(라이브)에서는 사용하지 마세요. [웹훅 이벤트](/docs/api-introduction/webhook-events)
          required: false
          example: INVALID_RECIPIENT_IDENTIFIER
          schema:
            type: string
            enum:
              - INVALID_ISSUER
              - INVALID_RECIPIENT_IDENTIFIER
              - ORIGINAL_ISSUANCE_FAILED
              - UNKNOWN
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CashReceiptIssueRequest'
            examples:
              phone:
                summary: 휴대폰번호로 발행
                value:
                  itemName: 서비스 이용료
                  issuer:
                    businessRegistrationNumber: '5648102684'
                    organizationName: (주) 볼타코퍼레이션
                    representativeName: 이문혁
                    telephone: 02-1234-5678
                  recipient:
                    type: PHONE
                    value: 010-1234-5678
                  amount:
                    supplyAmount: 100
                    vatAmount: 10
                    taxFreeAmount: 0
              businessRegistrationNumber:
                summary: 사업자등록번호(지출증빙)로 발행
                value:
                  itemName: 서비스 이용료
                  issuer:
                    businessRegistrationNumber: '5648102684'
                    organizationName: (주) 볼타코퍼레이션
                    representativeName: 이문혁
                    telephone: 02-1234-5678
                  recipient:
                    type: BUSINESS_REGISTRATION_NUMBER
                    value: '1234567890'
                  amount:
                    supplyAmount: 100000
                    vatAmount: 10000
                    taxFreeAmount: 0
              self:
                summary: 자진발급(수취인 정보 없이 발행)
                value:
                  itemName: 서비스 이용료
                  issuer:
                    businessRegistrationNumber: '5648102684'
                    organizationName: (주) 볼타코퍼레이션
                    representativeName: 이문혁
                    telephone: 02-1234-5678
                  recipient:
                    type: SELF
                  amount:
                    supplyAmount: 100
                    vatAmount: 10
                    taxFreeAmount: 0
      responses:
        '202':
          description: API가 발행 요청을 접수했습니다. 최종 결과는 웹훅이나 상태 조회 API로 확인하세요.
          headers:
            Location:
              description: 발행 상태 조회 경로
              schema:
                type: string
                examples:
                  - >-
                    /v1/cashReceipts/status?clientReferenceId=your-unique-reference-id
          content:
            application/json:
              schema:
                type: object
                properties:
                  issuanceKey:
                    $ref: '#/components/schemas/CashReceiptIssuanceKey'
                required:
                  - issuanceKey
              example:
                issuanceKey: MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I
        '400':
          description: 잘못된 요청
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >
            supplierKey 인가에 실패했습니다. 응답의 `code`는 `FORBIDDEN`입니다. Supplier-Key가
            존재하지 않거나 다른 파트너 소유이거나, 현재 API 키로 발급한 키가 아닐 때 반환합니다. 또한 요청 본문의
            `issuer.businessRegistrationNumber`는 이 키에 연결된 사업자등록번호와 같아야 합니다.
            supplierKey는 API 키 단위로 발급하므로, 새 API 키를 발급했다면 그 키로 supplierKey를 다시
            등록하세요. [인증 가이드](/docs/api-introduction/authentication)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            동일한 clientReferenceId가 다른 요청 내용이나 유형에 사용됐습니다. 응답의 `code`는
            `IDEMPOTENCY_CONFLICT`입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: 서버 내부 오류
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: false
components:
  schemas:
    CashReceiptIssueRequest:
      type: object
      description: 현금영수증 발행 요청 본문
      properties:
        itemName:
          type: string
          title: 품목명
          description: 품목명(20자 이하)
          minLength: 1
          maxLength: 20
          examples:
            - 서비스 이용료
        issuer:
          $ref: '#/components/schemas/CashReceiptIssuer'
        recipient:
          $ref: '#/components/schemas/CashReceiptRecipient'
        amount:
          $ref: '#/components/schemas/CashReceiptAmount'
      required:
        - itemName
        - issuer
        - recipient
        - amount
    CashReceiptIssuanceKey:
      type: string
      description: 현금영수증 발행 식별 키입니다. 형식과 길이가 바뀔 수 있으므로 문자열 전체를 그대로 저장하세요.
      examples:
        - MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I
    ErrorResponse:
      type: object
      description: API 요청 실패 시 반환되는 에러 응답
      properties:
        code:
          type: string
          description: 에러 타입 식별자
        message:
          type: string
          description: 에러 설명
      required:
        - code
        - message
    CashReceiptIssuer:
      type: object
      description: >-
        현금영수증 공급자 정보입니다. `businessRegistrationNumber`에는 `Supplier-Key`에 연결된
        사업자등록번호를 입력하세요.
      properties:
        businessRegistrationNumber:
          $ref: '#/components/schemas/BusinessRegistrationNumber'
          description: 공급자 사업자등록번호
        organizationName:
          type: string
          title: 상호명
          description: 공급자 상호명(20자 이하)
          minLength: 1
          maxLength: 20
        representativeName:
          type: string
          title: 대표자명
          description: 공급자 대표자명(10자 이하)
          minLength: 1
          maxLength: 10
        telephone:
          type: string
          title: 전화번호
          description: 공급자 전화번호. 지역번호-3~4자리-4자리 유선번호 또는 15xx·16xx·18xx-4자리 대표번호 형식.
          examples:
            - 02-1234-5678
            - 1588-1234
      required:
        - businessRegistrationNumber
        - organizationName
        - representativeName
        - telephone
    CashReceiptRecipient:
      description: >
        수취인(발급 대상) 정보입니다. `type`에 맞춰 `value`를 입력하세요. 자세한 규칙은 [현금영수증 발행
        가이드](/docs/api-introduction/cash-receipt-guide)를 참고하세요.
      oneOf:
        - $ref: '#/components/schemas/CashReceiptSelfRecipient'
        - $ref: '#/components/schemas/CashReceiptPhoneRecipient'
        - $ref: '#/components/schemas/CashReceiptBusinessRegistrationNumberRecipient'
      discriminator:
        propertyName: type
        mapping:
          SELF:
            $ref: '#/components/schemas/CashReceiptSelfRecipient'
          PHONE:
            $ref: '#/components/schemas/CashReceiptPhoneRecipient'
          BUSINESS_REGISTRATION_NUMBER:
            $ref: >-
              #/components/schemas/CashReceiptBusinessRegistrationNumberRecipient
    CashReceiptAmount:
      type: object
      description: >-
        발행 금액입니다. 각 항목과 총액(supplyAmount + vatAmount + taxFreeAmount)은
        9,999,999,999 이하여야 하며, 총액은 0보다 커야 합니다.
      properties:
        supplyAmount:
          type: integer
          format: int64
          minimum: 0
          maximum: 9999999999
          description: 공급가액
          examples:
            - 100
        vatAmount:
          type: integer
          format: int64
          minimum: 0
          maximum: 9999999999
          description: 부가세액
          examples:
            - 10
        taxFreeAmount:
          type:
            - integer
            - 'null'
          format: int64
          minimum: 0
          maximum: 9999999999
          description: 면세금액(선택, 기본값 0)
          examples:
            - 0
      required:
        - supplyAmount
        - vatAmount
    BusinessRegistrationNumber:
      type: string
      title: 사업자등록번호
      description: '하이픈(-) 없는 10자리 숫자. 패턴: `^\d{10}$`'
      pattern: ^\d{10}$
      examples:
        - '1234567890'
    CashReceiptSelfRecipient:
      type: object
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - SELF
        value:
          type:
            - string
            - 'null'
          title: 발급수단
          description: 자진발급에는 입력하지 않거나 `null` 또는 빈 문자열로 설정하세요.
          maxLength: 0
      required:
        - type
    CashReceiptPhoneRecipient:
      type: object
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - PHONE
        value:
          type: string
          title: 휴대폰번호
          description: '`010-1234-5678` 형식의 휴대폰번호'
          pattern: ^010-\d{4}-\d{4}$
          examples:
            - 010-1234-5678
      required:
        - type
        - value
    CashReceiptBusinessRegistrationNumberRecipient:
      type: object
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - BUSINESS_REGISTRATION_NUMBER
        value:
          $ref: '#/components/schemas/BusinessRegistrationNumber'
          title: 사업자등록번호
          description: 지출증빙에 사용할 하이픈 없는 10자리 사업자등록번호
      required:
        - type
        - value
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: API 키를 Base64 인코딩하여 전달합니다. Username에 API 키를 입력하고 Password는 비워두세요.

````