# 거래 내역 보관과 해제 Source: https://docs.bolta.io/docs/accounting/archive 매출, 매입, 입출금 내역을 보관하거나 다시 목록에 표시합니다. ## 내역 보관 목록과 통계에서 제외할 거래를 보관하세요. 매출, 매입, 입출금 내역에서 각각 관리합니다. 1. \[재무·회계]에서 \[매출 내역], \[매입 내역] 또는 \[입출금 내역]을 여세요. 2. 대상 행을 선택하고 하단의 \[보관]을 클릭하세요. 한 건은 상세 화면의 관리 메뉴에서 \[보관하기]를 선택합니다. 3. 대상과 건수를 확인한 뒤 \[네, 보관할게요]를 클릭하세요. 보관한 내역은 합계와 통계에서 제외합니다. 세금계산서를 취소해야 한다면 [수정발행](/docs/invoice/sales/issue/amend)을, 현금영수증을 취소해야 한다면 [취소발행](/docs/cash-receipt/history)을 진행하세요. ![보관함에서 거래를 선택하고 보관 해제를 진행하는 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-archived-revenues.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=f4c8236f303130838de0bd332d364f20) ## 보관 내역 조회와 해제 각 목록의 \[보관 내역]을 클릭하세요. \[보관함]에서 검색과 조회 조건으로 대상 거래를 찾습니다. 목록에서 대상 행을 선택한 뒤 \[보관 해제]를 클릭하고 확인하세요. 상세 화면에서도 보관을 해제합니다. \[뒤로가기]로 원래 목록으로 돌아와 내역을 확인하세요. 매출과 매입 보관함에서는 대상 행을 선택해 \[수정]으로 관리 정보를 함께 변경합니다. [매출 내역](/docs/accounting/revenues)과 [매입 내역](/docs/accounting/expenses)의 일괄 수정 절차를 참고하세요. # 매입 내역 조회 Source: https://docs.bolta.io/docs/accounting/expenses 매입 거래와 지급 내역을 확인합니다. ## 매입 조회 \[재무·회계] > \[매입 내역]으로 이동하세요. 거래처나 품목명으로 검색하고 조회 기간과 지급 상태를 선택하세요. ![매입 내역의 거래처, 금액, 지급 내역 열](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-expenses.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=5e528fa1249c6c8c2c6d4d6bd3f5c4de) 거래 행을 열어 상세 내용을 확인하세요. 목록에서는 거래처, 품목명, 날짜, 담당자, 금액을 확인합니다. ## 지급 내역 연결 \[지급 내역] 열의 추가 버튼을 클릭해 지급 정보를 연결하세요. 은행 거래와 연결하거나 지급 내역을 직접 입력합니다. [지급 내역 관리](/docs/invoice/purchase/payment-history)를 참고하세요. 홈택스 매입 내역을 가져오려면 [매출과 매입 내역 연동](/docs/setting/general/data-sync)을 설정하세요. ## 상세 문서 확인 내역을 열어 공급자, 공급받는자와 금액을 확인하세요. \[PDF 다운로드]로 문서를 저장합니다. 정보를 불러오는 중이면 완료 후 확인하고, 불러오기가 오래 걸린다는 안내가 나오면 \[새로고침]을 클릭하세요. ## 여러 매입의 지급 상태 수정 대상 행을 선택하고 하단의 \[수정]을 클릭하세요. 일괄 수정 창에서 \[지급 완료] 또는 \[지급 연결 해제]를 선택하고 \[수정]을 클릭하세요. 변경하지 않을 값은 \[기존 항목 유지]로 두세요. 지급 완료 처리는 실제 송금이 아니라 관리 기록을 변경합니다. 계좌 거래를 확인한 뒤 처리하세요. 통계에서 제외할 내역은 [보관과 해제](/docs/accounting/archive)를 이용하세요. # 입금 매칭 규칙 관리 Source: https://docs.bolta.io/docs/accounting/matching-rules 거래처와 적요 조건으로 입금 매칭 규칙을 추가하고 수정합니다. ## 규칙 추가 1. \[재무·회계] > \[AI 입금 매칭]에서 \[매칭 규칙 관리]를 클릭하세요. 2. \[추가하기]를 클릭하세요. 등록한 규칙이 없을 때는 \[규칙 추가하기]로 시작합니다. 3. \[연결 방법]에서 \[승인 후 연결] 또는 \[자동으로 연결]을 선택하세요. 승인 후 연결은 검토 대기에 제안을 만들고, 자동 연결은 별도 승인 없이 연결합니다. 4. \[연결할 거래처]에서 회사명이나 사업자등록번호로 거래처를 검색해 선택하세요. 5. \[연결할 입금 내역]에 적요 키워드와 조건을 입력하세요. 여러 조건은 \[조건 추가]로 등록합니다. 6. \[결과 미리보기]에서 해당하는 입금과 거래처를 확인한 뒤 \[추가하기]를 클릭하세요. | 조건 | 적용할 적요 | | - | - | | 일치 | 키워드와 정확히 같은 적요 | | 포함 | 키워드를 포함하는 적요 | | \~로 시작 | 키워드로 시작하는 적요 | 조건을 여러 개 등록하면 그중 하나에 맞는 적요를 대상으로 확인합니다. 키워드는 최대 255자이며 영문 대소문자를 구분합니다. 적요 조건에 맞고 금액이 일치하는 매출을 연결합니다. 고객 상세의 \[입금 매칭 규칙]에서도 규칙 목록으로 이동합니다. ![거래처와 적요 조건, 연결 방법을 수정하고 입금 미리보기를 확인하는 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-matching-rule-edit.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=085f22354fc27d7237e6813cf0f50f7d) ## 결과 미리보기 데스크톱의 규칙 입력 창 오른쪽에서 입금 내역을 확인하세요. 금액이나 적요로 검색하거나 \[조건에 맞는 내역만]을 선택해 범위를 좁힙니다. 다른 거래처의 규칙과 겹치면 미리보기에 표시된 적용 우선순위를 확인하고 조건을 조정하세요. 미리보기를 불러오지 못했다면 \[다시 시도]를 클릭하세요. 저장 시 중복 조건이나 거래처 오류가 표시되면 해당 입력을 고쳐 다시 저장하세요. ## 규칙 수정과 삭제 수정할 규칙 행을 클릭하세요. 거래처, 적요 조건, 연결 방법을 변경한 뒤 \[저장하기]를 클릭하세요. \[승인 후 연결]을 \[자동으로 연결]로 바꾸면 검토 대기 중인 매칭도 연결할 수 있습니다. 확인 창의 건수를 검토한 뒤 \[네, 연결할게요]를 선택하세요. 결과는 \[지난 내역]에서 확인합니다. 규칙을 삭제하려면 행의 관리 메뉴에서 \[규칙 삭제]를 클릭하고 확인하세요. 이미 연결한 입금은 유지하며 새로 들어오는 입금에는 삭제한 규칙을 적용하지 않습니다. 기존 연결도 바꾸려면 [입출금 내역](/docs/bank/transaction-management)에서 연결을 해제하세요. ## AI 추천 규칙 검토 \[AI 추천 규칙] 안내의 \[검토하기]를 클릭하세요. 추천한 거래처와 적요 조건, 이전 승인 횟수를 확인합니다. 사용할 조건이면 \[규칙 추가]를, 사용하지 않을 조건이면 \[거절]을 선택하세요. 추가한 규칙은 목록에서 열어 연결 방법과 조건을 확인하거나 수정합니다. # AI 입금 매칭 Source: https://docs.bolta.io/docs/accounting/payment-matches 입금 거래와 매출의 연결 제안을 검토합니다. ## 이용 준비 라이트 플랜부터 이용합니다. [은행 계좌](/docs/bank/account-management)를 연동하고 입금 내역과 매출 내역 조회 권한을 확인하세요. 권한이 없다면 워크스페이스 관리자에게 요청하세요. ## 제안 검토와 승인 1. \[재무·회계] > \[AI 입금 매칭]의 \[검토 대기]를 여세요. 2. 입금의 적요, 거래일시, 금액과 제안된 매출의 거래처, 품목, 금액을 비교하세요. \[매칭 근거]에서 AI 추천인지 규칙 일치인지 확인합니다. 3. 내역을 클릭해 \[매칭 상세 정보]를 여세요. \[상세보기]로 대상 매출도 확인합니다. 4. 연결할 거래가 맞으면 \[매칭 승인하기]를 클릭하고 \[네, 승인할게요]로 확정하세요. 입금과 매출이 연결됩니다. ![입금 내역과 매칭 제안, 근거를 비교하는 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-payment-matches.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=fdd7be023181ea87b2a0cc997f8acf96) 목록의 \[승인] 버튼으로도 처리합니다. 한 번에 최대 100건을 함께 처리합니다. 체크박스로 선택한 뒤 \[승인하기]를 클릭하세요. 확인 창에 표시된 처리 건수를 확인하세요. 연결할 매출이 사라진 제안은 승인 대상에서 제외합니다. ![입금과 매출의 금액을 비교하고 매칭을 승인하거나 거절하는 상세 창](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-matching-review-detail.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=bcd49c916e53adb4b92ebe4b2ce3da78) ## 제안 거절과 직접 연결 거래가 다르면 \[거절] 또는 상세 화면의 \[거절하기]를 클릭하고 확인하세요. 여러 건은 선택 후 \[거절하기]로 처리합니다. 거절한 같은 내역은 다시 제안하지 않습니다. 다른 매출에 연결하려면 상세 화면의 \[입금 내역 상세]로 이동하세요. \[연결된 증빙]에서 올바른 매출을 선택합니다. [입출금 내역 관리](/docs/bank/transaction-management)를 참고하세요. ## 처리 결과 확인 \[지난 내역]에서 매칭완료, 매칭거절, 매칭종료를 확인하세요. 완료한 연결을 바꾸려면 해당 내역을 열고 \[입금 내역 상세]에서 연결을 해제한 뒤 다시 연결하세요. 이미 처리됐다는 안내가 나오면 갱신된 목록과 지난 내역을 확인하세요. 조회에 실패했다면 다시 불러온 뒤 처리 상태를 확인합니다. 반복되는 거래는 [매칭 규칙 관리](/docs/accounting/matching-rules)에서 조건을 저장하세요. 거래처별 미수금은 [고객 거래 내역](/docs/customer/issue-history)에서 확인합니다. # 매출 내역 조회 Source: https://docs.bolta.io/docs/accounting/revenues 세금계산서와 현금영수증 매출을 확인하고 입금 내역을 관리합니다. ## 매출 조회 \[재무·회계] > \[매출 내역]으로 이동하세요. 거래처나 품목명으로 검색하고 조회 기간, 거래 유형, 입금 상태를 선택하세요. ![매출 내역의 거래처, 금액, 입금 내역 열](https://mintcdn.com/bolta/m0K_FW6YoHBhsTYx/images/docs/guide-revenues.png?fit=max\&auto=format\&n=m0K_FW6YoHBhsTYx\&q=85\&s=6593757e5f48e0f420e4ecbb37c7e405) 거래 행을 열면 상세 내용을 확인합니다. 거래처 담당자, 금액, 라벨을 확인하고 필요한 항목을 관리하세요. ## 입금 연결 \[입금 내역] 열의 추가 버튼으로 입금 정보를 연결하세요. 은행 거래와 연결하거나 직접 입력한 입금 내역을 관리합니다. [입금 내역 관리](/docs/invoice/sales/management/deposit-history)를 참고하세요. 여러 거래의 입금을 확인하려면 [AI 입금 매칭](/docs/accounting/payment-matches)에서 제안을 검토하세요. 홈택스 내역은 [매출과 매입 내역 연동](/docs/setting/general/data-sync)에서 연결합니다. ## 상세 정보와 문서 다운로드 세금계산서 내역을 열어 \[상세 내용]과 \[수정발행 이력]을 확인하세요. PDF가 필요하면 \[PDF 다운로드]를 클릭하세요. 볼타 발행 건에서 XML이 필요하면 \[XML 다운로드]를 이용합니다. 수정발행과 이메일 재발송 버튼이 표시된 내역은 상세 화면에서 해당 작업을 진행합니다. 현금영수증 내역은 승인번호와 거래유형을 확인하세요. 원본 발행 상태와 취소 처리는 [현금영수증 내역 관리](/docs/cash-receipt/history)를 참고하세요. ![입금 내역, 라벨과 메모의 일괄 수정 창](https://mintcdn.com/bolta/m0K_FW6YoHBhsTYx/images/docs/guide-revenue-bulk-edit.png?fit=max\&auto=format\&n=m0K_FW6YoHBhsTYx\&q=85\&s=859a1305e142aa82dc1f92b29f4b4788) ## 여러 매출의 관리 정보 수정 1. 목록에서 변경할 행을 선택하고 하단의 \[수정]을 클릭하세요. 2. \[입금 내역], \[라벨], \[메모] 중 변경할 항목을 설정하세요. 변경하지 않을 항목은 \[기존 항목 유지]로 두세요. 3. 입금 상태는 \[입금 완료] 또는 \[입금 연결 해제]를 선택합니다. 라벨과 메모는 \[모두 바꾸기]로 입력하거나 \[모두 제거]를 선택합니다. 4. \[수정]을 클릭하고 목록과 상세 화면에서 결과를 확인하세요. 입금 완료는 관리 기록을 변경합니다. 실제 계좌의 입금 여부를 확인한 뒤 처리하세요. 통계에서 제외할 거래는 [보관과 해제](/docs/accounting/archive)를 이용하세요. # 수정발행 유형 Source: https://docs.bolta.io/docs/api-introduction/amendment-guide 전자(세금)계산서 수정발행의 유형별 동작 방식과 계산 예시를 안내합니다. ## 계약의 해제 계약의 해제 사유 수정발행은 `date`(작성일자)만 보내며, 기존 발행건을 상계처리합니다. **예시** | 구분 | 금액 | | - | - | | 원본 세금계산서 | 50,000원 | | 계약의 해제 수정발행 | **-50,000원** | > [!WARNING] > > 원본 세금계산서의 품목 공급가액이 음수인 경우 계약의 해제 수정발행이 불가합니다. ## 공급가액 변동 공급가액 변동 사유 수정발행은 기존 대비 얼마나 (+) 또는 (-) 되었는지를 품목으로 전달합니다. 예를 들어, 품목의 단가를 1,000원씩 초과하여 작성했다면, -1,000원으로 발행합니다. > [!NOTE] > > 품목 입력 제한과 [지원하지 않는 문자](/docs/api-introduction/issuance-guide#지원하지-않는-문자) 처리는 정발행과 같습니다. 품목은 1개 이상 16개 이하, 품목 규격(`items[].specification`)은 최대 60자입니다. 과세유형(`taxType`)도 함께 보내고, 세액(`items[].tax`)은 아래 표에 맞춰 입력하세요. | 과세유형(`taxType`) | 품목 세액(`items[].tax`) | | - | - | | `TAXABLE` | `null`이 아닌 값을 전달 | | `ZERO_RATE` | 모든 품목에 `0`을 전달 | | `TAX_FREE` | 모든 품목에 `null`을 전달하거나 필드를 생략 | ### 계산 예시 **원본 세금계산서** | 품목명 | 단가(unitPrice) | 수량(quantity) | 공급가액(supplyCost) | 세액(tax) | 금액(supplyCost + tax) | | - | - | - | - | - | - | | 첫 번째 품목 | 5,000 | 10 | 50,000 | 5,000 | 55,000 | | 두 번째 품목 | 3,000 | 50 | 150,000 | 15,000 | 165,000 | **공급가액 변동 수정 세금계산서** (차이값을 전달) | 품목명 | 단가(unitPrice) | 수량(quantity) | 공급가액(supplyCost) | 세액(tax) | 금액(supplyCost + tax) | | - | - | - | - | - | - | | 첫 번째 품목 | **-1,000** | 10 | -10,000 | -1,000 | -11,000 | | 두 번째 품목 | **-1,000** | 50 | -50,000 | -5,000 | -55,000 | **최종 거래 금액** | 품목명 | 단가(unitPrice) | 수량(quantity) | 공급가액(supplyCost) | 세액(tax) | 금액(supplyCost + tax) | | - | - | - | - | - | - | | 첫 번째 품목 | 4,000 | 10 | 40,000 | 4,000 | 44,000 | | 두 번째 품목 | 2,000 | 50 | 100,000 | 10,000 | 110,000 | ## 착오에 의한 이중발급 착오에 의한 이중발급 사유 수정발행은 요청 파라미터 없이 호출하며, 기존 발행건을 상계처리합니다. 작성일자는 당초 세금계산서의 작성일자가 자동 적용됩니다. **예시** | 구분 | 금액 | | - | - | | 원본 세금계산서 | 50,000원 | | 착오에 의한 이중발급 수정발행 | **-50,000원** | # 인증 Source: https://docs.bolta.io/docs/api-introduction/authentication 볼타 API 인증 방식과 요청 헤더 사용법을 안내합니다. ## API 키 인증 (Basic Auth) 볼타 API는 HTTP Basic Authentication을 사용합니다. API 키를 Base64로 인코딩해 `Authorization` 헤더에 넣으세요. ```bash theme={"dark"} Authorization: Basic {Base64(API_KEY:)} ``` > [!WARNING] > > API 키 뒤에 콜론(`:`)을 붙인 뒤 Base64로 인코딩하세요. **예시** ```bash theme={"dark"} # API 키가 test_abc123인 경우 # Base64("test_abc123:") = dGVzdF9hYmMxMjM6 curl -X POST https://xapi.bolta.io/v1/taxInvoices/issue \ -H "Authorization: Basic dGVzdF9hYmMxMjM6" \ -H "Content-Type: application/json" ``` ## 테스트 키 vs 라이브 키 | 구분 | 접두사 | 용도 | | - | - | - | | 테스트 키 | `test_` | 샌드박스 환경, 국세청 미연동 | | 라이브 키 | `live_` | 실제 환경, 국세청 연동 | 개발과 테스트에는 테스트 키를 사용하세요. > API 키 발급 방법은 [API 키 가이드](/docs/developer-center/api-key)를 참고하세요. ## 요청 헤더 ### Client-Reference-Id `Bolta-Client-Reference-Id`는 발행 요청을 구분하는 요청자 관리번호입니다. 세금계산서, 현금영수증, 서류 발급의 중복 요청 처리 방식이 다릅니다. #### 세금계산서 정발행, 수정발행, 역발행 요청을 구분하려면 1\~255자의 비어 있지 않은 값을 입력하세요. 이 헤더는 선택 사항입니다. ```bash theme={"dark"} Bolta-Client-Reference-Id: your-unique-reference-id ``` 같은 API 키로 이미 사용한 값은 요청 내용이나 API 경로와 관계없이 다시 쓸 수 없습니다. 중복 요청이면 API가 HTTP `400`과 `INVALID_REQUEST`를 반환합니다. 네트워크 오류 등으로 응답을 받지 못했다면 같은 요청을 다시 보내지 마세요. 요청에 사용한 값을 `clientReferenceId`에 넣어 처리 상태를 조회하세요. ```bash theme={"dark"} curl "https://xapi.bolta.io/v1/taxInvoices/issue/status?clientReferenceId=your-unique-reference-id" \ -H "Authorization: Basic {apiKey}" ``` #### 현금영수증 현금영수증 발행과 취소 요청에는 이 헤더가 필수입니다. 1\~255자의 값을 입력하세요. 같은 API 키와 요청자 관리번호로 요청 내용과 유형까지 동일하게 다시 호출하면 API가 기존 접수 건의 `issuanceKey`를 담은 `202 Accepted` 응답을 반환합니다. 요청 내용이나 유형이 다르면 `409 Conflict`와 `IDEMPOTENCY_CONFLICT`를 반환합니다. 취소 요청에는 발행 요청과 다른 값을 사용하세요. 요청 흐름은 [현금영수증 발행 가이드](/docs/api-introduction/cash-receipt-guide)를 참고하세요. #### 서류 발급 서류 발급 요청에는 이 헤더가 필수입니다. 1\~255자의 값을 입력하세요. 같은 값과 같은 본문으로 다시 보내면 API가 기존 요청을 반환합니다. 본문이 다르면 `409 Conflict`와 `IDEMPOTENCY_CONFLICT`를 반환합니다. 요청 흐름은 [서류 발급](/docs/api-introduction/document-issuance)을 참고하세요. # 예금주 조회 Source: https://docs.bolta.io/docs/api-introduction/bank-account-holder 은행코드와 계좌번호로 예금주명을 조회하는 API의 이용 조건, 요금, 일괄 조회와 금액 지정형 가상계좌 처리 방법을 안내합니다. ## 무엇을 조회하나요 은행코드와 계좌번호를 보내면 예금주명을 돌려줍니다. 송금하기 전에 거래처 계좌가 맞는지 확인할 때 쓰세요. | 경로 | 용도 | | - | - | | `POST /v1/bankAccountHolders:inquire` | 계좌 한 건의 예금주 조회 | | `POST /v1/bankAccountHolders:bulkInquire` | 계좌 최대 100건의 예금주 조회 | ## 이용 조건 두 경로 모두 발급자 등록, 공동인증서, 요청자 관리번호(`Bolta-Client-Reference-Id`)가 필요 없고 구독 플랜 제한도 없습니다. `Authorization` 헤더에 `Basic {apiKey}`만 넣으면 됩니다. 인증은 [인증 가이드](/docs/api-introduction/authentication)를 참고하세요. ## 요금 예금주를 돌려준 계좌마다 50포인트를 차감합니다. 예금주를 찾지 못했거나 조회에 실패한 계좌, 입력 오류, 한도 초과, 잔액 부족, 테스트 키 호출은 차감하지 않습니다. 일반 계좌는 한 요청 안에서 같은 은행코드와 계좌번호를 여러 번 넣어도 한 번만 차감합니다. 금액 지정형 가상계좌는 고유한 `amount`마다 차감합니다. 요청을 다시 보내면 다시 차감합니다. ## 단건 조회 ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/bankAccountHolders:inquire \ -H "Authorization: Basic {apiKey}" \ -H "Content-Type: application/json" \ -d '{ "bankCode": "088", "accountNumber": "100-0000-001" }' ``` | 필드 | 형식 | 필수 | 설명 | | - | - | - | - | | `bankCode` | string | 예 | 금융결제원 3자리 은행코드. 아래 지원 은행 표 참고 | | `accountNumber` | string | 예 | 계좌번호. 하이픈을 포함해도 됩니다. 하이픈을 뺀 숫자가 6\~20자리 | | `amount` | integer | 아니오 | 금액 지정형 가상계좌의 입금 금액(원). 일반 계좌는 비워 두세요 | API는 `200 OK`와 아래 응답을 반환합니다. ```json theme={"dark"} { "bankCode": "088", "accountNumber": "1000000001", "holderName": "홍길동" } ``` | 필드 | 형식 | 설명 | | - | - | - | | `bankCode` | string | 요청한 은행코드 | | `accountNumber` | string | 하이픈을 뗀 계좌번호 | | `holderName` | string | 예금주명 | ## 지원 은행 `bankCode`는 금융결제원 3자리 표준 은행코드입니다. 국내 은행은 아래 26곳을 지원합니다. | `bankCode` | 은행 | | - | - | | `002` | 산업은행 | | `003` | 기업은행 | | `004` | 국민은행 | | `005` | 외환은행 | | `007` | 수협 | | `011` | 농협중앙회 | | `012` | 지역농협 | | `020` | 우리은행 | | `023` | SC제일은행 | | `027` | 씨티은행 | | `031` | iM뱅크(대구은행) | | `032` | 부산은행 | | `034` | 광주은행 | | `035` | 제주은행 | | `037` | 전북은행 | | `039` | 경남은행 | | `045` | 새마을금고 | | `048` | 신협 | | `050` | 저축은행 | | `064` | 산림조합 | | `071` | 우체국 | | `081` | 하나은행 | | `088` | 신한은행 | | `089` | 케이뱅크 | | `090` | 카카오뱅크 | | `092` | 토스뱅크 | 외국계 은행은 `054` HSBC은행, `055` 도이치은행, `056` 알비에스피엘씨은행, `057` 제이피모간체이스은행, `058` 미즈호코퍼레이트은행, `059` 미쓰비시도쿄UFJ은행, `060` BOA, `061` 비엔피파리바은행, `062` 중국공상은행, `063` 중국은행, `067` 중국건설은행을 지원합니다. 목록에 없는 코드로 조회하면 `400`과 `UNSUPPORTED_BANK`를 반환합니다. `001` 한국은행, `008` 수출입은행, `026` 서울은행, `052` 모건스탠리은행, `065` 대화은행, `066` 교통은행, `900` HANMI BANK, `901` KANSAI MIRAI BANK, `902` KEB 하나은행(JP)이 여기에 해당합니다. ## 일괄 조회 `accounts`에 계좌를 1개 이상 100개 이하로 넣으세요. ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/bankAccountHolders:bulkInquire \ -H "Authorization: Basic {apiKey}" \ -H "Content-Type: application/json" \ -d '{ "accounts": [ { "bankCode": "088", "accountNumber": "1000000001" }, { "bankCode": "089", "accountNumber": "1000000004" } ] }' ``` 계좌마다 결과 하나를 요청과 같은 순서로 돌려줍니다. ```json theme={"dark"} { "results": [ { "bankCode": "088", "accountNumber": "1000000001", "holderName": "홍길동", "error": null }, { "bankCode": "089", "accountNumber": "1000000004", "holderName": null, "error": { "code": "AMOUNT_REQUIRED", "message": "입금 금액이 정해진 가상계좌입니다. 총 지급 금액을 입력한 뒤 예금주를 다시 조회해 주세요." } } ] } ``` | 필드 | 형식 | 설명 | | - | - | - | | `results` | array | 요청한 계좌마다 항목 하나. 순서는 요청과 같습니다 | | `results[].holderName` | string 또는 null | 예금주명. 찾지 못했으면 `null` | | `results[].error` | object 또는 null | 찾지 못한 원인. `code`는 단건 조회 오류 코드와 같습니다 | 항목 하나라도 형식이 틀리면 요청 전체를 `400 INVALID_REQUEST`로 거절합니다. `error.code`가 `BANK_UNAVAILABLE`인 항목은 판정하지 못한 계좌입니다. 은행이 점검 중이라고 답하면 `message`가 점검이라고 알립니다. 잠시 후 그 계좌만 다시 조회하세요. 한 계좌도 판정하지 못하면 이 응답 대신 `503 BANK_UNAVAILABLE`을 반환합니다. ## 금액 지정형 가상계좌 입금 금액이 정해진 가상계좌는 금액을 함께 보내야 예금주를 확인합니다. `amount` 없이 조회하면 `AMOUNT_REQUIRED`를 반환합니다. 그 계좌로 보낼 총 지급 금액을 `amount`에 넣어 다시 조회하세요. 금액이 다르면 `AMOUNT_MISMATCH`를 반환합니다. ## 하루 한도 하루에 조회할 수 있는 계좌는 10,000개입니다. 요청 수가 아니라 조회한 계좌 수로 셉니다. 테스트 키와 라이브 키는 한도를 따로 셉니다. 한도에 도달하면 `429`와 `RATE_LIMITED`를 반환합니다. `Retry-After` 뒤에 다시 시도하세요. 조회 한 건은 최대 45초까지 기다립니다. 넘으면 `503 BANK_UNAVAILABLE`로 끝나고 차감하지 않습니다. ## 테스트 키 테스트 키는 포인트를 차감하지 않고 아래 계좌번호만 받습니다. 은행코드는 지원 은행이면 무엇이든 됩니다. | 계좌번호 | 결과 | | - | - | | `1000000001` | `holderName`이 `홍길동` | | `1000000002` | `holderName`이 `(주)볼타` | | `1000000003` | `ACCOUNT_NOT_VERIFIED` | | `1000000004` | `amount`가 없으면 `AMOUNT_REQUIRED`, `20000`이면 `김볼타`, 그 외 금액이면 `AMOUNT_MISMATCH` | | `1000000005` | `BANK_UNAVAILABLE` | 목록 밖 계좌번호는 `400 INVALID_REQUEST`를 반환합니다. ## 오류 예금주를 찾지 못하면 단건 조회는 HTTP 400으로 응답하고, 일괄 조회는 HTTP 200 응답의 `results[].error`에 오류를 담습니다. | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 요청 형식 오류, 계좌 100개 초과, 테스트 키로 안내 목록 밖 계좌 조회 | | `400` | `ACCOUNT_NOT_VERIFIED` | 계좌를 확인하지 못함. 은행코드와 계좌번호를 확인하세요 | | `400` | `ACCOUNT_NOT_AVAILABLE` | 사고신고 계좌, 해약 계좌, 입금이 정지된 가상계좌. 사고신고 계좌는 은행에 계좌 상태를 확인하고, 해약 계좌는 다른 계좌를 입력하세요. 가상계좌는 발급한 기관에 문의하세요 | | `400` | `AMOUNT_REQUIRED` | 입금 금액이 정해진 가상계좌. `amount`를 넣어 다시 조회하세요 | | `400` | `AMOUNT_MISMATCH` | 입력한 `amount`가 가상계좌에 정해진 금액과 다름 | | `400` | `AMOUNT_VERIFICATION_UNAVAILABLE` | 금액 지정형 가상계좌를 지금은 조회할 수 없음. 계좌를 발급한 곳에서 예금주를 확인하세요 | | `400` | `UNSUPPORTED_BANK` | 예금주 조회를 지원하지 않는 은행코드 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족. 개발자센터에서 충전하세요 | | `403` | `FORBIDDEN` | 접근 권한 없음 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족. 충전하거나 그 요청이 끝난 뒤 다시 요청하세요 | | `429` | `RATE_LIMITED` | 하루 조회 한도 초과. `Retry-After` 뒤에 다시 시도하세요 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `BANK_UNAVAILABLE` | 은행 점검이나 연결 오류. 점검이면 `message`가 점검이라고 알림 | | `503` | `LOOKUP_UNAVAILABLE` | 조회 보호 한도를 판정할 수 없음 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | 전체 에러 코드는 [에러 코드](/docs/api-introduction/error-codes)를 참고하세요. ## 관련 문서 * [예금주 단건 조회 API](/api-reference/bank-account-holder/inquire-bank-account-holder) * [예금주 일괄 조회 API](/api-reference/bank-account-holder/bulk-inquire-bank-account-holders) * [요금 안내](/docs/api-introduction/pricing) * [입출금 내역 조회](/docs/api-introduction/bank-account-transactions) # 입출금 내역 조회 Source: https://docs.bolta.io/docs/api-introduction/bank-account-transactions 볼타에 연결한 입출금 계좌와 입출금 내역을 조회하고 동기화를 요청하는 API의 이용 조건과 cursor 사용법을 안내합니다. ## 무엇을 조회하나요 볼타에 연결한 내 사업자의 입출금 계좌와 입출금 내역을 조회합니다. 볼타가 은행에서 가져와 적재한 내역을 그대로 돌려주고, 필요하면 동기화도 요청할 수 있습니다. 조회 대상은 API 키가 속한 사업자 한 곳입니다. | 경로 | 용도 | | - | - | | `GET /v1/bankAccounts` | 연결된 입출금 계좌와 계좌별 동기화 상태 | | `GET /v1/bankAccounts/transactions` | 적재된 입출금 내역 (cursor 기반) | | `POST /v1/bankAccounts:sync` | 입출금 내역 동기화 요청 | ## 이용 조건 포인트를 차감하지 않습니다. 대신 스탠다드 플랜 이상을 구독해야 합니다. 무료체험 중이어도 체험 중인 플랜이 스탠다드 이상이면 이용할 수 있습니다. 플랜이 모자라면 세 경로 모두 `402`와 `PLAN_UPGRADE_REQUIRED`를 반환합니다. 볼타 대시보드의 결제 메뉴에서 플랜을 업그레이드한 뒤 다시 호출하세요. > [!NOTE] > > 계좌는 볼타 대시보드에서 먼저 연결하세요. 연결 방법은 [은행 계좌 연동/해지](/docs/bank/account-management)를 참고하세요. 세 경로 모두 발급자 등록, 공동인증서, 요청자 관리번호(`Bolta-Client-Reference-Id`)가 필요 없습니다. `Authorization` 헤더에 `Basic {apiKey}`만 넣으면 됩니다. 인증은 [인증 가이드](/docs/api-introduction/authentication)를 참고하세요. ## 주요 제한 | 항목 | 제한 | | - | - | | 동기화 요청 | 사업자마다 30분에 1번, 24시간에 12번 | | 응답 반영 | 볼타에서 바뀐 뒤 약 5분 | | 한 번에 받는 건수 (`limit`) | 최대 500건, 기본 100건 | ## 계좌 목록 ```bash theme={"dark"} curl https://xapi.bolta.io/v1/bankAccounts \ -H "Authorization: Basic {apiKey}" ``` ```json theme={"dark"} { "items": [ { "id": "1", "bankCode": "004", "bankName": "국민은행", "accountNumber": "123456-01-234567", "name": "운영자금", "currencyCode": "KRW", "lastSyncedAt": "2026-09-18T00:00:12Z", "syncStatus": "IDLE" } ] } ``` | 필드 | 형식 | 설명 | | - | - | - | | `id` | string | 계좌 식별자 | | `bankCode` | string | 금융결제원 3자리 은행코드. 아래 은행코드 표 참고 | | `bankName` | string | 은행 이름 | | `accountNumber` | string | 하이픈을 포함한 계좌번호 | | `name` | string | 대시보드에서 붙인 별칭. 없으면 은행 계좌명 | | `currencyCode` | string | ISO 4217 통화 코드. `KRW`, `USD`, `JPY` | | `lastSyncedAt` | string 또는 null | 마지막으로 완료한 동기화 시각 (UTC) | | `syncStatus` | string | `IDLE`, `IN_PROGRESS`, `FAILED` | ### 은행코드 `bankCode`는 금융결제원 3자리 표준 은행코드입니다. 볼타가 연결을 지원하는 은행은 아래와 같습니다. | `bankCode` | 은행 | | - | - | | `002` | 산업은행 | | `003` | 기업은행 | | `004` | 국민은행 | | `007` | 수협은행 | | `011` | 농협은행 | | `020` | 우리은행 | | `023` | SC제일은행 | | `027` | 씨티은행 | | `031` | iM뱅크(대구은행) | | `032` | 부산은행 | | `034` | 광주은행 | | `035` | 제주은행 | | `037` | 전북은행 | | `039` | 경남은행 | | `045` | 새마을금고 | | `048` | 신협 | | `071` | 우체국 | | `081` | 하나은행 | | `088` | 신한은행 | | `089` | 케이뱅크 | 지역농축협 계좌도 `011`로 내려옵니다. ## 입출금 내역 ```bash theme={"dark"} curl "https://xapi.bolta.io/v1/bankAccounts/transactions?limit=100" \ -H "Authorization: Basic {apiKey}" ``` | 파라미터 | 필수 | 설명 | | - | - | - | | `from` | X | 거래일 시작. `YYYY-MM-DD` (KST, 포함) | | `to` | X | 거래일 끝. `YYYY-MM-DD` (KST, 포함) | | `bankAccountId` | X | 계좌 목록의 `id` | | `transactionType` | X | `DEPOSIT`, `WITHDRAW`, `OTHER` | | `cursor` | X | 이전 응답의 `nextCursor` | | `limit` | X | 1부터 500까지. 기본 100 | 기간을 주지 않으면 적재된 전체 내역을 조회합니다. ```json theme={"dark"} { "items": [ { "status": "ACTIVE", "id": "1", "bankAccountId": "1", "bankCode": "004", "accountNumber": "123456-01-234567", "transactionAt": "2026-09-01T00:30:00Z", "transactionType": "DEPOSIT", "amount": 1100000, "balanceAfterTransaction": 5100000, "description": "주식회사볼타", "currencyCode": "KRW" }, { "status": "REMOVED", "id": "6" } ], "nextCursor": "djI6MTc4ODU3MDAwMDAwMDAwMDo2OjJ6OWZiOA", "hasMore": false } ``` 항목은 `status`에 따라 모양이 다릅니다. | `status` | 뜻 | 담는 필드 | | - | - | - | | `ACTIVE` | 볼타 대시보드에 보이는 거래 | 아래 표의 모든 필드 | | `REMOVED` | 계좌 연동 해제, 보관 등으로 대시보드에서 안 보이게 된 거래 | `status`, `id` | | 필드 | 형식 | 설명 | | - | - | - | | `items[].status` | string | `ACTIVE`, `REMOVED` | | `items[].id` | string | 거래 식별자 | | `items[].bankAccountId` | string | 계좌 `id` | | `items[].bankCode` | string | 계좌의 은행코드. 계좌 목록의 `bankCode`와 같음 | | `items[].accountNumber` | string | 하이픈을 포함한 계좌번호 | | `items[].transactionAt` | string | 거래 시각 (UTC) | | `items[].transactionType` | string | `DEPOSIT`, `WITHDRAW`, `OTHER` | | `items[].amount` | number | 거래 금액. 0 이상이며 방향은 `transactionType`으로 구분 | | `items[].balanceAfterTransaction` | number | 거래 후 잔액 | | `items[].description` | string 또는 null | 은행 적요 | | `items[].currencyCode` | string | 계좌의 통화 코드 | | `nextCursor` | string | 다음 호출에 넘길 cursor | | `hasMore` | boolean | 지금 바로 이어 받을 내역이 더 있는지 여부 | `OTHER`는 은행이 입금액과 출금액을 모두 0으로 준 거래이며 `amount`가 0입니다. ## 순서와 cursor API는 볼타에서 거래가 바뀐 순서로 돌려줍니다. 거래 시각 순서가 아닙니다. 화면에 최신순으로 보여 주려면 받은 뒤 `transactionAt`으로 정렬하세요. 같은 `id`가 여러 번 올 수 있습니다. 받은 순서대로 `id` 기준으로 반영하세요. * `ACTIVE`: 같은 `id`가 있으면 덮어쓰고, 없으면 추가하세요. * `REMOVED`: 같은 `id`가 있으면 지우고, 없으면 무시하세요. ### 수집 절차 1. cursor 없이 호출하고, `hasMore`가 `false`가 될 때까지 `nextCursor`로 이어 호출하세요. 2. 마지막 `nextCursor`를 저장하세요. `hasMore`가 `false`여도 `nextCursor`는 항상 채워집니다. 조건을 여러 개 쓴다면 조건마다 따로 저장하세요. 3. 다음 수집 때 저장한 cursor로 호출하세요. 그 사이 바뀐 거래만 받습니다. > [!WARNING] > > `items`가 비어 있어도 `hasMore`가 `true`일 수 있습니다. `items`가 아니라 `hasMore`를 보고 이어 호출하세요. 동기화가 끝난 직후라면 5분쯤 기다린 뒤 이어 받으세요. cursor는 받은 값 그대로 보내세요. cursor는 받을 때의 조건(`from`, `to`, `bankAccountId`, `transactionType`)과 API 키에 묶입니다. 조건이나 API 키를 바꿨다면 cursor 없이 처음부터 받으세요. 예전 cursor를 보내면 API가 `400`과 `INVALID_CURSOR`를 반환합니다. `limit`은 페이지마다 바꿔도 됩니다. ## 동기화 요청 볼타는 입출금 내역을 주기적으로 가져옵니다. 그 전에 최신 내역이 필요할 때만 동기화를 요청하세요. ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/bankAccounts:sync \ -H "Authorization: Basic {apiKey}" ``` ```json theme={"dark"} { "acceptedAt": "2026-09-18T03:00:00Z", "nextAvailableAt": "2026-09-18T03:30:00Z" } ``` API가 `202 Accepted`로 접수만 하고 은행 조회는 비동기로 진행합니다. 진행 상황은 계좌 목록의 `syncStatus`로 확인하세요. `IN_PROGRESS`가 끝나면 저장한 cursor로 입출금 내역을 이어 받으면 됩니다. 요청 한도는 [주요 제한](#주요-제한)을 참고하세요. `nextAvailableAt`은 30분 간격만 반영하고 24시간 횟수는 반영하지 않습니다. | 상태 코드 | 에러 코드 | 뜻 | | - | - | - | | `202` | - | 접수 | | `409` | `SYNC_IN_PROGRESS` | 이미 동기화가 진행 중. 끝난 뒤 다시 요청하세요 | | `422` | `BANK_ACCOUNT_NOT_CONNECTED` | 연결된 입출금 계좌가 없음 | | `429` | `SYNC_RATE_LIMITED` | 요청 한도 초과. `Retry-After` 초만큼 기다리세요 | | `503` | `SYNC_UNAVAILABLE` | 일시적으로 판정할 수 없음. 잠시 후 다시 요청하세요 | 진행 중이라 거절한 요청(`409`)은 한도를 차감하지 않습니다. ## 테스트 키로 조회하기 테스트 키는 구독과 관계없이 고정 샘플을 돌려주고, 동기화 요청은 한도를 차감하지 않습니다. | 계좌 `id` | `bankCode` | 계좌번호 | | - | - | - | | `1` | `004` | `123456-01-234567` | | `2` | `088` | `110-123-456789` | | 거래 `id` | 계좌 | 거래 시각 (UTC) | 유형 | 금액 | 상태 | | - | - | - | - | - | - | | `1` | `1` | 2026-09-01T00:30:00Z | `DEPOSIT` | 1,100,000 | `ACTIVE` | | `2` | `1` | 2026-09-01T06:10:00Z | `WITHDRAW` | 55,000 | `ACTIVE` | | `3` | `2` | 2026-09-02T01:00:00Z | `DEPOSIT` | 330,000 | `ACTIVE` | | `4` | `1` | 2026-09-03T08:45:00Z | `WITHDRAW` | 2,200,000 | `ACTIVE` | | `5` | `2` | 2026-09-04T02:20:00Z | `DEPOSIT` | 770,000 | `ACTIVE` | | `6` | `2` | 2026-09-04T03:00:00Z | `WITHDRAW` | 12,000 | `REMOVED` | `6`번은 보관한 거래라 `status`와 `id`만 내려갑니다. `limit=3`으로 호출하면 cursor 넘김을 두 페이지로 확인할 수 있어요. 테스트 키는 5분 지연 없이 바로 돌려줍니다. ## 오류 | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 날짜 형식 오류, `from`이 `to`보다 늦음, `transactionType`이나 `limit` 값 오류 | | `400` | `INVALID_CURSOR` | 변조했거나 형식이 틀린 cursor, 조건이나 API 키가 cursor를 받을 때와 다름 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PLAN_UPGRADE_REQUIRED` | 스탠다드 플랜 미만 | | `404` | `BANK_ACCOUNT_NOT_FOUND` | 없거나 내 사업자의 것이 아닌 `bankAccountId` | | `409` | `SYNC_IN_PROGRESS` | 동기화가 이미 진행 중 | | `422` | `BANK_ACCOUNT_NOT_CONNECTED` | 연결된 입출금 계좌가 없음 | | `429` | `SYNC_RATE_LIMITED` | 동기화 요청 한도 초과. `Retry-After` 헤더 동반 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `SYNC_UNAVAILABLE` | 동기화 요청을 일시적으로 판정할 수 없음 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | 전체 에러 코드는 [에러 코드](/docs/api-introduction/error-codes)에서 확인하세요. ## 관련 문서 * [입출금 계좌 목록 조회 API](/api-reference/bank-account-transactions/list-bank-accounts) * [입출금 내역 조회 API](/api-reference/bank-account-transactions/list-bank-account-transactions) * [입출금 내역 동기화 요청 API](/api-reference/bank-account-transactions/request-bank-account-sync) * [입출금 내역 관리](/docs/bank/transaction-management) * [인증 가이드](/docs/api-introduction/authentication) # 사업자 프로필 조회 Source: https://docs.bolta.io/docs/api-introduction/business-profile 상호나 사업자등록번호로 사업자를 검색하고 상세 프로필을 조회하는 API의 요청, 응답, 요금, 호출 한도를 안내합니다. ## 무엇을 조회하나요 볼타가 공공 데이터를 모아 정리한 사업자 프로필을 검색하고 조회합니다. 거래처 등록 화면에서 사업자를 검색해 고르게 하거나, 사업자등록번호만 아는 거래처의 상호, 주소, 업종을 채울 때 쓰세요. | 경로 | 용도 | | - | - | | `GET /v1/businessProfiles:search` | 상호, 대표자명, 사업자등록번호로 사업자 검색 | | `GET /v1/businessProfiles/{businessRegistrationNumber}` | 사업자등록번호 한 건의 상세 프로필 조회 | 검색으로 사업자를 고른 뒤 상세를 조회하세요. 검색 결과에는 사업자를 가려낼 값만 있고, 대표자 실명, 주소, 연락처, 업종은 상세 조회 응답에 있습니다. ## 이용 조건 발급자 등록, 공동인증서, 요청자 관리번호(`Bolta-Client-Reference-Id`)가 필요 없고 구독 플랜 제한도 없습니다. `Authorization` 헤더에 `Basic {apiKey}`만 넣으면 됩니다. 인증은 [인증 가이드](/docs/api-introduction/authentication)를 참고하세요. ## 요금 | 경로 | 요금 | | - | - | | 검색 | 돌려준 결과 한 건마다 9포인트 | | 상세 조회 | 조회 성공마다 90포인트 | * 결과가 없는 검색, 상세 조회의 `404`, 오류 응답, 테스트 키 호출은 차감하지 않습니다. * 다음 결과를 받는 호출도 받은 건수만큼 차감합니다. 한 번에 차감하는 포인트는 최대 `limit` × 9포인트입니다. * 같은 사업자등록번호를 다시 조회하면 다시 차감합니다. * 잔액이 받을 결과의 요금보다 적으면 API가 결과를 일부만 돌려주지 않고 `402`나 `409`를 반환합니다. 잔액이 적으면 `limit`을 줄여 호출하세요. * API는 조회 전에 잔액이 한 건 요금(검색 9포인트, 상세 조회 90포인트) 이상인지 확인합니다. 모자라면 결과와 관계없이 `402`나 `409`를 반환합니다. ## 검색 ### 요청 ```bash theme={"dark"} curl -G https://xapi.bolta.io/v1/businessProfiles:search \ -H "Authorization: Basic {apiKey}" \ --data-urlencode "keyword=테스트상사" \ -d "limit=3" ``` | 파라미터 | 필수 | 설명 | | - | - | - | | `keyword` | O | 검색어 | | `limit` | X | 한 번에 받을 결과 수. 1 이상 50 이하, 기본값 20 | | `cursor` | X | 이전 응답의 `nextCursor`. 받은 값을 그대로 보내세요 | | `excludeStatuses` | X | 결과에서 뺄 사업자 등록 상태. `SUSPENDED`, `CLOSED`를 쉼표로 구분 | | `businessKind` | X | 결과에 남길 사업자 구분. `INDIVIDUAL`, `CORPORATE`, `OTHER` 중 하나 | `keyword`로 아래 값을 찾습니다. * 상호, 이전 상호, 영문 상호 * 대표자명 * 상호 초성 3자 이상(예: `ㅌㅅㅌ`) * 사업자등록번호 10자리. 하이픈을 넣어도 됩니다. 번호로 찾으면 그 사업자 한 건을 돌려줍니다 여러 단어를 띄어 쓰면 모든 단어가 일치하는 사업자를 찾습니다. 지역이나 업종 이름을 함께 넣어 결과를 좁히세요. 예를 들어 `다온 강남`은 강남구의 다온을 찾습니다. 검색어는 앞뒤 공백을 뺀 100자 이하, 공백과 기호를 뺀 2글자 이상으로 입력하세요. `주식회사`처럼 법인 형태만 있는 검색어는 `400 INVALID_REQUEST`를 반환합니다. `excludeStatuses`는 휴업이나 폐업으로 확인된 사업자를 결과에서 뺍니다. 볼타가 상태를 확인하지 않은 사업자(`registration`이 `null`)와 `NOT_REGISTERED`, `UNKNOWN` 사업자는 결과에 남습니다. 거래 전에 상태를 확정하려면 [사업자등록 상태 조회](/docs/api-introduction/business-registration-status)로 확인하세요. | 입력 | 결과 | | - | - | | 생략 | 상태로 거르지 않음 | | `CLOSED` | 폐업자 제외 | | `SUSPENDED,CLOSED` | 휴업자와 폐업자 제외 | 빈 값, 같은 값의 중복, `ACTIVE` 같은 다른 값을 넣으면 API가 `400 INVALID_REQUEST`를 반환합니다. `businessKind`는 응답의 `businessKind`와 같은 값으로 결과를 거릅니다. 한 값만 넣으세요. | 입력 | 결과 | | - | - | | 생략 | 구분으로 거르지 않음 | | `INDIVIDUAL` | 개인사업자만 | | `CORPORATE` | 법인사업자만 | | `OTHER` | 개인도 법인도 아닌 사업자만 | API는 거른 뒤 돌려준 결과만 차감합니다. 법인만 필요하면 `businessKind=CORPORATE`를 넣으세요. 빈 값, `corporate` 같은 소문자, 쉼표로 이은 두 값 이상을 넣으면 API가 `400 INVALID_REQUEST`를 반환합니다. 여러 구분을 함께 받으려면 `businessKind`를 생략하세요. ### 응답 ```json theme={"dark"} { "items": [ { "businessRegistrationNumber": "1000000014", "organizationName": "테스트상사 주식회사", "representativeName": "김*타", "registration": { "status": "ACTIVE" }, "region": "서울특별시 강남구", "businessKind": "CORPORATE" }, { "businessRegistrationNumber": "1000000028", "organizationName": "테스트상사 간이점", "representativeName": "이*스", "registration": { "status": "ACTIVE" }, "region": "서울특별시 마포구", "businessKind": "INDIVIDUAL" }, { "businessRegistrationNumber": "1000000106", "organizationName": "테스트상사 세금계산서점", "representativeName": "박*의", "registration": { "status": "ACTIVE" }, "region": "부산광역시 해운대구", "businessKind": "INDIVIDUAL" } ], "nextCursor": "djE6MDotOjM6MzFmN2UxZGI0NjJkMzVhMQ", "hasMore": true } ``` | 필드 | 형식 | 설명 | | - | - | - | | `items` | array | 검색 결과. 관련도가 높은 순 | | `items[].businessRegistrationNumber` | string | 하이픈 없는 10자리 사업자등록번호 | | `items[].organizationName` | string 또는 null | 상호 | | `items[].representativeName` | string 또는 null | 가운데를 가린 대표자명 | | `items[].registration` | object 또는 null | 볼타가 마지막으로 확인한 사업자 등록 상태. 확인한 적이 없으면 `null` | | `items[].registration.status` | string | 사업자 등록 상태 | | `items[].region` | string 또는 null | 시도와 시군구 이름. 시군구를 모르면 시도만 | | `items[].businessKind` | string | 사업자 구분. 상세 조회와 같은 값 | | `nextCursor` | string 또는 null | 다음 결과를 받을 cursor. 마지막이면 `null` | | `hasMore` | boolean | 다음 결과가 있으면 `true` | 모든 필드를 항상 담습니다. 값이 없으면 `null`이고, 결과가 없으면 `items`가 빈 배열입니다. ### 다음 결과 받기 `hasMore`가 `true`이면 `nextCursor`를 `cursor`에 넣어 다시 호출하세요. `keyword`, `excludeStatuses`, `businessKind`는 첫 요청과 같은 값을 보내고, `limit`은 바꿔도 됩니다. ```bash theme={"dark"} curl -G https://xapi.bolta.io/v1/businessProfiles:search \ -H "Authorization: Basic {apiKey}" \ --data-urlencode "keyword=테스트상사" \ -d "limit=3" \ -d "cursor=djE6MDotOjM6MzFmN2UxZGI0NjJkMzVhMQ" ``` > [!WARNING] > > 받은 결과가 `limit`보다 적어도 `hasMore`가 `true`일 수 있습니다. `items`의 개수가 아니라 `hasMore`를 보고 이어 호출하세요. * 한 검색어로 받을 수 있는 결과는 앞 1,000건까지입니다. 더 필요하면 검색어를 구체적으로 바꾸세요. * cursor는 받을 때의 `keyword`, `excludeStatuses`, `businessKind`, 키 모드(테스트, 라이브)에 묶입니다. 조건이 다르거나 cursor가 오래되면 API가 `400 INVALID_CURSOR`를 반환합니다. 이때는 cursor 없이 처음부터 다시 검색하세요. ## 상세 조회 ### 요청 ```bash theme={"dark"} curl https://xapi.bolta.io/v1/businessProfiles/1000000014 \ -H "Authorization: Basic {apiKey}" ``` 경로에 사업자등록번호 10자리를 넣으세요. `100-00-00014`처럼 하이픈을 넣어도 됩니다. API가 형식과 체크섬을 검증합니다. 10자리가 아니면 `400 INVALID_REQUEST`, 체크섬이 맞지 않으면 `400 INVALID_BUSINESS_REGISTRATION_NUMBER`를 반환합니다. 볼타에 프로필이 없는 번호는 `404 NOT_FOUND`를 반환합니다. ### 응답 ```json theme={"dark"} { "businessRegistrationNumber": "1000000014", "corporateRegistrationNumber": "1101110000006", "businessKind": "CORPORATE", "commercialSalesNumber": "2021-서울강남-01234", "organizationName": "테스트상사 주식회사", "organizationNameEnglish": "Test Sangsa Co., Ltd.", "formerOrganizationNames": [ { "name": "주식회사 테스트랩스", "changedOn": "2022-03-01" } ], "representativeName": "김볼타", "address": { "roadAddress": "서울특별시 강남구 가상로 1", "postalCode": "06236", "sidoCode": "11", "sigunguCode": "11680" }, "contact": { "phone": "02-000-0000", "email": "hello@example.com", "websites": ["https://example.com"] }, "industry": { "businessType": "서비스업", "businessItem": "응용 소프트웨어 개발", "standardIndustry": { "code": "58222", "name": "응용 소프트웨어 개발 및 공급업" }, "category": { "code": "J", "name": "정보통신업" } }, "openedOn": "2021-03-02", "businessRegisteredOn": "2021-03-02", "corporationEstablishedOn": "2021-02-25", "registration": { "status": "ACTIVE", "closedOn": null, "checkedAt": "2025-12-31T15:00:00Z" }, "taxation": { "type": "GENERAL" } } ``` 모든 필드를 항상 담습니다. 값이 없으면 `null`이고, 목록은 빈 배열입니다. #### 식별 | 필드 | 형식 | 설명 | | - | - | - | | `businessRegistrationNumber` | string | 하이픈 없는 10자리 사업자등록번호 | | `corporateRegistrationNumber` | string 또는 null | 하이픈 없는 13자리 법인등록번호 | | `businessKind` | string | 사업자 구분 | | `commercialSalesNumber` | string 또는 null | 통신판매업 신고번호 | #### 상호와 대표자 | 필드 | 형식 | 설명 | | - | - | - | | `organizationName` | string 또는 null | 상호 | | `organizationNameEnglish` | string 또는 null | 영문 상호 | | `formerOrganizationNames` | array | 이전 상호. 최근에 바뀐 것부터 | | `formerOrganizationNames[].name` | string | 이전 상호 | | `formerOrganizationNames[].changedOn` | string 또는 null | 새 상호가 공시 자료에 처음 나타난 날. `YYYY-MM-DD` 형식. 변경 등기일과 다를 수 있음 | | `representativeName` | string 또는 null | 대표자명. 원천 자료가 가려서 준 값은 가린 그대로 | #### 주소와 연락처 | 필드 | 형식 | 설명 | | - | - | - | | `address` | object 또는 null | 주소. 원천 자료에 주소가 없으면 `null` | | `address.roadAddress` | string 또는 null | 도로명주소 | | `address.postalCode` | string 또는 null | 우편번호 5자리 | | `address.sidoCode` | string 또는 null | 법정동 시도 코드 2자리 | | `address.sigunguCode` | string 또는 null | 법정동 시군구 코드 5자리 | | `contact` | object | 연락처. 항상 객체 | | `contact.phone` | string 또는 null | 대표 전화번호. 하이픈을 넣은 형식 | | `contact.email` | string 또는 null | 대표 이메일. 메일을 받지 못하는 것으로 확인된 도메인이면 `null` | | `contact.websites` | array of string | 홈페이지 주소 | #### 업종 | 필드 | 형식 | 설명 | | - | - | - | | `industry` | object | 업종. 항상 객체 | | `industry.businessType` | string 또는 null | 업태. 국세청 등록 기준 | | `industry.businessItem` | string 또는 null | 종목. 국세청 등록 기준 | | `industry.standardIndustry` | object 또는 null | 한국표준산업분류(11차) 세세분류 | | `industry.standardIndustry.code` | string | 세세분류 코드 5자리 | | `industry.standardIndustry.name` | string | 세세분류 이름 | | `industry.category` | object 또는 null | 한국표준산업분류 대분류 | | `industry.category.code` | string | 대분류 코드. `A`부터 `U`까지 | | `industry.category.name` | string | 대분류 이름 | #### 날짜 | 필드 | 형식 | 설명 | | - | - | - | | `openedOn` | string 또는 null | 개업일. `YYYY-MM-DD` 형식 | | `businessRegisteredOn` | string 또는 null | 사업자등록일. `YYYY-MM-DD` 형식 | | `corporationEstablishedOn` | string 또는 null | 법인설립일. `YYYY-MM-DD` 형식 | 세 날짜는 출처가 서로 달라 값이 다를 수 있습니다. #### 사업자 등록 상태 | 필드 | 형식 | 설명 | | - | - | - | | `registration` | object 또는 null | 볼타가 마지막으로 확인한 사업자 등록 상태. 확인한 적이 없으면 `null` | | `registration.status` | string | 사업자 등록 상태 | | `registration.closedOn` | string 또는 null | 폐업일. `YYYY-MM-DD` 형식 | | `registration.checkedAt` | string | 국세청에 확인한 시각. ISO 8601 UTC 형식 | | `taxation` | object 또는 null | 마지막으로 확인한 과세 정보. 모르면 `null` | | `taxation.type` | string | 과세유형 | ## 상태값 `businessKind`, `registration.status`, `taxation.type`에서 처음 보는 값은 기타로 처리하세요. ### 사업자 구분 | 구분(`businessKind`) | 뜻 | | - | - | | `INDIVIDUAL` | 개인사업자 | | `CORPORATE` | 법인사업자 | | `OTHER` | 개인도 법인도 아닌 사업자. 비법인 단체, 국가와 지방자치단체 | ### 등록 상태와 과세유형 `registration.status`와 `taxation.type`의 값과 뜻은 [사업자등록 상태 조회](/docs/api-introduction/business-registration-status)의 상태값과 같습니다. `registration`과 `taxation`은 볼타가 마지막으로 확인해 저장한 값이고, 확인한 시각은 `registration.checkedAt`에 있습니다. 호출 시점의 상태가 필요하면 [사업자등록 상태 조회](/docs/api-introduction/business-registration-status) API를 쓰세요. ## 테스트 키 테스트 키는 실제 사업자 데이터를 읽지 않고 고정된 모의 데이터를 돌려줍니다. 응답 구조는 라이브 키와 같고 포인트를 차감하지 않습니다. ### 상세 조회 테스트 번호 | 번호 | `businessKind` | `registration.status` | `taxation.type` | 비고 | | - | - | - | - | - | | `1000000014` | `CORPORATE` | `ACTIVE` | `GENERAL` | 모든 필드가 채워진 예시 | | `1000000028` | `INDIVIDUAL` | `ACTIVE` | `SIMPLIFIED_RECEIPT_ISSUER` | | | `1000000106` | `INDIVIDUAL` | `ACTIVE` | `SIMPLIFIED_TAX_INVOICE_ISSUER` | | | `1000000033` | `INDIVIDUAL` | `ACTIVE` | `TAX_FREE` | | | `1000000047` | `CORPORATE` | `ACTIVE` | `NONPROFIT` | | | `1000000052` | `CORPORATE` | `ACTIVE` | `UNIQUE_NUMBER_ORGANIZATION` | | | `1000000066` | `INDIVIDUAL` | `SUSPENDED` | `GENERAL` | | | `1000000071` | `INDIVIDUAL` | `CLOSED` | `GENERAL` | `registration.closedOn`은 2026년 1월 1일(고정) | | `1000000085` | `INDIVIDUAL` | `NOT_REGISTERED` | null (`taxation`이 null) | | | `1000000090` | `INDIVIDUAL` | `UNKNOWN` | null (`taxation`이 null) | | | `1000000111` | `INDIVIDUAL` | null (`registration`이 null) | null (`taxation`이 null) | 상태를 확인한 적 없는 예시. `address`도 `null` | | `1000000125` | - | - | - | 프로필이 없는 번호. `404 NOT_FOUND` | * `registration.checkedAt`은 모두 `2025-12-31T15:00:00Z`(고정)입니다. * 법인등록번호와 법인설립일은 `businessKind`가 `CORPORATE`인 번호에만 있습니다. * 연락처, 영문 상호, 이전 상호, 통신판매업 신고번호는 `1000000014`에만 있습니다. * [사업자등록 상태 조회](/docs/api-introduction/business-registration-status)의 테스트 번호와 같은 번호는 두 API가 같은 등록 상태와 과세유형을 돌려줍니다. ### 검색 테스트 데이터 모의 사업자 25곳이 있고 상호는 모두 `테스트상사`로 시작합니다. 위 표에서 프로필이 있는 11곳과 `테스트상사 01호점`부터 `테스트상사 14호점`까지 14곳입니다. 14곳은 개인 계속사업자이고 `taxation.type`은 `GENERAL`입니다. 테스트 키 검색은 상호에 검색어가 들어 있는 사업자와 사업자등록번호가 같은 사업자를 찾습니다. 대표자명, 초성, 지역 이름 검색은 라이브 키로 확인하세요. * `keyword=테스트상사`는 25곳을 모두 돌려줍니다. * `limit=10`으로 호출하면 `nextCursor`로 세 번에 나눠 받는 흐름을 시험할 수 있습니다. * `excludeStatuses=SUSPENDED,CLOSED`를 넣으면 `1000000066`과 `1000000071`이 빠집니다. * 법인은 `1000000014`, `1000000047`, `1000000052` 3곳이고 나머지 22곳은 개인사업자입니다. `businessKind=CORPORATE`를 넣으면 3곳을 돌려줍니다. * 맞는 사업자가 없는 검색어는 빈 `items`를 돌려줍니다. 25곳 모두 상세 조회가 되고, 같은 번호의 검색 결과와 상세 응답은 값이 같습니다. 그 밖의 번호를 테스트 키로 상세 조회하면 API가 `400`과 `INVALID_REQUEST`를 반환합니다. ## 호출 한도 | 경로 | 한도 | | - | - | | 검색 | 1분에 120회 | | 상세 조회 | 1분에 300회 | 한도는 결과 건수가 아니라 호출 횟수로 셉니다. 같은 파트너의 같은 모드 키는 한도를 함께 쓰고, 테스트 키와 라이브 키는 따로 셉니다. 한도를 넘으면 API가 `429`와 `RATE_LIMITED`를 반환하고 `Retry-After` 헤더에 재시도까지 남은 초를 담습니다. 그 시간만큼 기다린 뒤 다시 호출하세요. ## 오류 | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | `keyword` 누락이나 검색어 규칙 위반, 범위를 벗어난 `limit`, `excludeStatuses`나 `businessKind`의 빈 값, 중복, 받지 않는 값, 10자리가 아닌 사업자등록번호, 테스트 키의 목록 밖 번호 조회 | | `400` | `INVALID_BUSINESS_REGISTRATION_NUMBER` | 상세 조회에서 체크섬이 맞지 않는 번호 | | `400` | `INVALID_CURSOR` | 형식이 틀린 cursor, 받을 때와 검색 조건이나 키 모드가 다른 cursor, 오래된 cursor | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족. 개발자센터에서 충전하세요 | | `404` | `NOT_FOUND` | 상세 조회에서 프로필이 없는 번호 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족. 충전하거나 그 요청이 끝난 뒤 다시 요청하세요 | | `429` | `RATE_LIMITED` | 호출 한도 초과. `Retry-After` 헤더 동반 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `LOOKUP_UNAVAILABLE` | 지금은 검색이나 조회를 할 수 없음. 잠시 후 다시 시도하세요 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | 전체 에러 코드는 [에러 코드](/docs/api-introduction/error-codes)를 참고하세요. ## 관련 문서 * [사업자 프로필 검색 API](/api-reference/business-profile/search-business-profiles) * [사업자 프로필 상세 조회 API](/api-reference/business-profile/retrieve-business-profile) * [요금 안내](/docs/api-introduction/pricing) * [사업자등록 상태 조회](/docs/api-introduction/business-registration-status) # 사업자등록증 인식과 진위확인 Source: https://docs.bolta.io/docs/api-introduction/business-registration-certificate 사업자등록증 파일에서 사업자 정보를 읽고 국세청 진위확인까지 하는 API의 요청, 응답, 요금, 호출 한도를 안내합니다. ## 무엇을 하나요 사업자등록증 파일 한 건을 읽어 사업자등록번호, 상호, 대표자명, 개업일, 주소, 업종을 돌려줍니다. 읽은 사업자등록번호, 대표자명, 개업일로 국세청 진위확인을 하고 그 결과도 함께 담습니다. 거래처나 회원이 사업자 정보를 직접 입력하는 수고를 줄일 때 쓰세요. | 경로 | 용도 | | - | - | | `POST /v1/businessRegistrationCertificates:extract` | 사업자등록증 한 건 인식과 진위확인 | ## 이용 조건 발급자 등록, 공동인증서, 요청자 관리번호(`Bolta-Client-Reference-Id`)가 필요 없고 구독 플랜 제한도 없습니다. `Authorization` 헤더에 `Basic {apiKey}`만 넣으면 됩니다. 인증은 [인증 가이드](/docs/api-introduction/authentication)를 참고하세요. ## 요금 진위확인 결과(`validation`)가 `MATCHED`나 `NOT_MATCHED`인 문서마다 100포인트를 차감합니다. `UNAVAILABLE` 결과, 오류 응답, 테스트 키 호출은 차감하지 않습니다. 같은 파일을 다시 보내면 다시 차감합니다. ## 요청 `multipart/form-data`의 `file` 파트에 파일 한 개를 넣으세요. ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/businessRegistrationCertificates:extract \ -H "Authorization: Basic {apiKey}" \ -F "file=@certificate.pdf" ``` | 파트 | 형식 | 필수 | 설명 | | - | - | - | - | | `file` | 파일 | 예 | 사업자등록증 파일 한 개 | * 형식은 PDF, JPG, PNG, WebP입니다. * 크기는 5MB(5,242,880바이트) 이하, PDF는 5쪽 이하입니다. * 한 요청에 문서 한 건을 보냅니다. 여러 문서는 한 건씩 차례로 보내세요. * 사업자등록증만 받습니다. 사업자등록증명이나 등기사항증명서 같은 다른 서류와 사업자등록번호를 읽을 수 없는 파일은 `400 INVALID_FILE`을 반환합니다. 홈택스에서 내려받은 PDF를 가장 정확하게 읽습니다. 사진을 받을 때는 문서 전체가 들어오고 글자가 선명하게 찍히도록 사용자에게 안내하세요. 사업자등록번호를 읽지 못해 `400 INVALID_FILE`을 받으면 다시 찍어 달라고 안내하세요. ## 응답 API는 `200 OK`와 아래 응답을 반환합니다. ```json theme={"dark"} { "certificate": { "businessRegistrationNumber": "1000000014", "organizationName": "(주)볼타테스트", "representativeNames": ["김볼타"], "openedOn": "2020-01-01", "address": "서울특별시 테스트구 가상로 1", "industries": [ { "businessType": "정보통신업", "businessItem": "응용 소프트웨어 개발 및 공급업" } ], "corporationRegistrationNumber": "1101110000000", "taxRegistrationId": null }, "inputQuality": "SUFFICIENT", "validation": "MATCHED" } ``` | 필드 | 형식 | 설명 | | - | - | - | | `certificate` | object | 문서에서 읽은 값 | | `certificate.businessRegistrationNumber` | string | 하이픈 없는 10자리 사업자등록번호 | | `certificate.organizationName` | string 또는 null | 상호(법인명) | | `certificate.representativeNames` | array of string | 대표자 이름. 인쇄된 순서대로 최대 10개 | | `certificate.openedOn` | string 또는 null | 개업연월일. `YYYY-MM-DD` 형식 | | `certificate.address` | string 또는 null | 사업장 소재지 | | `certificate.industries` | array | 업종 행. 인쇄된 순서대로 최대 20개 | | `certificate.industries[].businessType` | string 또는 null | 업태 | | `certificate.industries[].businessItem` | string 또는 null | 종목 | | `certificate.corporationRegistrationNumber` | string 또는 null | 하이픈 없는 13자리 법인등록번호. 법인 등록증에만 있음 | | `certificate.taxRegistrationId` | string 또는 null | 종사업장번호 4자리 | | `inputQuality` | string | 이미지 해상도 판정 | | `validation` | string | 진위확인 결과 | 모든 필드를 항상 담습니다. 읽지 못한 값은 `null`이고, 목록은 빈 배열입니다. 사업자등록번호를 읽지 못하면 결과 대신 `400 INVALID_FILE`을 반환합니다. `representativeNames`는 공동대표를 모두 담고 `(공동대표)` 같은 역할 표기는 뗍니다. 개인 공동사업자 등록증은 성명 칸에 인쇄된 대표 한 사람만 담습니다. 대표자를 한 명만 받는 곳에는 첫 항목을 쓰세요. `industries`는 같은 행의 업태와 종목이 짝입니다. 대표 업종이 필요하면 첫 행을 쓰세요. ### `validation` | 값 | 뜻 | 차감 | | - | - | - | | `MATCHED` | 사업자등록번호, 첫 번째 대표자명, 개업일이 국세청 등록 정보와 일치 | 100포인트 | | `NOT_MATCHED` | 국세청 등록 정보와 일치를 확인하지 못함 | 100포인트 | | `UNAVAILABLE` | 국세청 장애로 진위확인을 하지 못함. 읽은 값은 그대로 담음 | 없음 | 진위확인에 쓰는 값은 사업자등록번호, 첫 번째 대표자명, 개업일 세 가지입니다. 상호, 주소, 업종은 사용자가 직접 확인하게 하세요. ### `inputQuality` | 값 | 뜻 | | - | - | | `SUFFICIENT` | 해상도 충분 | | `LOW_RESOLUTION` | 해상도가 낮아 주소나 업종을 잘못 읽었을 수 있음. 더 큰 이미지나 PDF로 다시 받으세요 | ### 입력 화면에 미리 채우기 `validation`이 `MATCHED`이고 `inputQuality`가 `SUFFICIENT`면 입력 화면에 값을 미리 채워도 됩니다. 저장하거나 세금계산서를 발행하기 전에는 사용자가 값을 확인하고 고칠 수 있게 하세요. ## 처리 시간 API는 요청 하나를 최대 약 45초 안에 끝냅니다. 클라이언트 읽기 타임아웃은 60초 이상으로 잡으세요. 그 안에 인식하지 못하면 API가 `503 EXTRACTION_UNAVAILABLE`을 반환합니다. ## 데이터 보관 볼타는 올린 파일과 읽은 값을 저장하지 않습니다. 응답에는 주민등록번호 같은 개인식별번호를 담지 않습니다. ## 테스트 키 테스트 키로 보내면 올린 파일과 관계없이 위 응답 예시와 같은 고정 결과를 돌려주고 포인트를 차감하지 않습니다. 빈 파일, 5MB 초과, 지원하지 않는 형식은 라이브 키와 같은 오류를 반환합니다. 고정 결과의 `1000000014`는 [사업자등록 상태 조회](/docs/api-introduction/business-registration-status) 테스트 키의 계속사업자 번호와 같습니다. 인식 결과를 상태 조회 테스트 호출에 그대로 이어 볼 수 있습니다. ## 호출 한도 | 한도 | 값 | 넘으면 | | - | - | - | | 동시 요청 | 파트너당 1건. 라이브 키만 해당 | `429 TOO_MANY_IN_FLIGHT` | | 하루 처리량 | 24시간에 1,000건. 테스트 키와 라이브 키는 따로 셈 | `429 RATE_LIMITED` | | 볼타 인식 처리량 | 볼타 전체 공유 | `429 RATE_LIMITED` | 라이브 키는 앞 요청의 응답을 받은 뒤 다음 파일을 보내세요. 같은 파트너의 라이브 키가 여러 개여도 동시 요청을 함께 셉니다. `429`를 받으면 `Retry-After` 헤더의 초만큼 기다린 뒤 같은 파일로 다시 보내세요. ## 오류 | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | `file` 파트 누락, 빈 파일, 5MB 초과 | | `400` | `INVALID_FILE` | 지원하지 않는 형식, 읽을 수 없는 파일, 5쪽 초과 PDF, 사업자등록증이 아니거나 사업자등록번호를 읽을 수 없는 파일 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족. 개발자센터에서 충전하세요 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족. 충전하거나 그 요청이 끝난 뒤 다시 요청하세요 | | `415` | `UNSUPPORTED_MEDIA_TYPE` | `Content-Type`이 `multipart/form-data`가 아님 | | `429` | `TOO_MANY_IN_FLIGHT` | 같은 파트너의 처리 중인 요청이 있음. `Retry-After` 뒤에 다시 시도하세요 | | `429` | `RATE_LIMITED` | 하루 처리 한도 초과 또는 볼타 인식 처리량 포화. `Retry-After` 뒤에 다시 시도하세요 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `EXTRACTION_UNAVAILABLE` | 인식 실패 또는 처리 시간 초과. 잠시 후 다시 시도하세요 | | `503` | `LOOKUP_UNAVAILABLE` | 호출 한도를 판정할 수 없음 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | `INVALID_FILE`의 `message`는 원인마다 다르고, 사용자에게 그대로 보여 줘도 됩니다. | 원인 | `message` | | - | - | | 형식 | jpg, png, webp, pdf 형식만 업로드할 수 있습니다. | | 읽을 수 없는 파일 | 파일을 읽을 수 없습니다. 사업자등록증 파일을 확인해 주세요. | | 쪽수 | 5쪽 이하의 PDF만 업로드할 수 있습니다. | | 사업자등록증이 아니거나 사업자등록번호를 읽을 수 없음 | 사업자등록증을 찾지 못했습니다. 사업자등록증명이나 등기사항증명서 같은 다른 서류는 받지 않습니다. 사업자등록증 파일을 확인해 주세요. | 전체 에러 코드는 [에러 코드](/docs/api-introduction/error-codes)를 참고하세요. ## 관련 문서 * [사업자등록증 인식과 진위확인 API](/api-reference/business-registration-certificate-extraction-and-verification/extract-and-verify-business-registration-certificate) * [요금 안내](/docs/api-introduction/pricing) * [사업자등록 상태 조회](/docs/api-introduction/business-registration-status) # 사업자등록 상태 조회 Source: https://docs.bolta.io/docs/api-introduction/business-registration-status 사업자등록번호의 등록 상태와 과세유형을 단건 또는 일괄로 조회하는 API의 입력 규칙과 응답을 안내합니다. ## 무엇을 조회하나요 사업자등록번호의 등록 상태와 과세유형을 돌려줍니다. 계속사업자인지, 휴업이나 폐업 상태인지, 등록되지 않은 번호인지 확인할 수 있어요. | 경로 | 용도 | | - | - | | `POST /v1/businessRegistrationStatuses:check` | 번호 한 건 조회 | | `POST /v1/businessRegistrationStatuses:checkBulk` | 번호 최대 100건 일괄 조회 | 거래처 목록처럼 여러 번호를 확인할 때는 일괄 조회를 쓰세요. 두 경로는 같은 상태값과 과세유형을 돌려줍니다. > [!NOTE] > > 이 API는 발급자 등록과 공동인증서 없이 API 키만으로 호출합니다. 요청자 관리번호(`Bolta-Client-Reference-Id`)와 멱등 키는 쓰지 않습니다. ## 단건 조회 ### 요청 | 헤더 | 필수 | 설명 | | - | - | - | | `Authorization` | O | `Basic {apiKey}` 형식으로 입력하세요. [인증 가이드](/docs/api-introduction/authentication)를 참고하세요 | | `Content-Type` | O | `application/json` | ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/businessRegistrationStatuses:check \ -H "Authorization: Basic {apiKey}" \ -H "Content-Type: application/json" \ -d '{ "businessRegistrationNumber": "1000000014" }' ``` 사업자등록번호는 10자리로 입력하세요. `100-00-00014`처럼 하이픈을 넣어도 됩니다. API가 형식과 체크섬을 검증하고, 응답에는 하이픈을 제거한 10자리를 담습니다. ### 응답 ```json theme={"dark"} { "businessRegistrationNumber": "1000000014", "registration": { "status": "ACTIVE", "closedOn": null }, "taxation": { "type": "GENERAL", "changedOn": "2026-01-01" } } ``` | 필드 | 형식 | 설명 | | - | - | - | | `businessRegistrationNumber` | string | 하이픈을 제거한 10자리 | | `registration.status` | string | 사업자 등록 상태 | | `registration.closedOn` | string 또는 null | 폐업일. `YYYY-MM-DD` 형식 | | `taxation` | object 또는 null | 과세 정보 | | `taxation.type` | string | 과세유형 | | `taxation.changedOn` | string 또는 null | 과세유형 전환일. `YYYY-MM-DD` 형식 | 세 필드는 항상 응답에 담기고, 값이 없으면 `null`입니다. ## 일괄 조회 ### 요청 헤더는 단건 조회와 같습니다. ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/businessRegistrationStatuses:checkBulk \ -H "Authorization: Basic {apiKey}" \ -H "Content-Type: application/json" \ -d '{ "businessRegistrationNumbers": ["1000000014", "100-00-00028", "1000000066"] }' ``` * `businessRegistrationNumbers`에 번호를 1개 이상 100개 이하로 넣으세요. 100개를 넘기면 번호를 나눠 여러 번 호출하세요. * 각 번호는 단건 조회와 같은 규칙으로 검증합니다. * 빈 배열, 101개 이상, 형식이 틀린 항목이 하나라도 있으면 요청 전체를 `400`으로 거절합니다. * 같은 번호가 여러 번 들어 있으면 처음 나온 것만 남깁니다. 하이픈 표기가 달라도 같은 번호로 봅니다. ### 응답 ```json theme={"dark"} { "results": [ { "businessRegistrationNumber": "1000000014", "status": { "businessRegistrationNumber": "1000000014", "registration": { "status": "ACTIVE", "closedOn": null }, "taxation": { "type": "GENERAL", "changedOn": "2026-01-01" } } }, { "businessRegistrationNumber": "1000000028", "status": { "businessRegistrationNumber": "1000000028", "registration": { "status": "ACTIVE", "closedOn": null }, "taxation": { "type": "SIMPLIFIED_RECEIPT_ISSUER", "changedOn": "2026-01-01" } } }, { "businessRegistrationNumber": "1000000066", "status": { "businessRegistrationNumber": "1000000066", "registration": { "status": "SUSPENDED", "closedOn": null }, "taxation": { "type": "GENERAL", "changedOn": "2026-01-01" } } } ] } ``` | 필드 | 형식 | 설명 | | - | - | - | | `results` | array | 요청한 번호마다 항목 하나. 중복을 줄인 뒤 요청 순서를 따름 | | `results[].businessRegistrationNumber` | string | 하이픈을 제거한 10자리 | | `results[].status` | object 또는 null | 단건 조회 응답과 같은 구조. 이번 요청에서 확인하지 못했으면 `null` | 라이브 키로 조회할 때 일부 번호의 사업자등록 상태를 이번 요청에서 확인하지 못하면, 그 번호의 항목은 `status`가 `null`로 옵니다. ```json theme={"dark"} { "businessRegistrationNumber": "1000000028", "status": null } ``` `null`은 미등록(`NOT_REGISTERED`)과 다릅니다. 나머지 항목은 그대로 유효하니 잠시 후 `null`인 번호만 다시 조회하세요. 테스트 키 응답에는 `null` 항목이 나오지 않습니다. 한 건도 확인하지 못하면 `200` 대신 `503`과 `LOOKUP_UNAVAILABLE`을 반환합니다. 파트너 호출 한도가 부족하거나, 한 건도 확인하지 못한 채 볼타 서비스 전체의 일일 조회 한도에 도달하면 `429`와 `RATE_LIMITED`를 반환합니다. 조회 도중 전체 한도에 도달하면 이미 확인한 번호는 `200`으로 돌려주고 나머지는 `status: null`로 둡니다. ## 상태값 ### 등록 상태 | 상태(`status`) | 뜻 | | - | - | | `ACTIVE` | 계속사업자 | | `SUSPENDED` | 휴업자 | | `CLOSED` | 폐업자 | | `NOT_REGISTERED` | 미등록 번호 | | `UNKNOWN` | 위 네 가지에 속하지 않는 기타 등록 상태 | > [!WARNING] > > `UNKNOWN`은 조회 실패를 뜻하지 않습니다. 사업자등록 상태를 확인할 수 없으면 API가 `503`과 `LOOKUP_UNAVAILABLE`을 반환합니다. ### 과세유형 API는 국세청 과세유형을 그대로 돌려줍니다. | 과세유형(`taxation.type`) | 뜻 | | - | - | | `GENERAL` | 일반과세자 | | `SIMPLIFIED_RECEIPT_ISSUER` | 간이과세자. 세금계산서 발행 불가 | | `SIMPLIFIED_TAX_INVOICE_ISSUER` | 간이과세자. 세금계산서 발행 가능 | | `SPECIAL_TAXPAYER` | 과세특례자 | | `TAX_FREE` | 면세사업자 | | `NONPROFIT` | 수익사업을 영위하지 않는 비영리법인이거나 고유번호가 부여된 단체 | | `UNIQUE_NUMBER_ORGANIZATION` | 고유번호가 부여된 단체 | 간이과세자의 세금계산서 발행 가능 여부는 `SIMPLIFIED_RECEIPT_ISSUER`와 `SIMPLIFIED_TAX_INVOICE_ISSUER`로 구분하세요. 처음 보는 값은 기타로 처리하세요. `taxation`은 국세청이 과세유형을 주지 않으면 `null`입니다. 계속사업자는 항상 값이 있고, 미등록과 기타 상태는 항상 `null`입니다. 휴업자와 폐업자는 국세청이 마지막 과세유형을 주면 값이 있고, 주지 않으면 `null`입니다. `closedOn`은 폐업자일 때만 값이 있습니다. ## 테스트 키로 조회하기 테스트 키는 실제 조회를 하지 않고 아래 고정 번호만 모의 응답으로 돌려줍니다. | 번호 | `registration.status` | `taxation.type` | `registration.closedOn` | | - | - | - | - | | `1000000014` | `ACTIVE` | `GENERAL` | null | | `1000000028` | `ACTIVE` | `SIMPLIFIED_RECEIPT_ISSUER` | null | | `1000000106` | `ACTIVE` | `SIMPLIFIED_TAX_INVOICE_ISSUER` | null | | `1000000033` | `ACTIVE` | `TAX_FREE` | null | | `1000000047` | `ACTIVE` | `NONPROFIT` | null | | `1000000052` | `ACTIVE` | `UNIQUE_NUMBER_ORGANIZATION` | null | | `1000000066` | `SUSPENDED` | `GENERAL` | null | | `1000000071` | `CLOSED` | `GENERAL` | 2026년 1월 1일 (고정) | | `1000000085` | `NOT_REGISTERED` | null (`taxation`이 null) | null | | `1000000090` | `UNKNOWN` | null (`taxation`이 null) | null | `taxation`이 있는 번호의 `taxation.changedOn`은 모두 2026년 1월 1일(고정)입니다. 목록에 없는 번호를 테스트 키로 조회하면 API가 `400`과 `INVALID_REQUEST`를 반환합니다. 일괄 조회는 목록에 없는 번호가 하나라도 섞이면 요청 전체를 거절합니다. ## 요금 상태를 확인한 사업자등록번호마다 10포인트를 차감합니다. 일괄 조회에서 확인하지 못한 번호(`status`가 `null`), 오류 응답, 테스트 키 호출은 차감하지 않습니다. 한 요청에 같은 번호를 여러 번 넣어도 한 번만 차감합니다. 요청을 다시 보내면 다시 차감합니다. ## 호출 한도 API 키의 모드별로 24시간에 사업자등록번호 10,000건까지 조회할 수 있습니다. 한도는 요청 수가 아니라 중복을 뺀 번호 수로 셉니다. 24시간은 첫 호출 시점부터 계산합니다. 같은 파트너의 같은 모드 키는 한도를 함께 씁니다. 한도를 모두 쓰거나 볼타 서비스 전체의 일일 조회 한도에 도달하면 API가 `429`와 `RATE_LIMITED`를 반환하고 `Retry-After` 헤더에 재시도까지 남은 초를 담습니다. 이 값을 읽어 재시도 시점을 잡으세요. `503`을 받으면 곧바로 다시 호출하지 말고 잠시 후 다시 조회하세요. ## 오류 | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 번호 누락, 10자리가 아닌 입력, 테스트 키의 목록 밖 번호 조회. 일괄 조회의 빈 배열, 100개 초과 | | `400` | `INVALID_BUSINESS_REGISTRATION_NUMBER` | 체크섬이 맞지 않는 번호 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족. 개발자센터에서 충전하세요 | | `403` | `FORBIDDEN` | 리소스 접근 권한 없음 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족. 충전하거나 그 요청이 끝난 뒤 다시 요청하세요 | | `429` | `RATE_LIMITED` | 파트너 호출 한도 또는 볼타 서비스 전체 조회 한도 초과. `Retry-After` 헤더 동반 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `LOOKUP_UNAVAILABLE` | 사업자등록 상태를 확인할 수 없음. 일괄 조회는 한 건도 확인하지 못한 경우 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | 전체 에러 코드는 [에러 코드](/docs/api-introduction/error-codes)에서 확인하세요. ## 관련 문서 * [사업자등록 상태 단건 조회 API](/api-reference/business-registration-status/check-business-registration-status) * [사업자등록 상태 일괄 조회 API](/api-reference/business-registration-status/check-business-registration-statuses-in-bulk) * [인증 가이드](/docs/api-introduction/authentication) * [용어 정리](/docs/api-introduction/glossary) # 현금영수증 발행 Source: https://docs.bolta.io/docs/api-introduction/cash-receipt-guide 현금영수증 발행, 상태 조회, 취소 API의 흐름과 입력 규칙을 안내합니다. ## 처리 흐름 현금영수증 발행이나 취소 요청을 보내면 API가 `202 Accepted`와 `issuanceKey`를 먼저 반환합니다. 최종 결과는 웹훅이나 상태 조회 API로 확인하세요. 1. **웹훅** - 등록한 URL로 결과 이벤트를 전송합니다. 별도 조회 없이 결과를 받으려면 웹훅을 등록하세요. 2. **상태 조회 API** - `Bolta-Client-Reference-Id`로 현재 상태를 조회합니다. > [!NOTE] > > `202`는 요청 접수를 뜻하며 발행이나 취소 성공을 보장하지 않습니다. 최종 상태와 웹훅 시점은 키와 처리 결과에 따라 다릅니다. * **TEST 키** - 요청 처리 후 최종 상태를 바로 조회할 수 있습니다. 자동 웹훅은 요청 접수 시각부터 최소 10초 뒤에 전송합니다. * **LIVE 키** - 처리 중이거나 발행 결과 확인이 필요한 요청은 요청일 다음 날 17:00(KST) 이후에 최종 상태가 확정될 수 있습니다. 웹훅은 최종 상태가 바뀐 뒤 전송합니다. 웹훅 발송 시점은 [웹훅 발송 시간](/docs/api-introduction/webhook-cash-receipt#웹훅-발송-시간)을 확인하세요. ## 요금 현금영수증 발행은 포인트를 차감하지 않습니다. 대량 발행이 필요하면 볼타 담당자와 협의하세요. ## 발행 `POST /v1/cashReceipts`로 발행을 요청합니다. > [!NOTE] > > 현금영수증을 발행하려면 [발급자 등록 API](/api-reference/issuer/register-issuer)로 공급자를 등록하고 공동인증서를 등록하세요. 등록 방법은 [인증서 등록 연동](/docs/api-introduction/certificate-registration)을 참고하세요. | 헤더 | 필수 | 설명 | | - | - | - | | `Authorization` | O | `Basic {apiKey}` 형식으로 입력하세요. [인증 가이드](/docs/api-introduction/authentication)를 참고하세요 | | `Bolta-Client-Reference-Id` | O | 요청자 관리번호이자 멱등키입니다. 1\~255자로 입력하세요 | | `Bolta-Webhook-Test-Code` | X | 테스트 키에서 실패 웹훅을 재현할 때만 입력하세요 | > [!NOTE] > > 같은 API 키와 요청자 관리번호로 요청 내용과 유형까지 동일하게 다시 호출하면 API가 기존 접수 건의 `issuanceKey`를 담은 `202 Accepted` 응답을 반환합니다. 요청 내용이나 유형이 다르면 `409 Conflict`와 `IDEMPOTENCY_CONFLICT`를 반환합니다. 이 규칙은 발행과 취소 요청에 모두 적용됩니다. ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/cashReceipts \ -H "Authorization: Basic {apiKey}" \ -H "Bolta-Client-Reference-Id: your-unique-reference-id" \ -H "Content-Type: application/json" \ -d '{ "itemName": "서비스 이용료", "issuer": { "businessRegistrationNumber": "1234567890", "organizationName": "공급자 상호", "representativeName": "공급자대표", "telephone": "02-1234-5678" }, "recipient": { "type": "PHONE", "value": "010-1234-5678" }, "amount": { "supplyAmount": 100, "vatAmount": 10, "taxFreeAmount": 0 } }' ``` API가 발행 식별 키(`issuanceKey`)를 반환합니다. 취소 요청에 사용할 수 있도록 저장하세요. ```json theme={"dark"} { "issuanceKey": "MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I" } ``` ### 수취인 유형 `recipient.type`에 맞춰 `recipient.value`를 입력하세요. | 유형(`type`) | 의미 | `value` | | - | - | - | | `SELF` | 자진발급(수취인 정보 없이 발행) | 생략(또는 `null`) | | `PHONE` | 휴대폰번호 | `010-1234-5678` 형식 휴대폰번호 | | `BUSINESS_REGISTRATION_NUMBER` | 사업자등록번호(지출증빙) | 하이픈 없는 10자리 사업자등록번호 | ```json theme={"dark"} { "type": "SELF" } ``` ```json theme={"dark"} { "type": "PHONE", "value": "010-1234-5678" } ``` ```json theme={"dark"} { "type": "BUSINESS_REGISTRATION_NUMBER", "value": "0987654321" } ``` ### 공급자 정보 | 필드 | 규칙 | | - | - | | `businessRegistrationNumber` | 하이픈 없는 10자리 사업자등록번호 | | `organizationName` | 상호명. 20자 이하 | | `representativeName` | 대표자명. 10자 이하 | | `telephone` | `010-1234-5678`, `070-1234-5678` 형식, 유선번호(지역번호-3\~4자리 국번-4자리) 또는 대표번호(15xx, 16xx, 18xx-4자리) | ### 금액 `amount`의 각 항목은 `9,999,999,999` 이하로 입력하세요. 총액(`supplyAmount + vatAmount + taxFreeAmount`)도 `9,999,999,999` 이하여야 하며 0보다 커야 합니다. | 필드 | 설명 | | - | - | | `supplyAmount` | 공급가액 | | `vatAmount` | 부가세액 | | `taxFreeAmount` | 면세금액(선택, 기본 0) | ## 상태 조회 발행이나 취소 요청에 사용한 `Bolta-Client-Reference-Id`로 처리 상태를 조회합니다. ```bash theme={"dark"} curl "https://xapi.bolta.io/v1/cashReceipts/status?clientReferenceId=your-unique-reference-id" \ -H "Authorization: Basic {apiKey}" ``` `status`로 성공과 실패를 판별하세요. 실패 사유는 `failure`에서 확인하세요. | status | 의미 | | - | - | | `PENDING` | 접수 완료, 처리 시작 전 | | `REQUEST_SUCCESS` | 요청 전달 완료. 최종 결과 아님 | | `ISSUED` | 발행 성공 | | `CANCELED` | 취소 성공 | | `EXTERNALLY_CANCELED` | 볼타 외부에서 취소됨 | | `REQUEST_FAILURE`, `ISSUE_FAILED`, `CANCEL_FAILED` | 실패(`failure` 확인) | 발행에 성공하면 API가 현금영수증 승인번호(`cashReceiptApprovalNumber`)를 함께 반환합니다. LIVE 키에서 `PENDING`이나 `REQUEST_SUCCESS`가 이어져도 같은 요청을 다시 접수하지 마세요. ## 취소 발행 처리에 접수된 원본 현금영수증을 전액 취소합니다. 국세청 발급 확정 전에도 취소할 수 있습니다. 경로의 `{issuanceKey}`에 발행 응답으로 받은 `issuanceKey`를 입력하세요. 원본 요청이 `PENDING` 상태이면 취소할 수 없고, API가 `409`와 `ORIGINAL_ISSUANCE_PENDING`을 반환합니다. 원본 상태가 바뀐 뒤 다시 요청하세요. 같은 원본에 진행 중이거나 완료된 취소 요청이 있으면 `409`와 `CANCELLATION_ALREADY_REQUESTED`를 반환합니다. 새 요청자 관리번호로 보내도 응답은 같으니, 상태 조회로 기존 취소 결과를 확인하세요. 볼타 외부(예: 홈택스)에서 전액이나 일부가 먼저 취소된 원본을 취소해도 API는 요청을 접수하고 `202 Accepted`를 반환합니다. 이 취소 요청은 `CANCEL_FAILED`로 끝나고, 실패 코드는 `CANCELLATION_TARGET_NOT_FOUND`입니다. 실패 코드는 상태 조회의 `failure.code`나 웹훅의 `data.cause.code`에서 확인하세요. 원본이 이미 `EXTERNALLY_CANCELED` 상태여도 결과는 같습니다. ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/cashReceipts/MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I/cancellation \ -H "Authorization: Basic {apiKey}" \ -H "Bolta-Client-Reference-Id: your-unique-reference-id-cancel" ``` > [!NOTE] > > 취소 요청의 `Bolta-Client-Reference-Id`에는 발행 요청과 다른 값을 입력하세요. ## 실패 웹훅 재현(테스트) 테스트 키로 발행이나 취소를 호출할 때 `Bolta-Webhook-Test-Code` 헤더에 실패 코드를 입력하세요. API가 해당 실패 웹훅을 전송합니다. ```bash theme={"dark"} -H "Bolta-Webhook-Test-Code: INVALID_RECIPIENT_IDENTIFIER" ``` 실패 코드 목록은 [에러 코드](/docs/api-introduction/error-codes#현금영수증-웹훅)를 참고하세요. ## 관련 문서 * [현금영수증 웹훅](/docs/api-introduction/webhook-cash-receipt) - 현금영수증 결과 이벤트 페이로드 * [에러 코드](/docs/api-introduction/error-codes) - 현금영수증 실패 코드 * [인증 가이드](/docs/api-introduction/authentication) - `Authorization`, `Bolta-Client-Reference-Id` * [API 문서](/api-reference/cash-receipt/issue-cash-receipt) - 요청과 응답 스키마 # 인증서 등록 연동 Source: https://docs.bolta.io/docs/api-introduction/certificate-registration 발급자의 공동인증서를 외부에서 등록받고, 리다이렉트 복귀 후 등록 결과를 확인하는 워크플로우입니다. 세금계산서 발행에 사용할 공동인증서 소유자를 [발급자 등록 API](/api-reference/issuer/register-issuer)로 등록한 뒤 인증서를 등록하세요. 일반 발행과 대리 정발행에서는 공급자가 발급자이고, [위수탁 발행](/docs/api-introduction/usecase-brokered)에서는 수탁자가 발급자입니다. 인증서 등록은 발급자가 직접 웹에서 인증서를 선택하고 비밀번호를 입력하는 과정입니다. 발급자를 등록 URL로 보낸 뒤 등록이 끝나면 플랫폼으로 돌아오게 하세요. 이때 돌아올 위치가 **인증서 등록 완료 리다이렉트 URL**입니다. ## 사전 준비: 리다이렉트 URL 설정 리다이렉트 URL은 API 키 단위로 설정합니다. 따로 지정하지 않으면 기본값 `https://bolta.io/openapi-certificate-redirect`을 사용하며, 개발자센터의 API 키 수정 화면에서 원하는 주소로 변경할 수 있어요. 리다이렉트 URL은 직접 운영하는 HTTPS 주소로 지정하세요. 설정 방법은 [API 키](/docs/developer-center/api-key)와 [웹훅 연결하기](/docs/developer-center/webhook-connection)를 참고하세요. ## 등록 흐름 **1. 인증서 등록 URL 발급** [인증서 등록 URL 조회 API](/api-reference/certificate/retrieve-issuer-certificate-registration-url)의 경로에 `issuerId`를 넣어 등록 URL을 발급받습니다. 발급된 URL은 5분간 유효하며, 만료되면 다시 발급받으세요. **2. 발급자 인증서 등록** 발급자가 URL에 접속해 인증서를 선택하고 비밀번호를 입력합니다. **3. 리다이렉트 복귀** 등록이 끝나면 발급자의 브라우저가 API 키에 설정한 리다이렉트 URL로 이동합니다. **4. 등록 결과 확인** [인증서 등록 내역 조회 API](/api-reference/certificate/retrieve-issuer-certificate-registration-status)를 호출해 응답의 `latestHistory.code`와 `latestHistory.message`로 등록 성공 여부를 확인합니다. 이 내역은 등록 후 30초 이내에만 조회할 수 있으므로, 리다이렉트로 복귀한 직후에 호출하세요. 리다이렉트 복귀만으로 등록 성공을 판단하지 말고 결과 코드를 확인하세요. `latestHistory`가 `null`이면 조회 가능한 등록 내역이 없는 상태로 처리하세요. ## 등록 결과 코드 인증서 등록 내역 조회 API 응답의 `latestHistory.code`와 `latestHistory.message` 값입니다. | code | message | 결과 | | - | - | - | | `0000` | 인증서가 등록되었습니다. | 성공 | | `0001` | 다른 사업자등록번호로 발급된 인증서입니다. | 실패 | | `0002` | 세금계산서를 발행 할 수 없는 인증서입니다. | 실패 | | `0003` | 사업자용 인증서를 등록해주세요. | 실패 | | `9999` | 알 수 없는 오류 | 실패 | | `-1` | 사용자 취소 | 실패 | ## 관련 문서 * [대리 정발행](/docs/api-introduction/usecase-delegated) * [위수탁 발행](/docs/api-introduction/usecase-brokered) * [간편 승인 역발행](/docs/api-introduction/usecase-reverse-simple) * [API 키](/docs/developer-center/api-key) * [웹훅 연결하기](/docs/developer-center/webhook-connection) # 개발자 도구 Source: https://docs.bolta.io/docs/api-introduction/developer-tools 샌드박스 환경, API 문서, 디버깅 도구 등 볼타가 제공하는 개발자 도구를 소개합니다. # 개발자 도구 ## API 문서 모든 엔드포인트의 상세 문서와 프로그래밍 언어별 코드 샘플을 제공합니다. 지원 언어: Shell, HTTP, JavaScript, Ruby, Python, PHP, Java, Go ## 샌드박스 환경 테스트 키로 API를 테스트하세요. * **테스트 키** (`test_` prefix): 모든 발행 요청을 가상으로 처리하고 국세청에 전송하지 않습니다. * **라이브 키** (`live_` prefix): 실제 환경에서 동작하며, 발행 요청을 국세청에 실제로 전송합니다. > 테스트 키와 라이브 키는 [개발자센터 > API 키](/docs/developer-center/api-key) 메뉴에서 생성하세요. [사업자등록 상태 조회](/docs/api-introduction/business-registration-status)는 테스트 키로 가이드에 안내한 고정 번호만 모의 조회합니다. 목록 밖 번호는 `400`으로 거절하고, 일괄 조회에 목록 밖 번호가 하나라도 섞이면 요청 전체를 거절합니다. [매출/매입 내역 조회](/docs/api-introduction/revenue-expense)는 테스트 키로 호출하면 구독과 관계없이 고정 샘플 매출과 매입을 돌려줍니다. 동기화를 요청해도 수집하지 않습니다. [입출금 내역 조회](/docs/api-introduction/bank-account-transactions)는 테스트 키로 호출하면 구독과 관계없이 고정 샘플 계좌와 거래를 돌려줍니다. [예금주 조회](/docs/api-introduction/bank-account-holder)는 테스트 키로 가이드에 안내한 고정 계좌번호만 모의 조회합니다. 포인트를 차감하지 않으며, 목록 밖 계좌번호는 `400`으로 거절합니다. [사업자등록증 인식과 진위확인](/docs/api-introduction/business-registration-certificate)은 테스트 키로 호출하면 올린 파일과 관계없이 고정 결과를 돌려주고 포인트를 차감하지 않습니다. [사업자 프로필 조회](/docs/api-introduction/business-profile)는 테스트 키로 가이드에 안내한 모의 사업자만 검색하고 조회합니다. 포인트를 차감하지 않으며, 목록 밖 번호의 상세 조회는 `400`으로 거절합니다. [세금계산서 PDF 조회](/docs/api-introduction/tax-invoice-pdf)는 테스트 키로 발행한 건에 바로 샘플 PDF 주소를 돌려줍니다. `202` 대기 흐름은 라이브 키로 확인하세요. ## 로깅 웹훅 전송 내역을 확인하세요. * **웹훅 로그**: 발행 완료, 실패 등 이벤트 전송 내역 모니터링 > 웹훅 설정은 [웹훅 연결](/docs/developer-center/webhook-connection) 가이드를, 로그 확인은 [웹훅 로그](/docs/developer-center/webhook-log) 가이드를 참고하세요. # 서류 발급 Source: https://docs.bolta.io/docs/api-introduction/document-issuance 사업자등록증명, 납세증명서 같은 홈택스 국세 증명 서류와 법인등기사항전부증명서를 발급하고 원본 PDF를 내려받는 API를 안내합니다. ## 무엇을 발급하나요 홈택스 국세 증명 서류와 법인등기사항전부증명서를 발급하고 원본 PDF를 내려받습니다. API는 요청을 접수한 뒤 발급을 진행합니다. 접수 응답의 `issuanceKey`로 결과를 조회하세요. | 경로 | 용도 | | - | - | | `POST /v1/documentIssuances` | 서류 발급 요청 | | `GET /v1/documentIssuances/{issuanceKey}` | 발급 결과 조회 | ## 이용 조건 * 홈택스 서류는 API 키가 속한 사업자의 서류를 발급합니다. 볼타 대시보드에 공동인증서를 등록하세요. * 법인등기는 `document.corporationNumber`에 넣은 법인의 등기부를 발급합니다. 지원하는 법인 종류는 주식회사, 유한회사, 합명회사, 합자회사, 유한책임회사, 사단법인, 재단법인, 의료법인, 협동조합(사회적협동조합 포함), 기타법인(특허법인 등)입니다. 공동인증서는 필요 없습니다. ## 요금 서류 한 건마다 아래 포인트를 차감합니다. 발급에 실패하면 차감하지 않습니다. | 서류 | 한 건 요금 | | - | - | | 홈택스 서류 5종 | 500포인트 | | 법인등기사항전부증명서(열람용) | 1,000포인트 | | 법인등기사항전부증명서(제출용) | 1,500포인트 | ## 지원 서류 | `document.type` | 서류 | 입력 | | - | - | - | | `BUSINESS_REGISTRATION_PROOF` | 사업자등록증명 | `language`: `KO`, `EN` | | `BUSINESS_REGISTRATION_CERTIFICATE` | 사업자등록증 재발급 | `reason`: 재발급 사유, 10자 이내 | | `TAX_PAYMENT_CERTIFICATE` | 납세증명서 | `purpose`: `PAYMENT_RECEIPT`(대금수령), `OTHER`(기타) | | `VAT_TAX_BASE_PROOF` | 부가가치세 과세표준증명 | `from`, `to`: 과세기간 `YYYY-MM` | | `STANDARD_FINANCIAL_STATEMENT_PROOF` | 표준재무제표증명 | `fiscalYearEnd`: 사업연도 종료 연월 `YYYY-MM` | | `CORPORATE_REGISTRY_VIEW` | 법인등기사항전부증명서(열람용) | `corporationNumber`: 법인등록번호 13자리, `cancelledEntries`: `INCLUDE`(말소사항 포함), `EXCLUDE`(미포함) | | `CORPORATE_REGISTRY_ISSUANCE` | 법인등기사항전부증명서(제출용) | `corporationNumber`: 법인등록번호 13자리, `cancelledEntries`: `INCLUDE`(말소사항 포함), `EXCLUDE`(미포함) | * **사업자등록증 재발급**: `reason`은 사업자등록증에 그대로 인쇄됩니다. 실제 사유를 적으세요(예: `분실`). API가 앞뒤 공백을 제거합니다. 비었거나 10자를 넘거나 제어 문자가 있으면 `400 INVALID_REQUEST`를 반환합니다. * **사업자등록증명**: `language`를 빼면 API가 `400 INVALID_REQUEST`를 반환합니다. 영문(`EN`)은 홈택스에 등록된 사업자 영문 정보로 발급합니다. 영문 정보가 없거나 형식이 맞지 않으면 `FAILED`로 끝나고 포인트를 차감하지 않습니다. 표기를 바꾸려면 홈택스에서 영문 정보를 먼저 수정하세요. * **납세증명서**: 국세 체납이 있으면 홈택스가 발급하지 않습니다. 유효기간은 발급일부터 30일입니다. * **부가가치세 과세표준증명**: `from`은 01월 또는 07월, `to`는 06월 또는 12월로 입력하세요. `from`은 `to`보다 늦을 수 없으며, 어기면 `400 INVALID_REQUEST`를 반환합니다. 최대 5개 연도까지 한 번에 발급합니다. * **표준재무제표증명**: 12월 결산 법인의 2025 사업연도라면 `2025-12`를 입력하세요. 개인사업자는 연도만 봅니다. 법인세나 종합소득세 신고를 마친 사업연도만 발급됩니다. 끝나지 않은 사업연도(종료 연월이 요청한 달이거나 그 뒤)는 API가 `400 PERIOD_NOT_CLOSED`를 반환하고 포인트를 예약하지 않습니다. 사업연도가 끝났어도 신고 전이면 `FAILED`로 끝나고 포인트를 차감하지 않습니다. * **법인등기사항전부증명서**: 인터넷등기소에서 발급합니다. `corporationNumber`는 `1101111234567`처럼 숫자만 넣거나 `110111-1234567`처럼 하이픈을 넣으세요. 형식이 틀리면 API가 `400 INVALID_REQUEST`를 반환합니다. `cancelledEntries`로 말소사항 포함 여부를 고르세요. 빼면 API가 `400 INVALID_REQUEST`를 반환합니다. 열람용은 내용 확인용입니다. 관공서나 은행에 낼 서류가 필요하면 제출용을 요청하세요. 같은 법인, 같은 서류, 같은 `cancelledEntries`를 다른 요청이 발급하는 중이면 API가 `409 TARGET_BUSY`를 반환합니다. 앞 요청이 끝난 뒤 다시 요청하세요. ## 발급 가능 시간 | 서류 | 요청 가능 시간 | | - | - | | 납세증명서 | 매일 06:00\~22:00(한국 시간) | | 그 밖의 서류 | 24시간 | 요청 가능 시간 밖에 요청하면 API가 `409 OUTSIDE_SERVICE_HOURS`를 반환하고 포인트를 예약하지 않습니다. 요청 가능 시간에 다시 요청하세요. 홈택스가 점검 등으로 신청을 받지 않으면 `FAILED`로 끝나고 포인트를 차감하지 않습니다. 잠시 뒤 다시 요청하세요. ## 발급 요청 ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/documentIssuances \ -H "Authorization: Basic {apiKey}" \ -H "Bolta-Client-Reference-Id: order-20260919-001" \ -H "Content-Type: application/json" \ -d '{ "document": { "type": "BUSINESS_REGISTRATION_PROOF", "language": "KO" } }' ``` 법인등기는 `document`에 법인등록번호와 말소사항 포함 여부를 넣으세요. ```json theme={"dark"} { "document": { "type": "CORPORATE_REGISTRY_ISSUANCE", "corporationNumber": "110111-1234567", "cancelledEntries": "EXCLUDE" } } ``` `Bolta-Client-Reference-Id`에는 요청마다 새 값(1\~255자)을 넣으세요. 응답을 받지 못했다면 같은 값과 본문으로 다시 보내세요. API가 기존 요청을 돌려줍니다. API는 `202 Accepted`와 아래 응답을 반환합니다. ```json theme={"dark"} { "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 } ``` 응답의 `language`는 발급한 서류의 언어입니다. 사업자등록증명이 아닌 서류는 항상 `KO`입니다. ## 결과 조회 ```bash theme={"dark"} curl https://xapi.bolta.io/v1/documentIssuances/{issuanceKey} \ -H "Authorization: Basic {apiKey}" ``` 홈택스 서류는 보통 30초 안에 끝납니다. 5\~10초 간격으로 조회하세요. 같은 사업자의 홈택스 서류를 여러 건 보내면 뒤 요청은 앞 요청이 끝난 뒤 시작합니다. 기다리는 시간이 1시간을 넘기면 `FAILED`로 바뀌고 포인트를 차감하지 않습니다. 법인등기는 몇 분이 걸리고, 요청이 몰리면 더 늦어집니다. 인터넷등기소에서 찾을 수 없는 법인등록번호, 해산이나 폐쇄로 살아 있는 등기부가 없는 법인, 지원하지 않는 종류의 법인은 `FAILED`로 끝나고 포인트를 차감하지 않습니다. 지점이 있거나 상호를 바꾼 법인은 본점의 현재 등기부로 발급합니다. | `status` | 뜻 | 할 일 | | - | - | - | | `ACCEPTED` | 접수, 기관 신청 전 | 기다리세요 | | `SUBMITTED` | 기관 신청 완료, 결과 대기 | 기다리세요 | | `COMPLETED` | 발급 완료 | `downloadUrl`로 내려받으세요 | | `FAILED` | 발급 실패 | 홈택스 서류는 인증서, 체납, 신고 여부를 확인하세요. 법인등기는 법인등록번호와 법인의 종류, 상태를 확인하세요. 문제가 없으면 잠시 뒤 다시 요청하세요. 다시 요청할 때는 새 `Bolta-Client-Reference-Id`를 쓰세요 | | `ACTION_REQUIRED` | 볼타가 결과 확인 중 | 같은 서류를 다시 요청하지 마세요. 확인이 끝나면 `COMPLETED` 또는 `FAILED`로 바뀝니다 | `COMPLETED` 응답에는 다음 값이 채워집니다. | 필드 | 설명 | | - | - | | `issuedOn` | 원본 PDF에 적힌 발급일(법인등기는 열람일 또는 발급일) `YYYY-MM-DD` | | `retentionExpiresAt` | 보관 만료 시각. 발급 후 30일 | | `downloadUrl` | 원본 PDF 주소. 홈택스 서류는 5분, 법인등기는 1분 동안 유효 | | `downloadUrlExpiresAt` | 주소 만료 시각 | 주소가 만료되면 다시 조회해 새 주소를 받으세요. 보관 기간이 지나면 `downloadUrl`은 `null`입니다. 내려받은 파일 이름은 `{서류명}_{사업자등록번호}_{발급일}.pdf`입니다. 예를 들어 `사업자등록증명_123-45-67890_20260919.pdf`이고, 영문 증명은 `사업자등록증명(영문)_...`으로 시작합니다. 법인등기는 사업자등록번호 대신 법인등록번호를 씁니다. 열람용은 `법인등기열람_110111-1234567_20260922.pdf`, 제출용은 `법인등기발급_...`입니다. 한글 파일 이름을 지원하지 않는 클라이언트는 `business-registration-proof_1234567890_20260919.pdf` 같은 영문 이름으로 받습니다. 같은 날 같은 서류를 여러 번 받으면 파일 이름이 같습니다. 파일을 따로 저장한다면 `issuanceKey`와 함께 기록하세요. ## 테스트 키 테스트 키는 기관에 신청하지 않고 포인트도 차감하지 않습니다. * 홈택스 서류는 항상 바로 `COMPLETED`로 끝납니다. * 법인등기는 `corporationNumber`로 결과가 정해집니다. 아래 번호만 받고, 다른 번호는 API가 `400 INVALID_REQUEST`를 반환합니다. | `corporationNumber` | 결과 | | - | - | | `1100000000014` | 바로 `COMPLETED` | | `1100000000071` | 바로 `FAILED` | `COMPLETED` 조회 응답에는 샘플 PDF 주소가 담깁니다. 샘플은 실제 서류가 아니며 서류 종류와 관계없이 내용이 같습니다. 샘플 주소는 5분 동안 유효하고, 발급일은 2026년 1월 1일로 고정입니다. 만료 뒤 재조회와 파일 이름 규칙은 실제 발급과 같으니 다운로드 연동을 테스트 키로 확인하세요. ## 오류 | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 요청 형식 오류, 사업자등록증명의 `language` 누락, 법인등록번호 형식 오류, 법인등기의 `cancelledEntries` 누락, 테스트 키로 안내 목록 밖 법인등록번호 요청 | | `400` | `PERIOD_NOT_CLOSED` | 표준재무제표증명의 사업연도가 끝나지 않음. 신고를 마친 사업연도로 다시 요청하세요 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족. 개발자센터에서 충전하세요 | | `404` | `DOCUMENT_ISSUANCE_NOT_FOUND` | 없는 `issuanceKey`, 다른 파트너나 다른 모드 키로 접수한 요청 | | `409` | `CERTIFICATE_REQUIRED` | 공동인증서 미등록 또는 만료. 홈택스 서류만 해당 | | `409` | `IDEMPOTENCY_CONFLICT` | 같은 `Bolta-Client-Reference-Id`에 다른 본문 | | `409` | `OUTSIDE_SERVICE_HOURS` | 서류의 요청 가능 시간 밖 요청. [발급 가능 시간](#발급-가능-시간)을 확인하세요 | | `409` | `TARGET_BUSY` | 같은 법인, 같은 등기 서류, 같은 `cancelledEntries`를 다른 요청이 발급 중. 앞 요청이 끝난 뒤 다시 요청하세요 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족. 충전하거나 그 요청이 끝난 뒤 다시 요청하세요 | | `429` | `TOO_MANY_IN_FLIGHT` | 처리 중인 요청이 5건. 동시에 보낸 요청도 5건까지만 접수합니다. 끝난 뒤 다시 요청하세요 | | `503` | `DOCUMENT_ISSUANCE_UNAVAILABLE` | 지금은 발급할 수 없음. 포인트를 예약하지 않습니다. 잠시 후 다시 요청하세요 | # 에러 코드 Source: https://docs.bolta.io/docs/api-introduction/error-codes 볼타 API 에러 코드를 안내합니다. ## 전자(세금)계산서 발행 API | 상태 코드 | 에러 코드 | 에러 메시지 | | - | - | - | | `400` | `NOT_FOUND_CERTIFICATE` | 공동인증서가 등록되지 않았습니다. | | `400` | `INVALID_TRUSTEE_BUSINESS` | 유효하지 않은 수탁자 사업자등록번호입니다. | | `400` | `INVALID_SUPPLIER_BUSINESS` | 현재 API 키에 등록된 발급자를 찾을 수 없습니다. | ## 전자(세금)계산서 발행 웹훅 | 에러 코드 | 에러 메시지 | | - | - | | `INVALID_SUPPLIER_BUSINESS` | 공급자 사업자등록번호가 유효하지 않습니다. (미등록, 폐업) | | `INVALID_SUPPLIED_BUSINESS` | 공급받는자 사업자등록번호가 유효하지 않습니다. | | `INVALID_TRUSTEE_BUSINESS` | 수탁자 사업자등록번호가 유효하지 않습니다. (미등록, 폐업) | | `INTERNAL_SERVER_ERROR` | 볼타 서버에서 에러가 발생했습니다. | | `INVALID_CERTIFICATE` | 등록된 공동인증서가 유효하지 않습니다.(만료/폐기) | ## 발급자 등록 API | 상태 코드 | 에러 코드 | 에러 메시지 | | - | - | - | | `400` | `INVALID_SUPPLIER_BUSINESS` | 유효하지 않은 사업자등록번호입니다. | ## 현금영수증 API | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 요청 검증 또는 취소 가능 상태 검증 실패 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `403` | `FORBIDDEN` | 발급자 접근 권한 없음 | | `409` | `IDEMPOTENCY_CONFLICT` | 같은 `Bolta-Client-Reference-Id`에 다른 요청 내용 | | `409` | `CANCELLATION_ALREADY_REQUESTED` | 같은 원본에 진행 중이거나 완료된 취소 요청이 있음 | | `409` | `ORIGINAL_ISSUANCE_PENDING` | 원본 발행 요청이 아직 `PENDING` 상태라 취소할 수 없음 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `SERVICE_UNAVAILABLE` | 발행이나 취소 중 내부 API 통신 오류 | ## 현금영수증 웹훅 현금영수증 발행이나 취소가 실패하면 API가 다음 코드를 웹훅 페이로드의 `data.cause.code`와 상태 조회 응답의 `failure.code`에 담습니다. | 에러 코드 | 에러 메시지 | | - | - | | `INVALID_ISSUER` | 공급자 정보 또는 현금영수증 발행 등록 상태를 확인해주세요. | | `INVALID_RECIPIENT_IDENTIFIER` | 현금영수증 발급 수단 정보를 확인해주세요. | | `ORIGINAL_ISSUANCE_FAILED` | 원본 현금영수증 발행이 실패해 취소 요청을 처리할 수 없습니다. | | `CANCELLATION_TARGET_NOT_FOUND` | 이미 취소되었거나 취소할 수 없는 거래입니다. | | `UNKNOWN` | 현금영수증 처리에 실패했습니다. 문제가 계속되면 고객센터로 문의해주세요. | `ORIGINAL_ISSUANCE_FAILED`와 `CANCELLATION_TARGET_NOT_FOUND`는 `CASH_RECEIPT_CANCEL_FAILED`에서만 반환됩니다. * `ORIGINAL_ISSUANCE_FAILED`: 원본 발행이 처리 중일 때 취소 요청을 접수했지만, 이후 원본 발행이 최종 실패한 경우 * `CANCELLATION_TARGET_NOT_FOUND`: 취소 대상이 확인되지 않거나 이미 취소된 경우. 볼타 외부(예: 홈택스)에서 전액이나 일부가 먼저 취소된 경우, 같은 현금영수증의 취소 요청이 이미 접수된 경우도 해당합니다 ## 세금계산서 발행 마감일 조회 API | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | `date` 누락, `YYYY-MM-DD` 형식이 아니거나 존재하지 않는 날짜, 마감일을 제공하지 않는 달 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | [세금계산서 발행 마감일 조회](/docs/api-introduction/tax-invoice-issue-due-date)를 참고하세요. ## 사업자등록 상태 조회 API | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 사업자등록번호 누락, 10자리가 아닌 입력, 테스트 키의 안내 목록 밖 번호 조회. 일괄 조회의 빈 배열, 100개 초과 | | `400` | `INVALID_BUSINESS_REGISTRATION_NUMBER` | 체크섬이 맞지 않는 사업자등록번호 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족 | | `403` | `FORBIDDEN` | 리소스 접근 권한 없음 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족 | | `429` | `RATE_LIMITED` | 파트너 호출 한도 또는 볼타 서비스 전체 조회 한도 초과. `Retry-After` 헤더에 재시도까지 남은 초를 담습니다 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `LOOKUP_UNAVAILABLE` | 사업자등록 상태를 확인할 수 없음. 일괄 조회는 한 건도 확인하지 못한 경우 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | 일괄 조회에서 일부 번호만 확인하지 못하면 오류 대신 `200`으로 응답하고 해당 항목의 `status`를 `null`로 둡니다. [사업자등록 상태 조회](/docs/api-introduction/business-registration-status)를 참고하세요. ## 사업자등록증 인식과 진위확인 API | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | `file` 파트 누락, 빈 파일, 5MB 초과 | | `400` | `INVALID_FILE` | 지원하지 않는 형식, 읽을 수 없는 파일, 5쪽 초과 PDF, 사업자등록증이 아니거나 사업자등록번호를 읽을 수 없는 파일 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족 | | `415` | `UNSUPPORTED_MEDIA_TYPE` | `Content-Type`이 `multipart/form-data`가 아님 | | `429` | `TOO_MANY_IN_FLIGHT` | 같은 파트너의 처리 중인 요청이 있음. 라이브 키만 해당. `Retry-After` 헤더에 재시도까지 남은 초를 담습니다 | | `429` | `RATE_LIMITED` | 하루 처리 한도 초과 또는 볼타 인식 처리량 포화. `Retry-After` 헤더에 재시도까지 남은 초를 담습니다 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `EXTRACTION_UNAVAILABLE` | 인식 실패 또는 처리 시간 초과 | | `503` | `LOOKUP_UNAVAILABLE` | 호출 한도를 판정할 수 없음 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | [사업자등록증 인식과 진위확인](/docs/api-introduction/business-registration-certificate)을 참고하세요. ## 사업자 프로필 조회 API | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | `keyword` 누락이나 검색어 규칙 위반, 범위를 벗어난 `limit`, `excludeStatuses`나 `businessKind`의 빈 값, 중복, 받지 않는 값, 10자리가 아닌 사업자등록번호, 테스트 키의 안내 목록 밖 번호 조회 | | `400` | `INVALID_BUSINESS_REGISTRATION_NUMBER` | 상세 조회에서 체크섬이 맞지 않는 사업자등록번호 | | `400` | `INVALID_CURSOR` | 형식이 틀린 cursor, 받을 때와 검색 조건이나 키 모드가 다른 cursor, 오래된 cursor | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족 | | `404` | `NOT_FOUND` | 상세 조회에서 프로필이 없는 사업자등록번호 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족 | | `429` | `RATE_LIMITED` | 호출 한도 초과. `Retry-After` 헤더에 재시도까지 남은 초를 담습니다 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `LOOKUP_UNAVAILABLE` | 지금은 검색이나 조회를 할 수 없음 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | [사업자 프로필 조회](/docs/api-introduction/business-profile)를 참고하세요. ## 매출/매입 내역 조회 API | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 날짜 형식 오류, `from`이 `to`보다 늦음, `type`이나 `limit` 값 오류 | | `400` | `INVALID_CURSOR` | 변조했거나 형식이 틀린 cursor, 경로나 조건이나 키 모드가 cursor를 받을 때와 다름 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PLAN_UPGRADE_REQUIRED` | 스탠다드 플랜 미만 (포인트 잔액 부족과 다름) | | `409` | `SYNC_IN_PROGRESS` | 같은 경로의 수집이 이미 진행 중 | | `422` | `NO_SOURCE_CONNECTED` | 매출이나 매입을 가져올 연동이 없음 | | `429` | `SYNC_RATE_LIMITED` | 동기화 요청 한도 초과. `Retry-After` 헤더에 재시도까지 남은 초를 담습니다 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `FEED_UNAVAILABLE` | 일시적으로 내역을 불러올 수 없음. 같은 cursor로 다시 호출하세요 | | `503` | `SYNC_UNAVAILABLE` | 동기화 요청을 일시적으로 판정할 수 없음 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | [매출/매입 내역 조회](/docs/api-introduction/revenue-expense)를 참고하세요. ## 입출금 내역 조회 API | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 날짜 형식 오류, `from`이 `to`보다 늦음, `transactionType`이나 `limit` 값 오류 | | `400` | `INVALID_CURSOR` | 변조했거나 형식이 틀린 cursor, 조건이나 API 키가 cursor를 받을 때와 다름 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PLAN_UPGRADE_REQUIRED` | 스탠다드 플랜 미만 (포인트 잔액 부족과 다름) | | `404` | `BANK_ACCOUNT_NOT_FOUND` | 없거나 내 사업자의 것이 아닌 `bankAccountId` | | `409` | `SYNC_IN_PROGRESS` | 동기화가 이미 진행 중 | | `422` | `BANK_ACCOUNT_NOT_CONNECTED` | 연결된 입출금 계좌가 없음 | | `429` | `SYNC_RATE_LIMITED` | 동기화 요청 한도 초과. `Retry-After` 헤더에 재시도까지 남은 초를 담습니다 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `SYNC_UNAVAILABLE` | 동기화 요청을 일시적으로 판정할 수 없음 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | [입출금 내역 조회](/docs/api-introduction/bank-account-transactions)를 참고하세요. ## 예금주 조회 API 예금주를 찾지 못하면 단건 조회는 HTTP 400으로 응답하고, 일괄 조회는 HTTP 200 응답의 `results[].error`에 오류를 담습니다. | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 요청 형식 오류, 계좌 100개 초과, 테스트 키로 안내 목록 밖 계좌 조회 | | `400` | `ACCOUNT_NOT_VERIFIED` | 계좌를 확인하지 못함 | | `400` | `ACCOUNT_NOT_AVAILABLE` | 사고신고 계좌, 해약 계좌, 입금이 정지된 가상계좌 | | `400` | `AMOUNT_REQUIRED` | 입금 금액이 정해진 가상계좌인데 `amount`가 없음 | | `400` | `AMOUNT_MISMATCH` | 입력한 `amount`가 가상계좌에 정해진 금액과 다름 | | `400` | `AMOUNT_VERIFICATION_UNAVAILABLE` | 금액 지정형 가상계좌를 지금은 조회할 수 없음 | | `400` | `UNSUPPORTED_BANK` | 예금주 조회를 지원하지 않는 은행코드 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족 | | `403` | `FORBIDDEN` | 접근 권한 없음 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족 | | `429` | `RATE_LIMITED` | 하루 조회 한도 초과. `Retry-After` 헤더에 재시도까지 남은 초를 담습니다 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `BANK_UNAVAILABLE` | 은행 점검이나 연결 오류. 점검이면 `message`가 점검이라고 알림 | | `503` | `LOOKUP_UNAVAILABLE` | 조회 보호 한도를 판정할 수 없음 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | [예금주 조회](/docs/api-introduction/bank-account-holder)를 참고하세요. ## 서류 발급 API | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 요청 형식 오류, 사업자등록증명의 `language` 누락, 법인등록번호 형식 오류, 법인등기의 `cancelledEntries` 누락, 테스트 키로 안내 목록 밖 법인등록번호 요청 | | `400` | `PERIOD_NOT_CLOSED` | 표준재무제표증명의 사업연도가 끝나지 않음 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PAYMENT_REQUIRED` | 포인트 잔액 부족 | | `404` | `DOCUMENT_ISSUANCE_NOT_FOUND` | 없는 `issuanceKey`, 다른 파트너나 다른 모드 키로 접수한 요청 | | `409` | `CERTIFICATE_REQUIRED` | 공동인증서 미등록 또는 만료. 홈택스 서류만 해당 | | `409` | `IDEMPOTENCY_CONFLICT` | 같은 `Bolta-Client-Reference-Id`에 다른 본문 | | `409` | `OUTSIDE_SERVICE_HOURS` | 서류의 [요청 가능 시간](/docs/api-introduction/document-issuance#발급-가능-시간) 밖 요청 | | `409` | `TARGET_BUSY` | 같은 법인, 같은 등기 서류, 같은 `cancelledEntries`를 다른 요청이 발급 중 | | `409` | `AVAILABLE_POINTS_INSUFFICIENT` | 진행 중인 다른 요청 때문에 지금 쓸 수 있는 포인트 부족 | | `429` | `TOO_MANY_IN_FLIGHT` | 처리 중인 요청이 5건 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `DOCUMENT_ISSUANCE_UNAVAILABLE` | 지금은 발급할 수 없음. 잠시 후 다시 요청 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | [서류 발급](/docs/api-introduction/document-issuance)을 참고하세요. ## 세금계산서 PDF 조회 API | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `TAX_INVOICE_RETRIEVE_NOT_AVAILABLE` | 발행 완료 전이거나 발행 실패. 역발행은 공급자 승인 전이거나 거절 | | `400` | `INVALID_DOCUMENT` | 볼타에 저장된 문서 정보로 PDF를 만들 수 없음 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `403` | `FORBIDDEN` | 발행을 요청한 API 키가 아님 | | `404` | `NOT_FOUND` | 없는 `issuanceKey` | | `429` | `TOO_MANY_IN_FLIGHT` | 같은 사업자에서 만드는 중인 PDF 10건 또는 같은 API 키로 만드는 중인 PDF 20건 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `PDF_GENERATION_FAILED` | 여러 번 시도했지만 PDF를 만들지 못함 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | 자세한 내용은 [세금계산서 PDF 조회](/docs/api-introduction/tax-invoice-pdf)를 참고하세요. ## 공통 에러 | 상태 코드 | 에러 코드 | 에러 메시지 | | - | - | - | | `400` | `INVALID_REQUEST` | 요청을 처리할 수 없습니다. 필수 파라미터를 보내지 않았거나, 파라미터 포맷이 잘못되었을 때 돌아오는 응답입니다. 요청 파라미터를 확인해주세요. | | `404` | `NOT_FOUND` | 요청한 리소스가 존재하지 않습니다. 요청한 API 주소를 다시 한 번 확인해주세요. | | `500` | `INTERNAL_SERVER_ERROR` | 볼타 서버에서 에러가 발생했습니다. | # 용어 정리 Source: https://docs.bolta.io/docs/api-introduction/glossary 공급자, 공급받는자, 수탁자, 발급자 등 볼타 API의 주요 용어를 정리합니다. ## 세금계산서 당사자 | 용어 | 뜻 | API 필드 | | - | - | - | | **공급자** | 재화나 용역을 공급하고 세금계산서를 보내는 사업자 | `supplier` | | **공급받는자** | 재화나 용역을 공급받고 세금계산서를 받는 사업자 | `supplied` | | **수탁자** | 위탁자를 대신해 세금계산서를 발행하는 사업자 | `trustee` | ## 발급자 발급자는 API 키 범위에 등록한 세금계산서 발행 주체입니다. [발급자 등록 API](/api-reference/issuer/register-issuer)로 등록합니다. 정발행에는 공동인증서가 필요하지만 이메일 승인 역발행은 인증서를 미리 등록하지 않아도 됩니다. | 발행 방식 | 발급자 | API의 판별 기준 | | - | - | - | | 일반 정발행, 대리 정발행 | 공급자 | `supplier.identificationNumber` | | 위수탁 정발행 | 수탁자 | `trustee.identificationNumber` | | 역발행 | 공급자 | `supplier.identificationNumber` | ## 서비스 화면의 고객 볼타 웹 서비스의 \[고객 관리]에서 고객은 세금계산서를 받는 공급받는자를 뜻합니다. | 맥락 | 당사자 | | - | - | | 볼타 웹 서비스 고객 관리 | 공급받는자 | | 세금계산서 요청의 `supplier` | 공급자 | | 세금계산서 요청의 `trustee` | 수탁자 | | `/v1/issuers`에 등록한 사업자 | 세금계산서 발행 주체 | ## 현금영수증 용어 | 용어 | 뜻 | API 필드 | | - | - | - | | **발급자(issuer)** | 현금영수증을 발행하는 사업자 | `issuer` | | **수취인(recipient)** | 현금영수증을 받는 대상 | `recipient` | | **자진발급(SELF)** | 수취인 정보 없이 발행하는 방식 | `recipient.type = SELF` | | **발급수단** | 휴대폰번호 또는 사업자등록번호. `SELF`이면 생략 | `recipient.value` | | **발행 식별 키** | 발행 요청과 취소 대상을 식별하는 키 | `issuanceKey` | | **승인번호** | 현금영수증 발행 성공 시 부여되는 번호 | `cashReceiptApprovalNumber` | ## 사업자등록 상태 조회 용어 | 용어 | 뜻 | API 필드 | | - | - | - | | **계속사업자** | 영업 중인 사업자 | `registration.status = ACTIVE` | | **휴업자** | 휴업 신고한 사업자 | `registration.status = SUSPENDED` | | **폐업자** | 폐업한 사업자 | `registration.status = CLOSED` | | **미등록** | 사업자등록 기록이 없는 번호 | `registration.status = NOT_REGISTERED` | | **기타 상태** | 위 네 가지에 속하지 않는 기타 등록 상태 | `registration.status = UNKNOWN` | | **폐업일** | 폐업자일 때만 제공하는 날짜 | `registration.closedOn` | | **과세유형** | 일반, 간이, 과세특례, 면세, 비영리, 고유번호 단체 | `taxation.type` | | **과세유형 전환일** | 과세유형이 바뀐 날 | `taxation.changedOn` | | **미확인 항목** | 일괄 조회에서 이번 요청에 상태를 확인하지 못한 번호 | `results[].status = null` | 휴업자와 폐업자도 국세청이 마지막 과세유형을 주면 과세유형이 담깁니다. 국세청이 과세유형을 주지 않으면 `taxation`이 `null`입니다. 조회 API의 과세유형은 사업자의 과세유형입니다. 세금계산서 발행 요청의 `taxType`은 과세, 영세율, 면세 같은 거래의 과세 구분이라 뜻이 다릅니다. ## 매출/매입 내역 조회 용어 | 용어 | 뜻 | API 필드 | | - | - | - | | **매출** | 내 사업자가 공급자인 세금계산서와 계산서 | `GET /v1/revenues`의 `items[]` | | **매입** | 내 사업자가 공급받는자인 세금계산서와 계산서 | `GET /v1/expenses`의 `items[]` | | **증빙 종류** | 매출이나 매입의 근거 문서 종류. 모르는 값의 항목은 건너뜁니다 | `type` | | **세금계산서 원문** | 국세청에 등록된 세금계산서 내용 | `taxInvoice` | | **상세 채우기** | 홈택스에서 수집한 문서에 발급 시각, 주소, 담당자, 품목을 채우는 작업. 채우는 중인 문서는 `id`만 담아 옵니다 | `taxInvoice.items` | | **보이는 매출/매입** | 대시보드에 보이는 매출이나 매입. 같은 `id`를 덮어씁니다 | `status = ACTIVE` | | **안 보이게 된 매출/매입** | 보관하거나 비활성이 되어 대시보드에서 사라진 매출이나 매입. 같은 `id`를 지웁니다 | `status = REMOVED` | | **상세를 채우는 중인 매출/매입** | 홈택스에서 수집했고 상세를 채우는 중인 매출이나 매입. 상세가 채워지면 같은 `id`가 `ACTIVE`로 다시 옵니다 | `status = PENDING` | 매출/매입은 작성일자 순서가 아니라 볼타에서 바뀐 순서로 옵니다. cursor와 동기화 규칙은 [매출/매입 내역 조회](/docs/api-introduction/revenue-expense)를 참고하세요. ## 입출금 내역 조회 용어 | 용어 | 뜻 | API 필드 | | - | - | - | | **입출금 계좌** | 볼타 대시보드에서 연결한 은행 계좌 | `GET /v1/bankAccounts`의 `items[]` | | **동기화** | 볼타가 은행에서 입출금 내역을 가져오는 작업 | `syncStatus`, `POST /v1/bankAccounts:sync` | | **cursor** | 입출금 내역을 어디까지 받았는지 가리키는 값. 받은 그대로 다음 호출에 넘기며, 받을 때의 조회 조건과 API 키에 묶입니다 | `nextCursor`, `cursor` | | **은행코드** | 금융결제원이 정한 3자리 표준 은행코드 | `bankCode` | | **보이는 거래** | 대시보드에 보이는 거래. 같은 `id`를 덮어씁니다 | `status = ACTIVE` | | **안 보이게 된 거래** | 계좌 연동 해제, 보관 등으로 대시보드에서 사라진 거래. 같은 `id`를 지웁니다 | `status = REMOVED` | | **적요** | 은행이 거래에 붙인 설명 | `description` | 입출금 내역은 거래 시각 순서가 아니라 볼타에서 거래가 바뀐 순서로 옵니다. [입출금 내역 조회](/docs/api-introduction/bank-account-transactions)를 참고하세요. ## 예금주 조회 용어 | 용어 | 뜻 | API 필드 | | - | - | - | | **금액 지정형 가상계좌** | 입금 금액이 정해져 있어 금액을 함께 보내야 예금주를 확인하는 가상계좌 | `amount`, `AMOUNT_REQUIRED` | | **항목 오류** | 일괄 조회에서 계좌 하나가 실패한 원인 | `results[].error` | [예금주 조회](/docs/api-introduction/bank-account-holder)를 참고하세요. ## 사업자등록증 인식과 진위확인 용어 | 용어 | 뜻 | API 필드 | | - | - | - | | **진위확인 결과** | 사업자등록증에서 읽은 사업자등록번호, 첫 번째 대표자명, 개업일이 국세청 등록 정보와 일치하는지 | `validation` | | **종사업장번호** | 한 사업자등록번호 아래 사업장을 구분하는 4자리 번호 | `certificate.taxRegistrationId` | [사업자등록증 인식과 진위확인](/docs/api-introduction/business-registration-certificate)을 참고하세요. ## 사업자 프로필 조회 용어 | 용어 | 뜻 | API 필드 | | - | - | - | | **사업자 프로필** | 볼타가 공공 데이터를 모아 정리한 사업자 정보 | `GET /v1/businessProfiles/{businessRegistrationNumber}` | | **사업자 구분** | 개인사업자, 법인사업자, 개인도 법인도 아닌 사업자의 구분 | `businessKind` | | **이전 상호** | 지금 상호로 바꾸기 전에 쓰던 상호 | `formerOrganizationNames` | | **통신판매업 신고번호** | 통신판매업을 신고하고 받은 번호 | `commercialSalesNumber` | | **표준산업분류** | 한국표준산업분류의 세세분류와 대분류 | `industry.standardIndustry`, `industry.category` | | **확인 시각** | 볼타가 사업자 등록 상태를 국세청에 마지막으로 확인한 시각 | `registration.checkedAt` | 사업자 프로필의 등록 상태와 과세유형은 볼타가 저장해 둔 값입니다. 호출 시점의 상태는 사업자등록 상태 조회로 확인하세요. [사업자 프로필 조회](/docs/api-introduction/business-profile)를 참고하세요. ## 관련 문서 * [위수탁 발행](/docs/api-introduction/usecase-brokered) * [대리 정발행](/docs/api-introduction/usecase-delegated) * [현금영수증 발행](/docs/api-introduction/cash-receipt-guide) * [공급받는자 식별번호](/docs/api-introduction/recipient-identification-number) * [사업자등록 상태 조회](/docs/api-introduction/business-registration-status) * [사업자등록증 인식과 진위확인](/docs/api-introduction/business-registration-certificate) * [사업자 프로필 조회](/docs/api-introduction/business-profile) * [세금계산서 발행 마감일 조회](/docs/api-introduction/tax-invoice-issue-due-date) * [매출/매입 내역 조회](/docs/api-introduction/revenue-expense) * [입출금 내역 조회](/docs/api-introduction/bank-account-transactions) * [예금주 조회](/docs/api-introduction/bank-account-holder) # 발행 금액 계산 Source: https://docs.bolta.io/docs/api-introduction/issuance-guide 전자(세금)계산서 발행 시 품목, 공급가액, 세액의 계산 방식을 안내합니다. ## 금액 계산 원리 전자(세금)계산서의 발행 금액은 전체 품목의 금액 합입니다. 발행 요청에는 과세유형(`taxType`)을 함께 보냅니다. 과세유형에 맞춰 품목 세액(`items[].tax`)을 입력하세요. | 과세유형(`taxType`) | 의미 | 품목 세액(`items[].tax`) | | - | - | - | | `TAXABLE` | 과세 | `null`이 아닌 값을 전달 | | `ZERO_RATE` | 영세율 | 모든 품목에 `0`을 전달 | | `TAX_FREE` | 면세(전자계산서) | 모든 품목에 `null`을 전달하거나 필드를 생략 | > [!NOTE] > > 한 요청 안에서 실제 세액과 `null` 또는 필드 생략을 섞거나, 영세율인데 `0`이 아닌 세액을 보내면 API가 요청을 거부합니다. ## 과세유형별 입력 예시 ```json theme={"dark"} { "taxType": "TAXABLE", "items": [{ "supplyCost": 10000, "tax": 1000 }] } ``` ```json theme={"dark"} { "taxType": "ZERO_RATE", "items": [{ "supplyCost": 10000, "tax": 0 }] } ``` ```json theme={"dark"} { "taxType": "TAX_FREE", "items": [{ "supplyCost": 10000, "tax": null }] } ``` ## 계산 예시 아래는 총 220,000원을 발행하는 예시입니다. **세금계산서 총액** | 발행 금액 | 공급가액 | 세액 | | - | - | - | | 220,000 | 200,000 | 20,000 | **품목별 내역** | 품목명 | 단가(unitPrice) | 수량(quantity) | 공급가액(supplyCost) | 세액(tax) | 금액(supplyCost + tax) | | - | - | - | - | - | - | | 첫 번째 품목 | 5,000 | 10 | 50,000 | 5,000 | 55,000 | | 두 번째 품목 | 3,000 | 50 | 150,000 | 15,000 | 165,000 | ## 입력값 제한 아래 제한을 벗어나면 API가 요청을 거부합니다. | 항목 | 제한 | | - | - | | 공급자/공급받는자 상호명(`organizationName`) | 최대 70자 | | 대표자명(`representativeName`), 담당자 이름(`manager.name`) | 최대 30자 | | 업태(`businessType`), 종목(`businessItem`) | 최대 100자 | | 담당자 이메일(`manager.email`) | 최대 40자 | | 담당자 휴대전화번호(`manager.telephone`) | 최대 20자, `010-1234-5678` 형식 | | 주소(`address`), 세금계산서 비고(`description`) | 최대 150자 | | 품목명(`items[].name`), 품목 비고(`items[].description`) | 최대 100자 | | 품목 규격(`items[].specification`) | 최대 60자 | | 품목 수(`items`) | 1개 이상 16개 이하 | 공급받는자 담당자의 휴대전화번호를 입력하면 볼타가 세금계산서 수신 안내 알림톡을 보냅니다. ### 지원하지 않는 문자 국세청 전자세금계산서 표준은 일부 문자를 허용하지 않습니다. 볼타는 이런 문자를 두 가지로 나눠 처리합니다. **자동으로 지우는 문자** 눈에 보이지 않는 문자는 볼타가 요청을 받은 즉시 지우고 발행을 이어갑니다. 제어 문자, 폭 없는 공백(U+200B)이나 BOM(U+FEFF) 같은 서식 문자, 짝이 맞지 않는 서로게이트, U+FFFE나 U+FFFF로 끝나는 비문자가 여기에 해당합니다. 탭, 줄바꿈, 캐리지리턴은 제어 문자지만 그대로 둡니다. 위 표의 글자 수 한도는 문자를 지운 뒤를 기준으로 셉니다. **요청을 거부하는 문자** U+FFFF를 넘는 보충 문자가 있으면 API가 요청을 거부합니다. 이모지와 일부 확장 한자가 여기에 해당합니다. 이때 API는 `400`과 함께 `세금계산서 입력에 지원하지 않는 문자가 포함되어 있습니다.`로 시작하는 메시지를 반환하고, 이어지는 대괄호에 문제가 된 항목 경로와 코드포인트를 담습니다. 한 번에 한 항목만 알려주니, 그 항목에서 해당 문자를 빼고 다시 요청하세요. 두 규칙은 정발행, 역발행 요청, [공급가액 변동 수정발행](/docs/api-introduction/amendment-guide#공급가액-변동)에 함께 적용됩니다. # API 개요 Source: https://docs.bolta.io/docs/api-introduction/overview 볼타 API가 제공하는 기능과 시작 방법을 안내합니다. # 볼타 API 소개 볼타는 전자세금계산서와 현금영수증 발행, 서류 발급, 사업자등록증 인식과 진위확인, 사업자등록 상태와 사업자 프로필, 예금주, 매출/매입 내역, 입출금 내역 조회 API를 RESTful API로 제공합니다. `test_`로 시작하는 테스트 키를 쓰면 국세청 연동 없이 연동을 테스트할 수 있습니다. ## 시작하기 > **[API Reference](/api-reference)** > > 전체 API 엔드포인트 레퍼런스를 확인하세요. > **[API 키 발급](/docs/developer-center/api-key)** > > 테스트 키와 라이브 키를 생성하고 연동을 시작하세요. # 요금 안내 Source: https://docs.bolta.io/docs/api-introduction/pricing 볼타 API 요금 안내입니다. # 요금 안내 API 요금은 서비스 구독 요금과 별개입니다. 상세 요금은 [볼타 가격 페이지](https://bolta.io/pricing)를 참고하세요. ## 포인트 충전 볼타 API는 사전 충전 포인트 차감 방식입니다. 유료 API는 아래 API별 조건에 따라 포인트를 차감하고, 잔액이 부족하면 호출이 실패합니다. 1포인트는 1원입니다. 테스트 키(`test_`)는 포인트를 차감하지 않습니다. 포인트는 [개발자센터](https://developers.bolta.io)에서 충전하세요. ## 조회 API 요금 [사업자등록 상태 조회](/docs/api-introduction/business-registration-status)는 상태를 확인한 사업자등록번호마다 10포인트를 차감합니다. 일괄 조회에서 확인하지 못한 번호(`status`가 `null`)와 오류 응답은 차감하지 않습니다. 구독 플랜 제한은 없습니다. [세금계산서 발행 마감일 조회](/docs/api-introduction/tax-invoice-issue-due-date)는 테스트 키와 라이브 키 모두 포인트를 차감하지 않습니다. [세금계산서 PDF 조회](/docs/api-introduction/tax-invoice-pdf)는 포인트를 차감하지 않습니다. [매출/매입 내역 조회](/docs/api-introduction/revenue-expense)는 포인트를 차감하지 않습니다. 라이브 키로 호출하려면 스탠다드 플랜 이상을 구독해야 합니다. [입출금 내역 조회](/docs/api-introduction/bank-account-transactions)는 포인트를 차감하지 않습니다. 라이브 키로 호출하려면 스탠다드 플랜 이상을 구독해야 합니다. [예금주 조회](/docs/api-introduction/bank-account-holder)는 예금주를 돌려준 계좌마다 50포인트를 차감합니다. 예금주를 찾지 못하면 차감하지 않습니다. 구독 플랜 제한은 없습니다. [사업자등록증 인식과 진위확인](/docs/api-introduction/business-registration-certificate)은 진위확인 결과가 `MATCHED`나 `NOT_MATCHED`인 문서마다 100포인트를 차감합니다. 국세청 장애로 진위확인을 하지 못한 결과(`UNAVAILABLE`)와 오류 응답은 차감하지 않습니다. 구독 플랜 제한은 없습니다. [사업자 프로필 조회](/docs/api-introduction/business-profile)는 검색에서 돌려준 결과 한 건마다 9포인트, 상세 조회에 성공할 때마다 90포인트를 차감합니다. 결과가 없는 검색, 프로필이 없는 번호(`404`), 오류 응답은 차감하지 않습니다. 구독 플랜 제한은 없습니다. ## 서류 발급 요금 [서류 발급](/docs/api-introduction/document-issuance)은 서류 한 건마다 아래 포인트를 차감합니다. 발급에 실패하면 차감하지 않습니다. | 서류 | 한 건 요금 | | - | - | | 홈택스 서류 5종 | 500포인트 | | 법인등기사항전부증명서(열람용) | 1,000포인트 | | 법인등기사항전부증명서(제출용) | 1,500포인트 | ## 현금영수증 발행 요금 [현금영수증 발행](/docs/api-introduction/cash-receipt-guide)은 포인트를 차감하지 않습니다. 대량 발행이 필요하면 볼타 담당자와 협의하세요. # 빠른 시작 Source: https://docs.bolta.io/docs/api-introduction/quickstart 테스트 키로 첫 전자세금계산서를 발행합니다. ## 사전 준비 **1. 회원가입 및 워크스페이스 생성** [볼타 회원가입](/docs/onboarding/getting-started-google) 후 워크스페이스를 생성합니다. **2. 테스트 API 키 발급** [개발자센터 > API 키](/docs/developer-center/api-key) 메뉴에서 테스트 키를 생성합니다. 테스트 키는 `test_`로 시작하며, 모든 발행 요청을 가상으로 처리합니다. **3. 발급자 등록** [발급자 등록 API](/api-reference/issuer/register-issuer)로 인증서 소유자를 등록합니다. API가 반환한 `issuerId`는 인증서 관리 API에서 사용합니다. **4. 공동인증서 등록** `issuerId`로 [인증서 등록 URL 조회 API](/api-reference/certificate/retrieve-issuer-certificate-registration-url)를 호출하고, 발급된 URL에서 공동인증서를 등록합니다. > [!NOTE] > > 테스트 환경에서는 실제 공동인증서 대신 테스트 인증서로 연동을 테스트하세요. **5. 포인트 충전 (라이브 키 사용 시)** 라이브 키로 API를 호출하려면 [개발자센터](https://developers.bolta.io)에서 포인트를 먼저 충전하세요. 잔액이 부족하면 API 호출이 실패합니다. > [!NOTE] > > 테스트 키(`test_`)는 포인트를 차감하지 않습니다. 상세 요금은 [요금 안내](/docs/api-introduction/pricing)를 참고하세요. ## 첫 번째 API 호출 테스트 API 키를 준비하고 발급자의 공동인증서를 등록했다면, 아래 curl 명령으로 세금계산서를 발행해보세요. ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/taxInvoices/issue \ -H "Authorization: Basic $(echo -n 'test_YOUR_API_KEY:' | base64)" \ -H "Bolta-Client-Reference-Id: quickstart-unique-reference-id" \ -H "Content-Type: application/json" \ -d '{ "date": "YYYY-MM-DD", "purpose": "RECEIPT", "taxType": "TAXABLE", "supplier": { "identificationNumber": "1234567890", "organizationName": "공급자 상호", "representativeName": "홍길동", "manager": { "email": "supplier@example.com" } }, "supplied": { "identificationNumber": "0987654321", "organizationName": "공급받는자 상호", "representativeName": "김철수", "managers": [ { "email": "recipient@example.com", "telephone": "010-1234-5678" } ] }, "items": [ { "date": "YYYY-MM-DD", "name": "테스트 품목", "unitPrice": 10000, "quantity": 1, "supplyCost": 10000, "tax": 1000 } ] }' ``` > [!NOTE] > > 공급받는자 담당자의 휴대전화번호를 함께 보내면 볼타가 세금계산서 수신 안내 알림톡을 보냅니다. > [!WARNING] > > 요청 전에 `test_YOUR_API_KEY`, `YYYY-MM-DD`로 표시된 두 날짜, 두 `identificationNumber`를 실제 값으로 바꾸세요. 예시의 `identificationNumber`는 체크섬을 통과하지 않습니다. `quickstart-unique-reference-id`는 이전 세금계산서 요청에 사용하지 않은 값으로 바꾸세요. 두 `date` 필드는 발행 마감일 이내여야 하며, 마감일은 [세금계산서 발행 마감일 조회 API](/docs/api-introduction/tax-invoice-issue-due-date)로 확인하세요. ## 응답 확인 발행 요청이 성공하면 API가 `issuanceKey`를 반환합니다. ```json theme={"dark"} { "issuanceKey": "8D529FAD3EBAE050B79CE943CCC7CEDE" } ``` 응답을 받지 못했다면 같은 요청을 다시 보내지 마세요. 예시에 입력한 `quickstart-unique-reference-id`로 [관리번호 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-by-client-reference)를 호출해 접수 결과를 확인하세요. 이후 볼타가 [웹훅](/docs/api-introduction/webhook-events)으로 발행 완료를 알립니다. 결과는 [세금계산서 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice)로도 확인할 수 있습니다. ## 다음 단계 > **[인증 가이드](/docs/api-introduction/authentication)** > > API 키 인증 방식과 요청 헤더를 자세히 알아보세요. > **[발행 금액 계산](/docs/api-introduction/issuance-guide)** > > 품목별 금액 계산 방식과 예시를 확인하세요. > **[사용 사례](/docs/api-introduction/usecase-b2b)** > > B2B 거래, 정기 결제, 역발행 시나리오를 확인하세요. > **[API Reference](/api-reference)** > > 전체 API 엔드포인트 레퍼런스를 확인하세요. # 공급받는자 식별번호 Source: https://docs.bolta.io/docs/api-introduction/recipient-identification-number 전자(세금)계산서 발행 시 공급받는자 식별번호 입력 기준을 안내합니다. 정발행 API의 `supplied.identificationNumber`에는 공급받는자 유형에 맞춰 아래 식별번호를 입력하세요. 하이픈(-) 없이 숫자만 넣습니다. | 구분 | 자릿수 | 설명 | | - | - | - | | 사업자등록번호 | 10자리 | 사업자 대상 발행 시 사용 | | 주민등록번호 | 13자리 | 개인 대상 발행 시 사용 | | 외국인등록번호 | 13자리 | 외국인 대상 정발행 시 사용 (아래 상세 가이드 참고) | ## 외국인등록번호 공급받는자 외국인등록번호는 정발행 API에서만 받습니다. 역발행 API의 공급받는자 식별번호는 사업자등록번호만 허용합니다. 요청 본문에서는 실제 외국인등록번호를 `supplied.identificationNumber`에 입력합니다. 볼타는 발행할 때 식별번호를 국세청 외국인 공급받는자 규격으로 바꾸고, 입력한 외국인등록번호를 세금계산서 비고에 넣습니다. 외국인등록번호 공급받는자 요청에서는 세금계산서 비고(`description`)를 `null`로 보내거나 필드를 생략하세요. 값을 보내면 API가 400 검증 오류를 반환합니다. 공급받는자 식별번호가 사업자등록번호가 아닌 경우 `supplied.taxRegistrationId`도 `null`로 보내거나 필드를 생략하세요. 여권번호(예: `M12345678`)는 공급받는자 식별번호로 쓸 수 없습니다. # 매출/매입 내역 조회 Source: https://docs.bolta.io/docs/api-introduction/revenue-expense 볼타에 쌓인 매출과 매입 세금계산서를 조회하고 수집을 요청하는 API의 이용 조건, 주요 제한, cursor 사용법을 안내합니다. ## 무엇을 조회하나요 볼타에 쌓인 내 사업자의 매출과 매입을 대시보드의 매출/매입 목록과 같은 단위로 조회합니다. 조회 대상은 API 키가 속한 사업자 한 곳입니다. 필요하면 수집을 앞당겨 달라고 요청할 수 있습니다. | 경로 | 용도 | | - | - | | `GET /v1/revenues` | 매출 변경 내역 (cursor 기반) | | `GET /v1/expenses` | 매입 변경 내역 (cursor 기반) | | `POST /v1/revenues:sync` | 매출 동기화 요청 | | `POST /v1/expenses:sync` | 매입 동기화 요청 | 응답에는 세금계산서와 계산서가 실립니다(`type`이 `HOMETAX_TAX_INVOICE`). 볼타에서 발행한 문서와 홈택스에서 수집한 문서가 모두 들어갑니다. 현금영수증은 볼타에서 발행한 것도 싣지 않습니다. ## 이용 조건 포인트를 차감하지 않습니다. 대신 스탠다드 플랜 이상을 구독해야 합니다. 무료체험 중이어도 체험 중인 플랜이 스탠다드 이상이면 이용할 수 있습니다. 플랜이 모자라면 네 경로 모두 `402`와 `PLAN_UPGRADE_REQUIRED`를 반환합니다. 볼타 대시보드의 결제 메뉴에서 플랜을 업그레이드한 뒤 다시 호출하세요. > [!NOTE] > > 홈택스 매출/매입 연동은 볼타 대시보드에서 먼저 하세요. 연동 방법은 [홈택스에 등록된 매출세금계산서 가져오기](/docs/invoice/sales/management/fetch-external)와 [홈택스에 등록된 매입세금계산서 가져오기](/docs/invoice/purchase/fetch-external)를 참고하세요. 연동하지 않고 볼타에서 발행만 한 사업자도 발행한 세금계산서는 매출로 조회할 수 있습니다. 연동을 해제해도 이미 쌓인 매출/매입은 계속 조회됩니다. 네 경로 모두 발급자 등록, 공동인증서, 요청자 관리번호(`Bolta-Client-Reference-Id`)가 필요 없습니다. `Authorization` 헤더에 `Basic {apiKey}`만 넣으면 됩니다. 인증은 [인증 가이드](/docs/api-introduction/authentication)를 참고하세요. ## 주요 제한 | 항목 | 제한 | | - | - | | 동기화 요청 | 사업자마다, 매출과 매입 각각 30분에 1번, 24시간에 12번 | | 응답 반영 | 볼타에서 바뀐 뒤 약 5분 | | 홈택스 수집 문서의 원문 반영 | 보통 수집 뒤 1\~2시간 | | 한 번에 받는 건수 (`limit`) | 최대 200건, 기본 100건 | ## 매출/매입 목록 두 경로의 파라미터와 응답 모양은 같습니다. 매출인지 매입인지는 경로가 정합니다. ```bash theme={"dark"} curl "https://xapi.bolta.io/v1/revenues?limit=100" \ -H "Authorization: Basic {apiKey}" ``` | 파라미터 | 필수 | 설명 | | - | - | - | | `from` | X | 거래일 시작. `YYYY-MM-DD` (KST, 포함). 세금계산서는 작성일자 | | `to` | X | 거래일 끝. `YYYY-MM-DD` (KST, 포함) | | `type` | X | `HOMETAX_TAX_INVOICE` | | `cursor` | X | 이전 응답의 `nextCursor` | | `limit` | X | 1부터 200까지. 기본 100 | 기간을 주지 않으면 쌓인 전체 내역을 조회합니다. 아래는 테스트 키로 cursor 없이 호출한 매출 응답에서 `102`와 `103`을 뺀 예시입니다. ```json theme={"dark"} { "items": [ { "status": "ACTIVE", "id": "101", "type": "HOMETAX_TAX_INVOICE", "taxInvoice": { "ntsTransactionId": "20260901-10000000-00000101", "invoiceType": "TAX_INVOICE", "purpose": "CLAIM", "writtenDate": "2026-09-01", "issuedAt": "2026-09-01T05:12:00Z", "supplier": { "identificationNumberType": "BUSINESS", "identificationNumber": "1234567890", "taxRegistrationId": null, "organizationName": "주식회사 볼타테스트", "representativeName": "정대표", "address": "서울특별시 테스트구 테스트로 1", "businessType": "서비스", "businessItem": "소프트웨어 개발", "manager": { "name": "홍길동", "email": "tax@example.com", "telephone": "02-0000-0000" } }, "supplied": { "identificationNumberType": "BUSINESS", "identificationNumber": "1111111111", "taxRegistrationId": null, "organizationName": "주식회사 테스트고객", "representativeName": "테스트대표", "address": "경기도 테스트시 샘플로 2", "businessType": "도매", "businessItem": "도소매", "manager": { "name": "김담당", "email": "buyer@example.com", "telephone": null } }, "trustee": null, "totalSupplyCost": 1000000, "totalTax": 100000, "totalAmount": 1100000, "paymentMeans": { "cash": null, "check": null, "bankBill": null, "accountReceivable": 1100000 }, "description": null, "amendReason": null, "importDeclaration": null, "items": [ { "date": "2026-09-01", "name": "컨설팅", "specification": null, "quantity": 1, "unitPrice": 600000, "supplyCost": 600000, "tax": 60000, "description": null }, { "date": "2026-09-01", "name": "교육", "specification": null, "quantity": 2, "unitPrice": 200000, "supplyCost": 400000, "tax": 40000, "description": null } ] } }, { "status": "REMOVED", "id": "104" }, { "status": "PENDING", "id": "105" } ], "nextCursor": "djI6MTc4ODY1NjQwMDAwMDAwMDoxMDU6MXVpMmNn", "hasMore": false } ``` 항목은 `status`에 따라 모양이 다릅니다. | `status` | 뜻 | 담는 필드 | | - | - | - | | `ACTIVE` | 볼타 대시보드에 보이는 매출/매입 | `status`, `id`, `type`, `type`에 맞는 하위 객체 | | `REMOVED` | 보관하거나 비활성이 되어 대시보드에서 안 보이게 된 매출/매입 | `status`, `id` | | `PENDING` | 홈택스에서 수집했고 상세를 채우는 중인 매출/매입 | `status`, `id` | | 필드 | 형식 | 설명 | | - | - | - | | `items[].status` | string | `ACTIVE`, `REMOVED`, `PENDING` | | `items[].id` | string | 매출 또는 매입 식별자. 경로 안에서 유일 | | `items[].type` | string | 증빙 종류. `HOMETAX_TAX_INVOICE` | | `items[].taxInvoice` | object | `type`이 `HOMETAX_TAX_INVOICE`일 때의 세금계산서 원문 | | `nextCursor` | string | 다음 호출에 넘길 cursor | | `hasMore` | boolean | 지금 바로 이어 받을 내역이 더 있는지 여부 | `id`는 세금계산서가 아니라 매출 또는 매입 한 건의 식별자입니다. `HOMETAX_TAX_INVOICE`는 국세청에 등록된 세금계산서와 계산서를 뜻합니다. 볼타에서 발행한 문서도 같은 값을 씁니다. ### 세금계산서 원문 `taxInvoice`는 매출과 매입이 같은 모양입니다. | 필드 | 형식 | 설명 | | - | - | - | | `ntsTransactionId` | string | 국세청 승인번호 | | `invoiceType` | string | 국세청 문서 구분. [문서 구분](#문서-구분) 참고 | | `purpose` | string 또는 null | `RECEIPT` 영수, `CLAIM` 청구 | | `writtenDate` | string | 작성일자 `YYYY-MM-DD` (KST) | | `issuedAt` | string | 발급 시각 (UTC). 상세를 채울 수 없는 문서는 발급일 00:00(KST) | | `supplier` | object | 공급자. [당사자](#당사자) 참고 | | `supplied` | object | 공급받는자 | | `trustee` | object 또는 null | 수탁자. 위수탁 문서일 때만 | | `totalSupplyCost` | integer | 공급가액 합계 | | `totalTax` | integer 또는 null | 세액 합계. 계산서처럼 세액이 없는 문서는 null | | `totalAmount` | integer | 합계 금액 | | `paymentMeans.cash` | integer 또는 null | 현금 | | `paymentMeans.check` | integer 또는 null | 수표 | | `paymentMeans.bankBill` | integer 또는 null | 어음 | | `paymentMeans.accountReceivable` | integer 또는 null | 외상미수금 | | `description` | string 또는 null | 비고 | | `amendReason` | string 또는 null | 국세청 수정 사유. [수정 사유](#수정-사유) 참고. 수정세금계산서가 아니면 null | | `importDeclaration` | object 또는 null | 수입신고 정보. 수입 세금계산서일 때만 | | `importDeclaration.declarationNumber` | string 또는 null | 수입신고번호 | | `importDeclaration.periodStartDate` | string 또는 null | 과세기간 시작일 (KST) | | `importDeclaration.periodEndDate` | string 또는 null | 과세기간 종료일 (KST) | | `importDeclaration.itemCount` | integer 또는 null | 수입 건수 | | `items` | array | 품목. 상세를 채울 수 없는 문서는 빈 배열 | | `items[].date` | string 또는 null | 공급일자 (KST) | | `items[].name` | string 또는 null | 품목명 | | `items[].specification` | string 또는 null | 규격 | | `items[].quantity` | number 또는 null | 수량 | | `items[].unitPrice` | number 또는 null | 단가 | | `items[].supplyCost` | integer | 공급가액 | | `items[].tax` | integer 또는 null | 세액 | | `items[].description` | string 또는 null | 비고 | 금액은 원 단위 정수이고, 수정세금계산서는 음수일 수 있습니다. 수량과 단가는 정수면 소수점 없이, 소수면 소수 자리까지 옵니다. ### 당사자 `supplier`, `supplied`, `trustee`는 같은 모양입니다. | 필드 | 형식 | 설명 | | - | - | - | | `identificationNumberType` | string | `BUSINESS` 사업자, `RESIDENT` 개인, `FOREIGN` 외국인 | | `identificationNumber` | string | 하이픈 없는 식별번호 | | `taxRegistrationId` | string 또는 null | 종사업장번호 | | `organizationName` | string 또는 null | 상호 | | `representativeName` | string 또는 null | 대표자 | | `address` | string 또는 null | 주소 | | `businessType` | string 또는 null | 업태 | | `businessItem` | string 또는 null | 종목 | | `manager` | object 또는 null | 담당자. 이름, 이메일, 전화번호가 모두 없으면 null | | `manager.name` | string 또는 null | 이름 | | `manager.email` | string 또는 null | 이메일 | | `manager.telephone` | string 또는 null | 전화번호 | | `identificationNumberType` | `identificationNumber` | | - | - | | `BUSINESS` | 사업자등록번호 10자리 | | `RESIDENT` | 주민등록번호 13자리 | | `FOREIGN` | 외국인 식별번호 | 공급자와 수탁자는 항상 `BUSINESS`입니다. 공급받는자만 `RESIDENT`나 `FOREIGN`일 수 있고, 이때 `taxRegistrationId`, `businessType`, `businessItem`은 null입니다. 공급받는자에게 담당자가 둘이면 첫 번째 담당자를 `manager`에 싣습니다. > [!WARNING] > > `RESIDENT`의 `identificationNumber`는 주민등록번호 원문입니다. 받은 값은 암호화해 저장하고 로그에 남기지 마세요. ### 문서 구분 | `invoiceType` | 문서 | | - | - | | `TAX_INVOICE` | 전자세금계산서 | | `ZERO_RATED_TAX_INVOICE` | 영세율 전자세금계산서 | | `INVOICE` | 전자계산서 (면세) | | `IMPORT_TAX_INVOICE` | 수입 전자세금계산서 (납부유예 포함) | 위수탁 문서는 따로 구분하지 않습니다. `trustee`가 채워져 있으면 위수탁 문서입니다. ### 수정 사유 | `amendReason` | 사유 | | - | - | | `MISSPELLED` | 기재사항 착오 정정 | | `CHANGE_SUPPLY_COST` | 공급가액 변동 | | `RETURNED` | 환입 | | `TERMINATION` | 계약의 해제 | | `LOCAL_LETTER_OF_CREDIT` | 내국신용장 사후 개설 | | `DOUBLE_ISSUANCE` | 착오에 의한 이중발급 | 기재사항 착오 정정과 내국신용장 사후 개설은 취소분과 수정분 두 장이 한 쌍으로 발급됩니다. API는 두 장을 같은 사유로 보냅니다. ### 응답에 싣는 문서 API는 상세까지 채운 문서만 원문을 싣습니다. 홈택스에서 수집한 문서는 승인번호, 당사자, 금액을 먼저 받고 발급 시각, 주소, 업태, 담당자, 품목을 나중에 채웁니다. 볼타에서 발행한 세금계산서는 처음부터 `ACTIVE`로 나옵니다. 홈택스에서 수집한 문서는 수집 직후 `id`만 담은 `PENDING`으로 나오고, 상세를 채우면 같은 `id`가 원문과 함께 `ACTIVE`로 다시 나옵니다. 볼타는 작성일자 최신순으로 상세를 채웁니다. 과거 문서가 많으면 오래된 작성일자 문서는 `PENDING`에 오래 머물고 `ACTIVE`가 뒤늦게 이어서 나옵니다. 상세 조회가 끝내 실패한 문서도 `PENDING`에 머물지 않습니다. API는 목록 조회 값만으로 `ACTIVE`를 싣고 `items`를 비웁니다. 주소, 업태, 종목, 담당자도 null일 수 있습니다. 나중에 상세가 채워지면 같은 `id`로 다시 옵니다. `ntsTransactionId`, `issuedAt`, `invoiceType`은 항상 채워져 있습니다. 입금이나 지급 완료 여부, 메모, 라벨, 담당자 배정처럼 볼타 안에서만 쓰는 관리 정보는 싣지 않습니다. ## 순서와 cursor API는 볼타에서 매출/매입이 바뀐 순서로 돌려줍니다. 작성일자나 수집 순서가 아닙니다. 과거 작성일자 문서, 상세 반영, 보관과 보관 해제가 뒤늦게 일어나도 놓치지 않으려면 이 순서대로 받으세요. 화면에 작성일자순으로 보여 주려면 받은 뒤 `writtenDate`로 정렬하세요. 같은 `id`가 여러 번 올 수 있습니다. 받은 순서대로 `id` 기준으로 반영하세요. * `ACTIVE`: 같은 `id`가 있으면 덮어쓰고, 없으면 추가하세요. * `REMOVED`: 같은 `id`가 있으면 지우고, 없으면 무시하세요. * `PENDING`: 그 `id`를 상세 수집 중으로 기록하세요. 상세가 채워지면 같은 `id`가 `ACTIVE`로 다시 옵니다. 매입은 볼타가 지급 완료 여부를 다시 판정할 때도 순서가 뒤로 옮겨집니다. 그래서 내용이 같은 매입이 한 번 더 올 수 있습니다. 덮어쓰면 됩니다. ### 수집 절차 1. cursor 없이 호출하고, `hasMore`가 `false`가 될 때까지 `nextCursor`로 이어 호출하세요. 2. 마지막 `nextCursor`를 저장하세요. `hasMore`가 `false`여도 `nextCursor`는 항상 채워집니다. 매출과 매입, 조건마다 cursor를 따로 저장하세요. 3. 다음 수집 때 저장한 cursor로 호출하세요. 그 사이 바뀐 매출/매입만 받습니다. > [!WARNING] > > `items`가 비어 있어도 `hasMore`가 `true`일 수 있습니다. `items`가 아니라 `hasMore`를 보고 이어 호출하세요. cursor는 받은 값 그대로 보내세요. cursor를 받을 때와 경로, 조건, 키 모드가 다르면 API가 `400`과 `INVALID_CURSOR`를 반환합니다. `type`을 넣고 받은 cursor와 빼고 받은 cursor도 서로 다른 조건입니다. 조건을 바꿨거나 테스트 키에서 라이브 키로 옮겼다면 cursor 없이 처음부터 받으세요. `limit`은 페이지마다 바꿔도 됩니다. ### 새 값 처리 볼타는 새 `status`, 새 `type`, 새 필드, `invoiceType`이나 `amendReason`의 새 값을 예고 없이 더할 수 있습니다. 현금영수증 같은 새 증빙은 같은 경로에 새 `type`과 그에 맞는 하위 객체로 싣습니다. * 모르는 `status`나 `type`의 항목은 건너뛰고 처리를 이어가세요. * 모르는 필드는 무시하세요. * 모르는 열거 값을 받아도 실패하지 말고 처리를 이어가세요. `REMOVED`와 `PENDING`은 `type` 없이 오므로 `id` 기준으로 그대로 반영하면 됩니다. ## 동기화 요청 볼타는 매출/매입을 주기적으로 수집합니다. 대시보드에서 처음 연동할 때도 첫 수집을 바로 시작합니다. 방금 국세청에 올라간 문서가 급할 때만 동기화를 요청하세요. ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/revenues:sync \ -H "Authorization: Basic {apiKey}" ``` ```json theme={"dark"} { "acceptedAt": "2026-09-18T03:00:00Z", "nextAvailableAt": "2026-09-18T03:30:00Z" } ``` | 경로 | 수집 대상 | | - | - | | `POST /v1/revenues:sync` | 대시보드에서 연동한 매출 전부 | | `POST /v1/expenses:sync` | 대시보드에서 연동한 매입 전부 | API가 `202 Accepted`로 접수만 하고 수집은 비동기로 진행합니다. 수집 상태를 조회하는 경로는 없습니다. 수집이 끝나기를 기다리지 말고 저장한 cursor로 목록을 이어 받으세요. 요청 한도는 [주요 제한](#주요-제한)을 참고하세요. `409`와 `422`로 거절한 요청은 한도를 차감하지 않습니다. `nextAvailableAt`은 30분 간격만 반영하고 24시간 횟수는 반영하지 않습니다. | 상태 코드 | 에러 코드 | 뜻 | | - | - | - | | `202` | - | 접수 | | `409` | `SYNC_IN_PROGRESS` | 같은 경로의 수집이 이미 진행 중. 볼타의 정기 수집도 포함하며, 끝난 뒤 다시 요청하세요 | | `422` | `NO_SOURCE_CONNECTED` | 매출이나 매입을 가져올 연동이 대시보드에 없음 | | `429` | `SYNC_RATE_LIMITED` | 요청 한도 초과. `Retry-After` 초만큼 기다리세요 | | `503` | `SYNC_UNAVAILABLE` | 일시적으로 판정할 수 없음. 잠시 후 다시 요청하세요 | ## 테스트 키 테스트 키는 구독과 관계없이 고정 샘플을 5분 지연 없이 돌려줍니다. 동기화를 요청해도 수집하지 않고 접수 응답만 돌려주며, 한도를 차감하지 않습니다. 샘플의 내 사업자는 `주식회사 볼타테스트`(`1234567890`)입니다. **매출** (`GET /v1/revenues`) | `id` | 변경 시각 (UTC) | 작성일자 | `invoiceType` | 공급받는자 | 합계 | 상태 | | - | - | - | - | - | - | - | | `101` | 2026-09-01T05:12:30Z | 2026-09-01 | `TAX_INVOICE` | 주식회사 테스트고객 | 1,100,000 | `ACTIVE` | | `102` | 2026-09-04T00:00:00Z | 2026-09-03 | `ZERO_RATED_TAX_INVOICE` | 테스트수출 주식회사 | 500,000 | `ACTIVE` | | `103` | 2026-09-05T02:00:00Z | 2026-09-05 | `TAX_INVOICE` | 주식회사 테스트고객 | -220,000 | `ACTIVE` | | `104` | 2026-09-05T02:00:00Z | 2026-09-02 | | | | `REMOVED` | | `105` | 2026-09-06T01:00:00Z | 2026-09-06 | | | | `PENDING` | * `101`: 볼타에서 발행한 세금계산서. 품목 2개 * `102`: 홈택스에서 수집한 영세율 세금계산서 * `103`: 공급가액 변동 수정세금계산서(`amendReason`이 `CHANGE_SUPPLY_COST`). 금액이 음수이고 품목의 `quantity`, `unitPrice`가 null * `104`: 대시보드에서 보관한 매출. `103`과 같은 시각에 바뀌어 `id` 순서로 뒤에 옴 * `105`: 홈택스에서 수집했고 상세를 채우는 중인 매출. `status`와 `id`만 옴 **매입** (`GET /v1/expenses`) | `id` | 변경 시각 (UTC) | 작성일자 | `invoiceType` | 공급자 | 합계 | 상태 | | - | - | - | - | - | - | - | | `201` | 2026-09-01T09:00:00Z | 2026-09-01 | `TAX_INVOICE` | 주식회사 테스트공급 | 110,000 | `ACTIVE` | | `202` | 2026-09-03T00:00:00Z | 2026-09-02 | `INVOICE` | 테스트농산 | 180,000 | `ACTIVE` | | `203` | 2026-09-06T00:30:00Z | 2026-09-05 | `TAX_INVOICE` | 주식회사 테스트물류 | 330,000 | `ACTIVE` | | `204` | 2026-09-06T03:00:00Z | 2026-09-06 | | | | `PENDING` | * `201`: 홈택스에서 수집한 세금계산서 * `202`: 면세 계산서. `totalTax`와 품목의 `tax`가 null * `203`: 상세를 채울 수 없는 세금계산서. 주소, 업태, 종목, `manager`가 null이고 `items`가 빈 배열 * `204`: 홈택스에서 수집했고 상세를 채우는 중인 매입. `status`와 `id`만 옴 `limit=2`로 호출하면 cursor 넘김을 매출은 세 페이지, 매입은 두 페이지로 확인할 수 있습니다. 기간 조건과 cursor는 라이브 키와 같은 규칙으로 동작합니다. ## 오류 | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | 날짜 형식 오류, `from`이 `to`보다 늦음, `type`이나 `limit` 값 오류 | | `400` | `INVALID_CURSOR` | 변조했거나 형식이 틀린 cursor, 경로나 조건이나 키 모드가 cursor를 받을 때와 다름 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `402` | `PLAN_UPGRADE_REQUIRED` | 스탠다드 플랜 미만 | | `409` | `SYNC_IN_PROGRESS` | 같은 경로의 수집이 이미 진행 중 | | `422` | `NO_SOURCE_CONNECTED` | 매출이나 매입을 가져올 연동이 없음 | | `429` | `SYNC_RATE_LIMITED` | 동기화 요청 한도 초과. `Retry-After` 헤더 동반 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `FEED_UNAVAILABLE` | 일시적으로 내역을 불러올 수 없음. cursor가 넘어가지 않았으니 같은 cursor로 다시 호출하세요 | | `503` | `SYNC_UNAVAILABLE` | 동기화 요청을 일시적으로 판정할 수 없음 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | 전체 에러 코드는 [에러 코드](/docs/api-introduction/error-codes)에서 확인하세요. ## 관련 문서 * [매출 내역 조회 API](/api-reference/revenue-and-expense/list-revenues) * [매입 내역 조회 API](/api-reference/revenue-and-expense/list-expenses) * [매출 동기화 요청 API](/api-reference/revenue-and-expense/request-revenue-sync) * [매입 동기화 요청 API](/api-reference/revenue-and-expense/request-expense-sync) * [입출금 내역 조회](/docs/api-introduction/bank-account-transactions) * [인증 가이드](/docs/api-introduction/authentication) # 보안 Source: https://docs.bolta.io/docs/api-introduction/security 볼타 API의 통신 보안과 API 키 보안을 안내합니다. # 보안 ## 통신 보안 모든 API 통신은 TLS/SSL로 보호됩니다. ## API 키 보안 볼타는 테스트 환경과 라이브 환경의 API 키를 분리해 운영합니다. * **테스트 키**: `test_` 접두사로 시작하며, 가상 환경에서만 동작합니다. * **라이브 키**: `live_` 접두사로 시작하며, 국세청과 실제로 연동합니다. > API 키 생성과 관리는 [API 키 가이드](/docs/developer-center/api-key)를 참고하세요. # 세금계산서 발행 마감일 조회 Source: https://docs.bolta.io/docs/api-introduction/tax-invoice-issue-due-date 작성일자로 전자(세금)계산서 발행 마감일을 조회하는 API의 요청 방법과 마감일 기준을 안내합니다. ## 무엇을 조회하나요 `GET /v1/taxInvoiceIssueDueDates`는 작성일자를 받아 그 전자(세금)계산서의 발행 마감일을 돌려줍니다. 정발행과 역발행 요청 API는 요청을 받을 때 작성일자가 마감일 안인지 이미 검증하고, 벗어나면 `400`을 반환합니다. 발행 전에 화면에서 마감일을 안내하거나 작성일자를 미리 확인해야 할 때 이 API를 쓰세요. > [!NOTE] > > 이 API는 발급자 등록, 공동인증서, 요청자 관리번호(`Bolta-Client-Reference-Id`) 없이 API 키만으로 호출합니다. 마감일 당일까지 발행할 수 있습니다. ## 요청 | 헤더 | 필수 | 설명 | | - | - | - | | `Authorization` | O | `Basic {apiKey}` 형식으로 입력하세요. [인증 가이드](/docs/api-introduction/authentication)를 참고하세요 | | 쿼리 파라미터 | 필수 | 설명 | | - | - | - | | `date` | O | 작성일자. `YYYY-MM-DD` 형식 | ```bash theme={"dark"} curl "https://xapi.bolta.io/v1/taxInvoiceIssueDueDates?date=YYYY-MM-DD" \ -H "Authorization: Basic {apiKey}" ``` `YYYY-MM-DD`를 조회할 작성일자로 바꾸세요. 테스트 키와 라이브 키는 같은 결과를 돌려줍니다. ## 응답 ```json theme={"dark"} { "date": "YYYY-MM-DD", "issueDueDate": "YYYY-MM-DD" } ``` | 필드 | 형식 | 설명 | | - | - | - | | `date` | string | 요청한 작성일자 | | `issueDueDate` | string | 발행 마감일. `YYYY-MM-DD` 형식 | 예를 들어 작성일자 2026년 9월 30일을 조회하면 `issueDueDate`는 2026년 10월 12일입니다. 10월 10일이 토요일이라 다음 영업일로 늦춰졌습니다. ## 마감일 기준 마감일은 작성일자가 속한 달의 다음 달 10일입니다. * 10일이 주말이나 공휴일이면 다음 영업일이 마감일입니다. * 국세청이 기한을 연장한 달은 연장된 날짜를 따릅니다. 2025년 9월 작성분의 마감일은 2025년 10월 15일입니다. 마감일을 제공하지 않는 달을 요청하면 API가 `400`과 `INVALID_REQUEST`를 반환합니다. > [!NOTE] > > API는 호출 시점의 마감일을 반환합니다. 결과를 오래 저장해 두지 말고 필요할 때 다시 조회하세요. ## 과금과 호출 한도 이 API는 포인트를 차감하지 않고 별도 호출 한도도 없습니다. 호출 내역은 [개발자센터](https://developers.bolta.io) 호출 로그에서 확인하세요. ## 오류 | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `INVALID_REQUEST` | `date` 누락, `YYYY-MM-DD` 형식이 아니거나 존재하지 않는 날짜, 마감일을 제공하지 않는 달 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | 전체 에러 코드는 [에러 코드](/docs/api-introduction/error-codes)에서 확인하세요. ## 관련 문서 * [전자(세금)계산서 발행 마감일 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-issuance-deadline) * [이메일 승인 역발행](/docs/api-introduction/usecase-reverse-email) * [간편 승인 역발행](/docs/api-introduction/usecase-reverse-simple) * [에러 코드](/docs/api-introduction/error-codes) # 세금계산서 PDF 조회 Source: https://docs.bolta.io/docs/api-introduction/tax-invoice-pdf Open API로 발행한 세금계산서의 PDF를 내려받는 API의 이용 조건, 재호출 방법, 파일 이름 규칙, 오류를 안내합니다. ## 무엇을 조회하나요 Open API로 발행한 전자세금계산서를 PDF로 내려받습니다. 볼타 대시보드에서 받는 PDF와 같은 양식입니다. | 경로 | 용도 | | - | - | | `GET /v1/taxInvoices/{issuanceKey}/pdf` | 세금계산서 PDF 다운로드 주소 조회 | ## 이용 조건 * 정발행(`issue`), 역발행(`issueRequest`), 수정세금계산서(`amend`)로 발행한 건을 모두 받습니다. * 발행이 끝난 건만 받습니다. 발행 결과 웹훅(`TAX_INVOICE_ISSUANCE_SUCCESS`)을 받았거나 [내용 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice)가 발행 완료로 답한 뒤 호출하세요. * 역발행은 공급자가 승인해 발행을 마친 뒤에 받습니다. 승인 전이거나 공급자가 거절한 건은 API가 `400 TAX_INVOICE_RETRIEVE_NOT_AVAILABLE`을 반환합니다. * 수정세금계산서 PDF는 제목에 수정분 또는 취소분을 표시하고 수정사유를 함께 싣습니다. * 발행을 요청한 API 키로 호출하세요. 키를 교체하거나 폐기하면 그 키로 발행한 건의 PDF도 받을 수 없으니 키를 바꾸기 전에 필요한 PDF를 받아 두세요. ## 요금 포인트를 차감하지 않습니다. ## PDF 조회 ### 요청 ```bash theme={"dark"} curl https://xapi.bolta.io/v1/taxInvoices/{issuanceKey}/pdf \ -H "Authorization: Basic {apiKey}" ``` `issuanceKey`에는 발행 요청 응답의 값을 넣으세요. ### 응답 첫 호출이 PDF 생성을 시작합니다. 만드는 중이면 API가 `202 Accepted`와 `Retry-After` 헤더를 반환합니다. 헤더의 초만큼 기다린 뒤 **같은 요청을 다시 보내세요.** ```http theme={"dark"} HTTP/1.1 202 Accepted Retry-After: 2 ``` ```json theme={"dark"} { "issuanceKey": "8D529FAD3EBAE050B79CE943CCC7CEDE", "status": "PENDING", "downloadUrl": null, "downloadUrlExpiresAt": null, "filename": null } ``` 준비되면 API가 `200 OK`와 다운로드 주소를 반환합니다. 한 번 만든 PDF는 다시 만들지 않으므로 이후 호출은 바로 `200`을 받습니다. ```json theme={"dark"} { "issuanceKey": "8D529FAD3EBAE050B79CE943CCC7CEDE", "status": "READY", "downloadUrl": "https://example.com/tax-invoice-pdfs/8D529FAD3EBAE050B79CE943CCC7CEDE.pdf", "downloadUrlExpiresAt": "2026-09-24T03:05:00Z", "filename": "전자세금계산서_20260924_공급받는자 상호_20260924-10000000-00000001.pdf" } ``` | 필드 | 형식 | 설명 | | - | - | - | | `issuanceKey` | string | 요청한 `issuanceKey` | | `status` | string | `PENDING`(생성 중), `READY`(준비 완료) | | `downloadUrl` | string 또는 null | PDF 주소. 5분 동안 유효 | | `downloadUrlExpiresAt` | string 또는 null | 주소 만료 시각(UTC) | | `filename` | string 또는 null | 내려받을 때 저장되는 파일 이름 | `downloadUrl`, `downloadUrlExpiresAt`, `filename`은 `READY`일 때만 값이 있습니다. 주소가 만료되면 같은 요청을 다시 보내 새 주소를 받으세요. 주소에는 서명값이 들어 있으니 로그나 분석 도구에 주소 전체를 남기지 마세요. 파일 이름은 `{종류}_{작성일자}_{공급받는자 상호}_{승인번호}.pdf`입니다. 다운로드 주소가 `Content-Disposition` 헤더로 같은 이름을 보냅니다. 한글 파일 이름을 지원하지 않는 클라이언트는 영문과 숫자만 남긴 이름으로 받습니다. > [!WARNING] > > 공급받는자가 개인이면 발행 요청 때 보낸 주민등록번호가 PDF에 가려지지 않고 그대로 나옵니다. 파일을 보관하거나 전달할 때 개인정보로 다루세요. ## 테스트 키 테스트 키로 발행한 건은 실제 세금계산서가 없습니다. 대신 API가 바로 `200`과 샘플 PDF 주소를 반환합니다. 샘플은 모든 발행 건에 같은 내용입니다. 주소 유효 시간(5분), 만료 뒤 재조회, 파일 이름 전달 방식은 라이브 키와 같으니 다운로드 연동을 테스트 키로 확인하세요. 테스트 키는 `202`를 반환하지 않습니다. `Retry-After`를 따라 다시 호출하는 로직은 라이브 키로 확인하세요. ## 호출 한도 같은 사업자에서 만드는 중인 PDF가 10건이거나 같은 API 키로 만드는 중인 PDF가 20건이면 API가 `429 TOO_MANY_IN_FLIGHT`와 `Retry-After` 헤더를 반환합니다. 이 한도는 새로 만들어야 하는 PDF에만 적용합니다. 이미 요청해 만드는 중이거나 준비된 PDF를 다시 조회하는 호출은 막지 않습니다. 여러 건을 한꺼번에 받으려면 사업자당 10건, 키 전체 20건을 넘지 않게 나눠 요청하세요. 먼저 요청한 PDF가 준비되면 다음 건을 요청하세요. ## 오류 | 상태 코드 | 에러 코드 | 발생 조건 | | - | - | - | | `400` | `TAX_INVOICE_RETRIEVE_NOT_AVAILABLE` | 발행 완료 전이거나 발행 실패. 역발행은 공급자 승인 전이거나 거절. 발행 결과를 확인한 뒤 다시 호출하세요 | | `400` | `INVALID_DOCUMENT` | 볼타에 저장된 문서 정보로 PDF를 만들 수 없음. `issuanceKey`와 함께 볼타에 문의하세요 | | `401` | - | API 키 인증 실패. 응답 본문 없음 | | `403` | `FORBIDDEN` | 발행을 요청한 API 키가 아님. 키를 교체하거나 폐기한 뒤 이전 키로 발행한 건도 해당 | | `404` | `NOT_FOUND` | 없는 `issuanceKey` | | `429` | `TOO_MANY_IN_FLIGHT` | 같은 사업자에서 만드는 중인 PDF 10건 또는 같은 API 키로 만드는 중인 PDF 20건. `Retry-After`(60초) 뒤 다시 호출하세요 | | `500` | `INTERNAL_SERVER_ERROR` | 서버 내부 오류 | | `503` | `PDF_GENERATION_FAILED` | 여러 번 시도했지만 PDF를 만들지 못함. `Retry-After`(600초) 뒤 같은 요청을 보내면 다시 만듭니다. 계속되면 `issuanceKey`와 함께 볼타에 문의하세요 | | `503` | `SERVICE_UNAVAILABLE` | 일시적인 내부 API 통신 오류 | `PDF_GENERATION_FAILED`를 받은 뒤 `Retry-After`보다 먼저 다시 호출하면 같은 오류를 받습니다. ## 관련 문서 * [세금계산서 PDF 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-pdf) * [전자세금계산서 내용 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice) * [세금계산서 웹훅](/docs/api-introduction/webhook-tax-invoice) * [에러 코드](/docs/api-introduction/error-codes) # B2B 거래 Source: https://docs.bolta.io/docs/api-introduction/usecase-b2b 기업 간 거래에서 세금계산서를 정발행하는 워크플로우입니다. 자사가 직접 거래처에 세금계산서를 발행하는 가장 기본적인 시나리오입니다. ## 워크플로우 **1. 발급자 등록** [발급자 등록 API](/api-reference/issuer/register-issuer)로 자사를 등록하고 `issuerId`를 저장합니다. **2. 공동인증서 등록** 정발행에 사용할 자사의 공동인증서를 등록합니다. 볼타 웹에서 직접 등록하거나, `issuerId`로 [인증서 등록 URL 조회 API](/api-reference/certificate/retrieve-issuer-certificate-registration-url)를 호출할 수 있습니다. **3. 세금계산서 정발행** [정발행 API](/api-reference/tax-invoice-issuance/issue-tax-invoice)를 호출하여 거래처에 세금계산서를 발행합니다. **4. 발행 완료 웹훅 수신** 발행이 완료되면 볼타가 [웹훅](/docs/api-introduction/webhook-tax-invoice)으로 `taxInvoiceUrl`이 담긴 알림을 보냅니다. **5. 발행 완료 이메일** 볼타가 거래처(공급받는자)에게 세금계산서 수신 안내 이메일을 자동으로 보냅니다. **6. 세금계산서 조회 (선택)** [세금계산서 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice) 또는 [관리번호 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-by-client-reference)로 발행 결과를 확인합니다. ## 적합한 경우 * 기업이 직접 거래처와 거래하는 경우 * 자사 인증서로 세금계산서를 직접 발행하는 경우 * 단건 또는 소량의 세금계산서를 발행하는 경우 # 대리 정발행 Source: https://docs.bolta.io/docs/api-introduction/usecase-delegated 플랫폼이 공급자를 대신하여 세금계산서를 정발행하는 워크플로우입니다. 물류 플랫폼, 프리랜서 매칭 서비스, 마켓플레이스 등에서 플랫폼이 공급자를 대신하여 세금계산서를 발행하는 시나리오입니다. ## 워크플로우 **1. 발급자 등록** [발급자 등록 API](/api-reference/issuer/register-issuer)를 호출하여 공급자를 발급자로 등록합니다. 인증서 관리에 사용할 `issuerId`를 저장합니다. **2. 인증서 등록 URL 발급** `issuerId`로 [인증서 등록 URL 조회 API](/api-reference/certificate/retrieve-issuer-certificate-registration-url)를 호출하여 공급자가 인증서를 등록할 URL을 발급받습니다. **3. 공급자 인증서 등록** 공급자가 발급받은 URL에 직접 접속해 공동인증서를 등록합니다. 등록 완료 후 리다이렉트 복귀와 결과 확인은 [인증서 등록 연동](/docs/api-introduction/certificate-registration)을 참고하세요. **4. 대리 정발행** [정발행 API](/api-reference/tax-invoice-issuance/issue-tax-invoice)를 호출하여 거래 상대방에게 세금계산서를 발행합니다. **5. 발행 완료 웹훅 수신** 발행이 완료되면 볼타가 [웹훅](/docs/api-introduction/webhook-tax-invoice)으로 `taxInvoiceUrl`이 담긴 알림을 보냅니다. **6. 발행 완료 이메일** 볼타가 거래 상대방에게 세금계산서 수신 안내 이메일을 자동으로 보냅니다. **7. 세금계산서 조회 (선택)** [세금계산서 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice)로 발행 결과를 확인합니다. ## 적합한 경우 * 물류 플랫폼이 화물차주 대신 세금계산서를 발행하는 경우 * 프리랜서 매칭 서비스가 프리랜서 대신 발행하는 경우 * 마켓플레이스에서 입점업체의 세금계산서 발행을 자동화하는 경우 * 다수의 공급자를 관리하는 플랫폼인 경우 * 공급자가 개별적으로 세금계산서를 발행하기 어려운 경우 ## 핵심 포인트 * 공급자별 `issuerId`는 인증서 등록, 조회, 삭제에 사용 * 공급자의 인증서가 만료되면 재등록 필요 # 정기 결제 (SaaS) Source: https://docs.bolta.io/docs/api-introduction/usecase-recurring SaaS 구독 서비스에서 정기적으로 세금계산서를 자동 발행하는 워크플로우입니다. SaaS 구독, 월간 서비스 등 정기 결제가 발생할 때 세금계산서를 자동으로 발행하는 시나리오입니다. ## 워크플로우 **1. 발급자 등록** [발급자 등록 API](/api-reference/issuer/register-issuer)로 자사를 등록하고 `issuerId`를 저장합니다. **2. 공동인증서 등록** 정발행에 사용할 자사의 공동인증서를 등록합니다. 볼타 웹에서 직접 등록하거나, `issuerId`로 [인증서 등록 URL 조회 API](/api-reference/certificate/retrieve-issuer-certificate-registration-url)를 호출할 수 있습니다. **3. 정기 발행 실행** 결제 스케줄러가 트리거되면 [정발행 API](/api-reference/tax-invoice-issuance/issue-tax-invoice)를 호출합니다. `Bolta-Client-Reference-Id`에 결제 ID와 시도 번호를 조합해 넣으면 같은 발행 시도의 중복 요청을 막고 처리 상태를 추적합니다. 요청자 관리번호는 [인증 가이드](/docs/api-introduction/authentication#client-reference-id)를 참고하세요. **4. 발행 완료 웹훅 수신** 발행이 완료되면 볼타가 [웹훅](/docs/api-introduction/webhook-tax-invoice)으로 `taxInvoiceUrl`이 담긴 알림을 보냅니다. **5. 발행 완료 이메일** 볼타가 구독자에게 세금계산서 수신 안내 이메일을 자동으로 보냅니다. **6. 세금계산서 조회 (선택)** [세금계산서 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice) 또는 [관리번호 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-by-client-reference)로 발행 결과를 확인합니다. ## 적합한 경우 * SaaS 구독 서비스에서 월/연 단위로 자동 청구하는 경우 * 정기 납품, 유지보수 계약 등 반복 거래가 발생하는 경우 * 스케줄러 기반 자동 발행이 필요한 경우 ## 구현 팁 * 결제 시스템의 스케줄러와 연동하여 결제 완료 시 자동 발행 * 응답을 받지 못한 경우 같은 요청을 다시 보내지 않고 관리번호 조회 API로 접수 결과 확인 * 발행 실패 웹훅을 받은 뒤 새 발행을 요청할 때는 새 `Bolta-Client-Reference-Id` 사용 # 현금영수증 웹훅 Source: https://docs.bolta.io/docs/api-introduction/webhook-cash-receipt 현금영수증 발행과 취소 결과 웹훅의 이벤트 타입, 페이로드, 발송 시점을 안내합니다. 전송 방식과 방화벽 설정, 로그 확인은 [웹훅 이벤트](/docs/api-introduction/webhook-events)를 참고하세요. ## 이벤트 타입 현금영수증 발행과 취소는 비동기입니다. API가 최종 결과를 다음 이벤트로 전송합니다. | 이벤트 타입 | 설명 | | - | - | | `CASH_RECEIPT_ISSUED` | 발행 성공 | | `CASH_RECEIPT_ISSUE_FAILED` | 발행 실패 | | `CASH_RECEIPT_CANCELED` | 취소 성공 | | `CASH_RECEIPT_CANCEL_FAILED` | 취소 실패 | | `CASH_RECEIPT_EXTERNALLY_CANCELED` | 볼타 외부에서 취소 | ## 페이로드 ### 발행 성공 ```json theme={"dark"} { "eventType": "CASH_RECEIPT_ISSUED", "data": { "issuanceKey": "MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I", "cashReceiptApprovalNumber": "123456789012" } } ``` | 필드 | 타입 | 설명 | | - | - | - | | `eventType` | string | 이벤트 타입 | | `data.issuanceKey` | string | 발행 식별 키 | | `data.cashReceiptApprovalNumber` | string | 현금영수증 승인번호 | ### 발행 실패 ```json theme={"dark"} { "eventType": "CASH_RECEIPT_ISSUE_FAILED", "data": { "issuanceKey": "MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I", "cause": { "code": "INVALID_RECIPIENT_IDENTIFIER", "message": "현금영수증 발급 수단 정보를 확인해주세요." } } } ``` | 필드 | 타입 | 설명 | | - | - | - | | `eventType` | string | 이벤트 타입 | | `data.issuanceKey` | string | 발행 식별 키 | | `data.cause.code` | string | 실패 코드 | | `data.cause.message` | string | 실패 사유 설명 | ### 취소 성공 ```json theme={"dark"} { "eventType": "CASH_RECEIPT_CANCELED", "data": { "issuanceKey": "9XK21ABC5KOAEIPGK8U6UO05I3EAQPLI8OE78Z1Q", "originalIssuanceKey": "MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I" } } ``` | 필드 | 타입 | 설명 | | - | - | - | | `eventType` | string | 이벤트 타입 | | `data.issuanceKey` | string | 취소 요청의 식별 키 | | `data.originalIssuanceKey` | string | 취소된 원본의 발행 식별 키 | ### 취소 실패 ```json theme={"dark"} { "eventType": "CASH_RECEIPT_CANCEL_FAILED", "data": { "issuanceKey": "9XK21ABC5KOAEIPGK8U6UO05I3EAQPLI8OE78Z1Q", "originalIssuanceKey": "MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I", "cause": { "code": "ORIGINAL_ISSUANCE_FAILED", "message": "원본 현금영수증 발행이 실패해 취소 요청을 처리할 수 없습니다." } } } ``` | 필드 | 타입 | 설명 | | - | - | - | | `eventType` | string | 이벤트 타입 | | `data.issuanceKey` | string | 취소 요청의 식별 키 | | `data.originalIssuanceKey` | string | 취소 대상 원본의 발행 식별 키 | | `data.cause.code` | string | 실패 코드 | | `data.cause.message` | string | 실패 사유 설명 | 다음 두 코드는 `CASH_RECEIPT_CANCEL_FAILED`에만 담깁니다. * `ORIGINAL_ISSUANCE_FAILED`: 원본 발행이 처리 중일 때 취소 요청을 접수했지만, 이후 원본 발행이 최종 실패한 경우 * `CANCELLATION_TARGET_NOT_FOUND`: 취소 대상이 확인되지 않거나 이미 취소된 경우. 볼타 외부(예: 홈택스)에서 전액이나 일부가 먼저 취소된 경우, 같은 현금영수증의 취소 요청이 이미 접수된 경우도 해당합니다 ### 외부 취소 발행된 현금영수증이 볼타 외부(예: 홈택스)에서 취소되면 이 이벤트를 전송합니다. ```json theme={"dark"} { "eventType": "CASH_RECEIPT_EXTERNALLY_CANCELED", "data": { "issuanceKey": "MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I" } } ``` | 필드 | 타입 | 설명 | | - | - | - | | `eventType` | string | 이벤트 타입 | | `data.issuanceKey` | string | 외부에서 취소된 현금영수증의 발행 식별 키 | ## 웹훅 발송 시간 | 이벤트 | 발송 시점 | | - | - | | `CASH_RECEIPT_ISSUED` | 발행 결과 확정 후 | | `CASH_RECEIPT_ISSUE_FAILED` | 발행 실패 확정 후 | | `CASH_RECEIPT_CANCELED`, `CASH_RECEIPT_CANCEL_FAILED` | 취소 결과 확정 후 | | `CASH_RECEIPT_EXTERNALLY_CANCELED` | 외부 취소 확인 후 | 테스트 키(`test_`)는 요청을 처리하면 최종 상태를 바로 기록하고, 요청 접수 시각부터 최소 10초 뒤에 웹훅을 전송합니다. 같은 이벤트를 두 번 이상 받을 수 있습니다. `eventType`과 `issuanceKey`를 기준으로 멱등 처리하세요. > [!WARNING] > > `202 Accepted`는 요청 접수만 뜻합니다. 상태 조회에서 `ISSUED`를 확인하거나 `CASH_RECEIPT_ISSUED` 웹훅을 받기 전까지 발행 미확정으로 처리하세요. ## 웹훅이 오지 않을 때 [현금영수증 발행 상태 조회](/api-reference/cash-receipt/retrieve-cash-receipt-status)로 확인하세요. LIVE 요청이 처리 중이거나 발행 결과 확인을 기다리는 상태라면 요청일 다음 날 17:00(KST) 이후에 결과를 다시 확인하세요. # 웹훅 이벤트 Source: https://docs.bolta.io/docs/api-introduction/webhook-events 볼타 웹훅의 전송 방식과 제품별 이벤트 타입을 안내합니다. ## 웹훅 개요 볼타는 세금계산서와 현금영수증의 발행과 취소 결과를 등록된 웹훅 URL로 비동기 전송합니다. 이벤트는 HTTP POST로 보내는 JSON이며, HTTPS만 지원합니다. > 웹훅 URL 설정은 [웹훅 연결 가이드](/docs/developer-center/webhook-connection)를 참고하세요. 테스트 환경과 라이브 환경에 각각 등록하세요. ## 방화벽 설정 웹훅을 수신하는 서버에서 방화벽을 운영한다면 아래 IP 주소를 인바운드 허용 목록에 추가하세요. 테스트 환경과 라이브 환경에 공통으로 적용됩니다. * `43.201.136.252` ## 제품별 이벤트 타입 | 제품 | 이벤트 타입 | 상세 | | - | - | - | | 세금계산서 | `TAX_INVOICE_ISSUANCE_SUCCESS`, `TAX_INVOICE_ISSUANCE_FAILURE` | [세금계산서 웹훅](/docs/api-introduction/webhook-tax-invoice) | | 현금영수증 | `CASH_RECEIPT_ISSUED` 외 4종 | [현금영수증 웹훅](/docs/api-introduction/webhook-cash-receipt) | 페이로드 예시와 필드 설명, 발송 시점은 각 상세 문서에 있습니다. ## 웹훅이 오지 않을 때 웹훅이 오지 않은 건은 상태 조회 API로 확인하세요. 세금계산서는 [전자세금계산서 내용 조회](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice), 현금영수증은 [현금영수증 발행 상태 조회](/api-reference/cash-receipt/retrieve-cash-receipt-status)를 사용하세요. ## 웹훅 로그 확인 전송한 웹훅의 성공과 실패 이력은 [개발자센터 > 이벤트 로그](/docs/developer-center/webhook-log)에서 확인하세요. # 세금계산서 웹훅 Source: https://docs.bolta.io/docs/api-introduction/webhook-tax-invoice 전자세금계산서 발행 결과 웹훅의 이벤트 타입과 페이로드를 안내합니다. 전송 방식과 방화벽 설정, 로그 확인은 [웹훅 이벤트](/docs/api-introduction/webhook-events)를 참고하세요. ## 이벤트 타입 | 이벤트 타입 | 설명 | | - | - | | `TAX_INVOICE_ISSUANCE_SUCCESS` | 발행 성공 | | `TAX_INVOICE_ISSUANCE_FAILURE` | 발행 실패 | ## 페이로드 ### 발행 성공 ```json theme={"dark"} { "eventType": "TAX_INVOICE_ISSUANCE_SUCCESS", "data": { "issuanceKey": "IssuanceKey_0FE29D3930EF0C6F01J0XQ6WVFN3K9SB99Q6T13S50", "taxInvoiceUrl": "https://app.bolta.io/taxInvoices/..." } } ``` | 필드 | 타입 | 설명 | | - | - | - | | `eventType` | string | 이벤트 타입 | | `data.issuanceKey` | string | 발행 요청 식별번호 | | `data.taxInvoiceUrl` | string | 세금계산서 URL | ### 발행 실패 ```json theme={"dark"} { "eventType": "TAX_INVOICE_ISSUANCE_FAILURE", "data": { "issuanceKey": "IssuanceKey_0FE29D3930EF0C6F01J0XQ6WVFN3K9SB99Q6T13S50", "cause": { "code": "NOT_FOUND_CERTIFICATE", "message": "공동인증서가 등록되지 않았습니다." } } } ``` | 필드 | 타입 | 설명 | | - | - | - | | `eventType` | string | 이벤트 타입 | | `data.issuanceKey` | string | 발행 요청 식별번호 | | `data.cause.code` | string | 에러 코드 | | `data.cause.message` | string | 에러 설명 | ## 웹훅 발송 시간 | 환경 | 발송 소요 시간 | | - | - | | 테스트 키 (`test_`) | 발행 요청 후 10\~30초 | | 라이브 키 (`live_`) | 발행 요청 후 약 10분 | ## 웹훅이 오지 않을 때 [전자세금계산서 내용 조회](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice)로 발행 상태를 확인하세요. 역발행 요청은 [역발행 요청 상태 조회](/api-reference/reverse-issuance/retrieve-reverse-issuance-request-status)로 승인 대기, 거절, 만료, 실패 여부까지 확인하세요. # 은행 계좌 연동과 해지 Source: https://docs.bolta.io/docs/bank/account-management 은행 계좌를 연결하고 연동 상태를 관리합니다. ## 계좌 연결 1. \[설정] > \[매출∙매입 내역 연동]으로 이동하세요. 2. \[연동하기]에서 입출금 계좌를 선택하세요. 3. 연결할 은행을 선택하고 화면 안내에 따라 인증을 진행하세요. 4. 조회할 계좌를 선택해 연동하세요. ![연동된 입출금 계좌와 상태](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-data-sync.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=f0357194f14c4f3ef63afd89a499a39d) 연동 후에는 목록에서 은행과 계좌, 상태를 확인하세요. 거래 내역은 \[재무·회계] > \[입출금 내역]에서 조회합니다. ## 연결 관리 연동한 계좌의 관리 메뉴에서 연결 상태와 해지 항목을 확인하세요. 해지할 계좌가 맞는지 확인한 뒤 연동을 해지하세요. 인증서 만료로 연결에 오류가 생겼다면 [공동인증서 재등록](/docs/setting/general/certificate-registration)을 진행하고 연동 상태를 확인하세요. # 입출금 내역 관리 Source: https://docs.bolta.io/docs/bank/transaction-management 연동한 은행 계좌의 입금과 출금 내역을 확인합니다. ## 계좌 연동 처음 이용한다면 \[설정] > \[매출∙매입 내역 연동]에서 계좌를 연결하세요. 연결 절차는 [은행 계좌 연동과 해지](/docs/bank/account-management)를 참고하세요. ## 거래 조회 \[재무·회계] > \[입출금 내역]으로 이동하세요. 조회 기간, 거래 계좌, 거래 유형, 연결 상태를 선택해 내역을 좁혀 보세요. 입금과 출금은 계정에 부여된 조회 권한에 따라 표시합니다. ![연동 계좌의 입금 거래와 연결된 증빙 열](https://mintcdn.com/bolta/m0K_FW6YoHBhsTYx/images/docs/guide-transactions.png?fit=max\&auto=format\&n=m0K_FW6YoHBhsTYx\&q=85\&s=e7e89718b28d4464949b334f5c073bef) 은행, 계좌번호, 적요, 거래금액, 거래일시를 확인하세요. \[연결된 증빙]에서는 해당 거래와 연결한 매출 또는 매입 내역을 확인합니다. 입금을 매출과 연결하려면 [입금 내역 관리](/docs/invoice/sales/management/deposit-history)를, 출금을 매입과 연결하려면 [지급 내역 관리](/docs/invoice/purchase/payment-history)를 참고하세요. ## 증빙 연결과 해제 1. 목록의 \[연결된 증빙]을 클릭하거나 거래 행을 열어 상세 화면으로 이동하세요. 2. 입금 거래는 \[매출 내역], 출금 거래는 \[매입 내역]에서 \[추가]를 클릭하세요. 3. 금액이나 고객명으로 검색하고 대상 증빙을 선택하세요. \[미연결 내역만 보기]로 다른 거래에 연결되지 않은 증빙을 찾습니다. 4. 연결된 목록과 남은 금액을 확인하세요. 잘못 선택했다면 해당 항목의 \[연결 해제] 버튼을 클릭하세요. ## 메모와 보관 거래 상세에서 적요, 구분, 거래일시, 거래금액과 계좌 정보를 확인하세요. \[메모]에서 거래 확인에 필요한 내용을 저장합니다. 목록에서 여러 건을 선택해 \[보관]하거나 상세 화면에서 \[보관하기]를 선택합니다. 다시 표시하려면 \[보관 내역]으로 이동해 \[보관 해제]를 선택하세요. [거래 내역 보관과 해제](/docs/accounting/archive)를 참고하세요. # 현금영수증 내역 관리 Source: https://docs.bolta.io/docs/cash-receipt/history 발행 상태와 상세 내용을 확인하고 취소발행합니다. ## 발행 내역 조회 \[현금영수증] > \[발행 내역]에서 조회 기간과 상태를 선택하세요. 확인할 내역을 열어 발행 정보, 금액, 처리 상태를 확인하세요. ## 취소발행 볼타 화면에서 발행을 완료한 원본 현금영수증을 선택하세요. 상세 화면에서 취소발행을 선택하고 거래취소, 오류발급, 기타 중 사유를 고르세요. 내용을 확인한 뒤 취소를 진행하세요. 이미 취소발행한 원본은 연결된 취소 내역을 확인하세요. API 연동 서비스에서 발행한 현금영수증은 발행한 서비스에서 취소하세요. 새 현금영수증을 발행하려면 [현금영수증 간편발행](/docs/cash-receipt/issue)을 참고하세요. ## 상세 정보와 변경 이력 상세 화면에서 승인번호, 승인거래 또는 취소거래 구분, 공급자 정보와 금액을 확인하세요. 취소 거래는 취소사유도 함께 확인합니다. \[입금 내역], \[라벨], \[담당자]와 메모를 변경합니다. 담당자는 볼타에서 거래를 관리할 팀원입니다. \[변경 이력]에서는 처리자와 변경 시점을 확인하세요. ## 여러 건의 관리 정보 변경 목록에서 대상 행을 선택하고 \[수정]을 클릭하세요. 입금 내역, 라벨, 메모와 담당자의 변경 방법을 선택합니다. 바꾸지 않을 항목은 \[기존 항목 유지]로 두고 저장하세요. 발행한 거래 금액을 정정해야 한다면 취소발행 후 새로 발행합니다. 발행실패 건은 상세 상태를 확인한 뒤 고객 정보와 금액을 확인해 다시 작성하세요. 취소 접수 후에는 원본과 취소 내역의 상태를 확인합니다. # 현금영수증 간편발행 Source: https://docs.bolta.io/docs/cash-receipt/issue 발행 유형과 거래 금액을 입력하고 현금영수증을 발행합니다. ## 발행 유형과 고객 정보 \[현금영수증] > \[간편발행]으로 이동하세요. | 발행 유형 | 입력할 정보 | | - | - | | 소득공제 | 고객 휴대폰번호 | | 지출증빙 | 고객 사업자등록번호 | | 소득공제의 자진 발급 | \[자진 발급하기]를 켜면 국세청 지정번호 자동 적용 | 고객이 발급 정보를 제공하지 않은 거래는 \[자진 발급하기]를 선택하세요. ## 거래 정보 입력 과세 또는 면세를 선택하고 품목명과 금액을 입력하세요. 품목명은 최대 20자입니다. 공급가액, 부가세액, 합계금액을 확인하세요. ![자진 발급을 선택하고 거래 금액을 입력한 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-cash-self.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=2a123684af6be182a13f633c5cf0693b) ## 발행 결과 확인 \[미리보기]에서 발행 유형, 고객 정보, 금액을 확인하고 발행하세요. 결과는 \[현금영수증] > \[발행 내역]에서 확인합니다. 발행 후 취소는 [현금영수증 내역 관리](/docs/cash-receipt/history)를 참고하세요. ## 메모와 라벨 설정 \[추가 옵션]의 \[메모]와 \[라벨]에서 관리 정보를 입력하세요. 메모는 실제 현금영수증에 표시하지 않습니다. 발행 후에도 상세 화면에서 변경합니다. 금액 오류가 표시되면 공급가액과 부가세액의 합이 합계금액과 같은지 확인하세요. 면세 거래는 과세 구분을 \[면세]로 선택하고 금액을 확인합니다. # 고객 정보 등록 Source: https://docs.bolta.io/docs/customer/creation 사업자 또는 개인 고객과 담당자를 등록합니다. ## 고객 등록 1. \[고객 관리]에서 \[고객 정보 등록]을 클릭하세요. 2. 사업자 또는 개인 고객을 선택하세요. 3. 사업자 고객은 사업자등록번호, 회사명, 대표자명을 입력하세요. 개인 고객은 화면에 표시된 식별 정보와 이름을 입력하세요. 4. 주소와 메모 등 필요한 정보를 입력하고 다음 단계로 이동하세요. 5. 담당자 정보를 입력하고 저장하세요. ![고객 관리의 거래처 목록](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-customer-list.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=61cb54d43d31d2cc65cd00cf363aaf06) 담당자는 최대 5명까지 등록합니다. 담당자 이메일과 연락처를 확인하세요. 세금계산서를 발행할 때는 등록한 담당자 중 최대 2명을 선택합니다. 등록한 고객은 [간편발행](/docs/invoice/sales/issue/quick)에서 회사명이나 사업자등록번호로 검색해 불러옵니다. ## 고객 정보와 담당자 수정 \[고객 관리]에서 거래처를 열고 \[고객 정보 수정]을 클릭하세요. 기본 정보를 수정한 뒤 사업자 고객은 \[다음]으로 담당자 정보에 이동하세요. 담당자를 추가하거나 삭제하고 \[저장]을 클릭하세요. 사업자 고객에는 담당자를 한 명 이상 등록합니다. 개인 고객은 이름, 주민등록번호와 이메일을 입력합니다. 연락처와 주소도 같은 화면에서 관리하세요. 모바일에서는 상세 화면의 관리 메뉴에서 \[고객 정보 수정]을 선택합니다. ## 사업자 상태 확인 고객에 표시된 사업자 상태를 확인하세요. 휴업, 폐업이나 유효하지 않은 번호로 표시되면 발행 전에 거래처 정보를 확인하세요. \[확인 불가]는 조회 결과를 확인하지 못한 상태입니다. ## 고객 삭제 고객 상세의 관리 메뉴에서 \[고객 삭제]를 선택하세요. 확인 창에 함께 삭제할 연결 항목이 표시되면 입금 매칭 규칙 등의 항목과 건수를 확인하세요. \[네, 삭제할게요]를 클릭하면 고객 관리에서 해당 고객을 제거합니다. # 고객 거래 내역 확인 Source: https://docs.bolta.io/docs/customer/issue-history 고객별 매출과 입금 내역을 확인합니다. ## 고객별 내역 조회 \[고객 관리]에서 고객을 선택하세요. 상세 화면에서 조회 기간을 정하고 매출, 입금액, 미수금을 확인하세요. 미수금 관리 기능은 라이트 플랜부터 제공합니다. 거래 목록에서 확인할 내역을 열면 상세 정보를 확인합니다. 등록한 고객 정보가 바뀌었다면 \[고객 정보 수정]에서 수정하세요. ![고객별 매출과 미수금 목록](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-customer-detail.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=e78f5a5104da64e3fb04f52bad76ba9c) ## 입금 연결 확인 입금이 반영되지 않은 내역은 [입금 내역 관리](/docs/invoice/sales/management/deposit-history)에서 연결 상태를 확인하세요. 반복되는 거래처 입금은 [AI 입금 매칭](/docs/accounting/payment-matches)에서 규칙을 관리합니다. ## 매출 검색과 입금 요청 고객 상세에서 품목명과 \[입금 상태]로 매출을 좁혀 보세요. \[라벨]과 \[입금 내역] 열에서 관리 정보를 변경합니다. 미수금이 있는 매출을 선택하고 \[묶어서 입금 요청]을 클릭하세요. [미수금 입금 요청](/docs/deposit-request/request-outstanding)에 따라 계좌, 기한과 수신 담당자를 확인해 보내세요. 반복 입금의 연결 조건을 바꾸려면 고객 상세의 \[입금 매칭 규칙]을 클릭하세요. 모바일에서는 관리 메뉴에서 선택합니다. [규칙 관리](/docs/accounting/matching-rules)에서 추가, 수정과 삭제를 진행하세요. # 고객 메모 관리 Source: https://docs.bolta.io/docs/customer/memo 고객 정보에 업무용 메모를 남깁니다. ## 메모 작성과 수정 \[고객 관리]에서 고객을 선택하고 \[고객 정보 수정]을 클릭하세요. 메모를 입력하고 저장하세요. 새 고객을 등록할 때도 메모를 함께 입력합니다. 메모는 최대 150자까지 입력합니다. 거래처와의 정산 조건이나 확인할 내용을 적으세요. ![고객 목록에서 거래처 확인](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-customer-list.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=61cb54d43d31d2cc65cd00cf363aaf06) 고객 메모는 볼타에서 거래처를 관리하는 정보입니다. 세금계산서에 전달할 내용은 발행 화면의 비고에 입력하세요. # 세금계산서 발행 시 입금 요청 보내기 Source: https://docs.bolta.io/docs/deposit-request/issue-with-invoice 세금계산서를 발행하면서 입금 요청을 보냅니다. ## 입금 요청 설정 \[간편발행]에서 세금계산서 정보를 작성한 뒤 입금 요청의 \[요청 보내기]를 켜세요. 반복 발행과 입금 요청은 함께 설정하지 않습니다. 입금받을 계좌를 확인하세요. [사전설정](/docs/deposit-request/preset)에 등록한 계좌와 서류를 불러오며, 등록한 계좌가 없으면 직접 입력합니다. ## 기한과 서류 확인 기본 입금 기한은 작성일과 오늘 중 늦은 날부터 30일 뒤입니다. 거래 조건에 맞게 날짜를 변경하세요. 기본 서류 외에 첨부파일을 최대 5개까지 추가합니다. ## 발행과 요청 확인 \[미리보기]에서 세금계산서와 입금 요청 정보를 확인하고 \[발행하기]를 클릭하세요. 수신 담당자의 이메일과 전화번호를 확인하세요. 알림에 포함된 링크에서 거래처가 요청을 조회합니다. 발송 후에는 [입금 요청 내역](/docs/deposit-request/management)에서 진행 상태를 확인하세요. 거래처의 조회 절차는 [거래처 수신 화면](/docs/deposit-request/recipient-view)을 참고하세요. # 입금 요청 내역 관리 Source: https://docs.bolta.io/docs/deposit-request/management 보낸 입금 요청과 입금 상태를 확인합니다. ## 요청 조회 \[재무·회계] > \[입금 요청 내역]으로 이동하세요. 상태, 조회 기간과 검색 조건으로 내역을 찾으세요. 상단에서 요청 금액, 입금완료 금액, 입금대기 금액과 연체 금액을 확인합니다. ## 상세 내용과 담당자 요청을 열어 거래처, 기한, 계좌와 입금 현황을 확인하세요. 내역별 담당자를 지정하거나 변경할 수 있습니다. 입금 내역을 연결하면 해당 요청의 입금 상태에 반영합니다. ## 요청 종료 더 이상 입금을 요청하지 않을 내역은 \[요청종료]로 처리하세요. 종료한 요청은 대시보드 통계에서 제외합니다. 요청 종료는 실제 계좌 거래를 취소하는 기능이 아닙니다. ## 재안내 보내기 입금 전 요청을 열고 \[입금 요청 재안내]를 클릭하세요. 미입금 금액과 입금 기한을 확인한 뒤 \[네, 보낼게요]를 클릭합니다. 수신 담당자에게 이메일과 카카오 메시지로 안내합니다. 당일 재안내한 요청은 버튼의 안내를 확인하세요. ## 입금완료 처리 실제 입금 여부를 확인한 뒤 \[입금완료 처리]를 클릭하세요. 연결된 입금이 없거나 일부만 연결돼 있어도 확인 창에서 전액 입금완료로 처리할 수 있습니다. 확인 창의 금액을 검토하고 확정하세요. ## 활동 이력과 일괄 작업 상세 화면의 \[활동 이력]에서 처리 내용을 확인하세요. \[요청 내용]의 \[메모]에는 후속 확인 사항을 기록합니다. 목록에서 여러 요청을 선택하면 \[수정]으로 담당자를 바꾸거나 \[입금완료], \[요청종료], \[입금 요청 재안내]로 일괄 처리합니다. 선택한 상태에 따라 처리 가능한 요청과 확인 창의 건수를 확인하세요. # 입금 요청 사전설정 Source: https://docs.bolta.io/docs/deposit-request/preset 입금 요청에 사용할 계좌와 서류를 등록합니다. ## 계좌 등록 \[설정] > \[워크스페이스 설정]의 \[입금 요청]을 여세요. 은행과 계좌번호를 입력하고 \[조회]를 클릭하세요. 확인한 예금주가 맞는지 확인한 뒤 저장하세요. ## 기본 서류 등록 통장사본과 사업자등록증을 등록하세요. 입금 요청을 작성할 때 등록한 계좌와 기본 서류를 불러옵니다. 요청별 추가 첨부파일은 [입금 요청 작성](/docs/deposit-request/issue-with-invoice)에서 최대 5개까지 등록합니다. 계좌를 다시 입력하려면 \[초기화]를 클릭하세요. 서류를 바꾸려면 기존 첨부파일을 삭제하고 새 파일을 등록하세요. # 입금 요청을 받는 거래처 화면 Source: https://docs.bolta.io/docs/deposit-request/recipient-view 거래처가 알림 링크에서 입금 요청을 조회하는 방법을 안내합니다. ## 알림 링크 열기 입금 요청 알림의 링크를 여세요. 이메일이나 카카오 알림톡에서 요청 내용으로 이동합니다. 별도 회원가입 없이 조회합니다. ## 문서 조회 인증 \[입금 요청 조회] 화면이 나타나면 문서에 등록된 사업자등록번호, 주민등록번호 또는 외국인등록번호를 입력하고 \[인증하고 조회]를 누르세요. ![입금 요청 조회를 위한 문서 등록 번호 입력 화면](/images/docs/guide-deposit-auth.png) ## 입금 정보 확인 요청 금액, 이미 입금한 금액, 미입금 금액과 입금 기한을 확인하세요. 표시된 계좌와 예금주를 확인한 뒤 이체하세요. 첨부 서류와 연결된 세금계산서가 있으면 함께 확인합니다. ![입금 요청 금액과 기한, 입금 계좌](/images/docs/guide-deposit-recipient.png) 내용이 다르면 요청을 보낸 거래처에 확인하세요. ## 첨부 서류와 세금계산서 내려받기 \[첨부 서류]에서 통장사본과 사업자등록증 등을 확인하세요. \[발행된 세금계산서]에서 문서를 선택하고 \[PDF 다운로드] 또는 \[XML 다운로드]를 클릭합니다. 다운로드 가능 여부를 확인하라는 안내가 나오면 요청을 보낸 거래처에게 문서 상태를 확인하세요. # 미수금 입금 요청하기 Source: https://docs.bolta.io/docs/deposit-request/request-outstanding 미수금이 남은 매출을 선택해 입금 요청을 보냅니다. ## 매출 선택 \[고객 관리]에서 거래처를 열고 매출 내역을 확인하세요. 미수금이 남은 내역을 선택한 뒤 \[묶어서 입금 요청]을 클릭하세요. 같은 거래처의 매출을 최대 5건까지 묶어 요청합니다. ![고객 상세의 매출과 미수금](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-customer-detail.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=e78f5a5104da64e3fb04f52bad76ba9c) ## 요청 정보 입력 입금 기한과 입금 계좌를 입력하세요. 계좌번호를 조회해 예금주를 확인하세요. [사전설정](/docs/deposit-request/preset)을 등록했다면 계좌와 서류를 불러옵니다. 입금 요청을 받을 담당자를 최대 5명까지 선택하세요. 담당자의 이메일과 전화번호를 확인한 뒤 요청을 보내세요. ## 진행 상태 확인 [입금 요청 내역](/docs/deposit-request/management)에서 요청 금액과 입금 상태를 확인하세요. 거래처가 여는 화면은 [거래처 수신 화면](/docs/deposit-request/recipient-view)을 참고하세요. # API 키 Source: https://docs.bolta.io/docs/developer-center/api-key 개발자센터에서 테스트 키와 라이브 키를 만들고 관리합니다. ## API 키 만들기 [개발자센터](https://developers.bolta.io)에서 회사를 선택하고 \[관리] > \[API 키 목록]으로 이동하세요. \[API 키 생성]을 클릭한 뒤 사용할 환경을 선택하세요. 테스트 키는 가상 발행에 사용합니다. 라이브 키로 요청하면 실제 발행에 반영됩니다. 생성한 키는 \[테스트] 또는 \[라이브] 탭에서 확인하고 복사하세요. ![개발자센터의 테스트 API 키 목록](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-developer-keys.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=eb44f86efa4d12ebba31a0a67ea1d751) ## 설정 변경과 삭제 키의 관리 메뉴에서 \[수정하기]를 선택하세요. 용도, 웹훅 수신 URL, 인증서 등록 완료 리다이렉트 URL을 설정합니다. 웹훅 수신 URL과 인증서 등록 완료 리다이렉트 URL은 서로 다른 용도입니다. [웹훅 연결](/docs/developer-center/webhook-connection)과 [인증서 등록 연동](/docs/api-introduction/certificate-registration)을 참고하세요. 사용하지 않는 키는 관리 메뉴에서 \[삭제하기]를 선택하고 확인하세요. 연동에 사용하는 키를 삭제하기 전에는 해당 연동의 키를 교체하세요. # API 로그 Source: https://docs.bolta.io/docs/developer-center/api-log API 키별 요청과 응답 내용을 확인합니다. ## 조회할 API 키 선택 [개발자센터](https://developers.bolta.io)에서 \[연동 현황] > \[API 로그]를 여세요. 왼쪽 목록에서 조회할 API 키를 선택하세요. API 로그를 지원하는 요청만 목록에 표시합니다. ![API 키별 요청 내역을 조회하는 API 로그](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-developer-api-logs.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=aa986cc3f9ce97a719292760d0819588) ## 요청과 응답 확인 확인할 요청을 선택하세요. 상세 정보에서 HTTP 상태 코드, 메서드, 요청 주소와 요청 및 응답의 헤더와 본문을 확인합니다. 실패한 요청은 상태 코드와 응답 내용을 확인한 뒤 [오류 코드](/docs/api-introduction/error-codes)를 참고하세요. 웹훅 전송 결과는 [웹훅 로그](/docs/developer-center/webhook-log)에서 확인합니다. # 개발자센터 결제 관리 Source: https://docs.bolta.io/docs/developer-center/billing API 이용의 결제 방식, 포인트와 자동충전 설정을 확인합니다. ## 결제 방식과 이용 내역 확인 [개발자센터](https://developers.bolta.io)에서 회사를 선택하고 \[관리] > \[결제]를 여세요. \[결제 개요]에서 현재 결제 방식과 포인트 잔액을 확인합니다. 후불 결제는 화면에 표시된 청구 기간과 결제일을 확인하세요. 포인트 이용 내역과 결제 내역은 화면 아래 탭에서 확인합니다. 이 화면은 API 이용 요금을 관리합니다. 볼타 앱의 월 구독은 [플랜 결제 및 관리](/docs/setting/general/billing-subscription)에서 확인하세요. ## 포인트 충전 포인트 잔액 옆의 충전 버튼을 누르세요. 충전할 금액을 선택하고 결제창에서 결제를 마치세요. 결제 후 잔액과 결제 내역에 반영됐는지 확인하세요. ## 자동충전 관리 \[자동충전]에서 기준 잔액과 충전할 포인트를 설정하고 결제 카드를 등록하세요. 이미 설정했다면 자동충전 메뉴에서 설정을 변경하거나 해제합니다. 자동충전 상태가 \[중단됨]이면 화면의 실패 사유와 등록 카드를 확인하세요. 카드 정보를 변경한 뒤 자동충전 상태를 다시 확인하세요. ## 결제 확인 중이거나 실패한 경우 충전 창에서 부가세를 포함한 총 결제 금액을 확인하세요. 결제 준비에 실패하면 \[다시 시도]를 클릭합니다. \[확인 중] 상태에서는 결제 결과를 기다리고 포인트 잔액과 결제 내역을 확인하세요. 결제창이 열리지 않았고 \[기존 주문 취소]가 표시되면 기존 주문을 취소한 뒤 다시 충전합니다. \[확인 필요] 또는 다시 결제하지 말라는 안내가 나오면 \[주문번호 복사]로 주문번호를 복사해 문의하세요. 결제 상태를 확인하기 전에는 새 충전을 진행하지 마세요. ## 자동충전 수정과 카드 재등록 자동충전 메뉴의 \[수정하기]에서 잔액 기준과 충전 포인트를 바꾸세요. 저장 시 잔액이 기준보다 적으면 곧바로 충전합니다. 결제 카드만 바꾸려면 \[카드 변경]을 이용하세요. 중단된 자동충전은 \[카드 다시 등록]으로 카드를 등록하면 재개합니다. 사용을 멈추려면 메뉴의 \[해제하기]를 선택하고 확인하세요. 해제 후에는 포인트 잔액을 확인해 직접 충전합니다. ## 사용과 소멸 예정 포인트 확인 \[포인트 충전/사용 내역] 탭에서 충전, 사용과 환불 내역을 확인하세요. \[결제 내역] 탭에서는 결제 방법, 일시, 구매 상품과 금액을 확인합니다. 잔액 카드의 \[소멸 예정 포인트(30일 이내)]도 함께 확인하세요. # 개발자 관리 Source: https://docs.bolta.io/docs/developer-center/developers 개발자를 초대하고 개발자센터 접근을 관리합니다. ## 개발자 초대 [개발자센터](https://developers.bolta.io)의 \[관리] > \[개발자 목록/초대]로 이동하세요. \[개발자 초대]를 클릭하고 이메일을 입력하세요. 워크스페이스 팀원은 이메일 목록에서 선택할 수 있습니다. 등록을 마치면 볼타가 초대 이메일을 보냅니다. 초대받은 사람은 메일의 링크를 열고 회사와 초대자를 확인한 뒤 참여하세요. ![개발자 목록과 초대 버튼](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-developer-members.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=9f32d26dbb6bbc0b162b7ff3c6d32549) ## 개발자 내보내기 소유자 또는 팀원과 권한을 관리할 수 있는 팀원이 개발자를 내보냅니다. 대상 개발자의 관리 메뉴에서 \[내보내기]를 선택하고 확인하세요. 내보낸 개발자는 개발자센터에 접근할 수 없습니다. 소유자는 내보내기 대상이 아닙니다. ## 초대받은 개발자 참여 초대받은 이메일로 볼타에 로그인하세요. \[워크스페이스 참여] 화면의 \[개발자 초대 목록]에서 회사를 선택하고 \[참여하기]를 클릭합니다. 개발자센터에서 회사가 맞는지 확인한 뒤 API 키와 로그를 조회하세요. 초대 창에서는 \[추가]로 이메일을 여러 개 등록한 뒤 전송합니다. 이메일 주소가 잘못됐다면 전송 전에 목록에서 삭제하고 올바른 주소를 추가하세요. # 발급자 관리 Source: https://docs.bolta.io/docs/developer-center/issuers API 키에 등록한 발급자의 정보와 인증서 유효기간을 확인합니다. ## 발급자 목록 조회 [개발자센터](https://developers.bolta.io)에서 \[연동 현황] > \[발급자 관리]를 여세요. 왼쪽 목록에서 조회할 API 키를 선택하세요. 목록에서 사업자등록번호, 종사업장번호, 회사명과 대표자명을 확인합니다. 인증서가 등록된 발급자는 인증서 발급일과 만료일도 표시합니다. ![발급자 정보와 인증서 유효기간](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-developer-issuers.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=a524f45c5d2cd645e5c27fe85ecd290d) ## 발급자 식별자 확인 연동에 사용할 `IssuerId`는 값 옆의 복사 버튼으로 복사하세요. 테스트 키와 라이브 키 중 어느 키의 목록인지 확인한 뒤 사용하세요. 발급자의 인증서를 등록하려면 [인증서 등록 연동](/docs/api-introduction/certificate-registration)을 참고하세요. ## 인증서 등록 링크 이용 연동 서비스에서 전달받은 인증서 등록 링크를 여세요. 사업자 명의 인증서를 선택하고 비밀번호를 입력한 뒤 \[등록하기]를 클릭하세요. 저장된 인증서를 불러올 수 없다면 파일을 직접 업로드합니다. 등록 링크가 만료됐다면 연동 서비스에서 새 링크를 받아 진행하세요. 사업자등록번호 불일치나 발행 불가 안내가 나오면 해당 사업자의 발행용 인증서인지 확인합니다. 테스트 링크에서는 결과 코드를 선택하고 \[제출]을 클릭해 성공이나 오류에 대한 연동 처리를 확인합니다. 실제 인증서 입력을 확인하려면 \[일반 등록으로 진행하기]를 선택하세요. 테스트와 라이브 중 어느 환경의 링크인지 확인한 뒤 진행합니다. # 웹훅 연결하기 Source: https://docs.bolta.io/docs/developer-center/webhook-connection API 키에 웹훅 수신 URL을 등록합니다. ## API 키 선택 [개발자센터](https://developers.bolta.io)의 \[관리] > \[API 키 목록]에서 사용할 키를 찾으세요. 테스트와 라이브 환경에 각각 설정합니다. 키의 관리 메뉴에서 \[수정하기]를 클릭하세요. ## 수신 URL 등록 \[웹훅 수신 URL]에 이벤트를 받을 서버 주소를 입력하고 \[저장]을 클릭하세요. 인증서 등록 완료 리다이렉트 URL은 인증서 등록 후 사용자를 이동시킬 주소입니다. 웹훅 수신 주소와 구분해 입력하세요. [웹훅 가이드](/docs/api-introduction/webhook-events)에서 이벤트와 수신 처리 방법을 확인하세요. 전송 결과는 [웹훅 로그](/docs/developer-center/webhook-log)에서 조회합니다. # 웹훅 로그 Source: https://docs.bolta.io/docs/developer-center/webhook-log API 키별 웹훅 전송 결과와 내용을 확인합니다. ## 조회할 키 선택 [개발자센터](https://developers.bolta.io)에서 \[연동 현황] > \[웹훅 로그]로 이동하세요. 왼쪽 목록에서 조회할 API 키를 선택하세요. 문서 유형과 전송 상태를 선택해 결과를 좁혀 보세요. 세금계산서와 현금영수증 이벤트를 구분해 조회합니다. ![웹훅 로그의 문서 유형과 전송 상태 필터](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-developer-webhooks.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=2093056f0ed3be5b6a025c3d7a21a149) ## 전송 결과 확인 로그를 선택하면 수신 URL, 이벤트 발생 시간, 전송한 내용을 확인합니다. 실패한 전송은 오류 메시지와 수신 서버의 처리 결과를 함께 확인하세요. 이벤트가 없다면 조회할 API 키와 [웹훅 수신 URL](/docs/developer-center/webhook-connection)을 확인하세요. # 슬랙 연동 Source: https://docs.bolta.io/docs/integrations/slack 슬랙에서 볼타 알림을 받고 승인 요청을 처리합니다. ## 워크스페이스 연결 \[외부 연동] > \[슬랙]을 열고 \[슬랙 연동하기]를 클릭하세요. 연결할 Slack 워크스페이스를 선택하고 앱 접근을 허용하세요. 볼타로 돌아와 연동 완료 상태를 확인합니다. ## 개인 알림 받기 \[개인 알림]의 \[내 계정 연결]을 클릭해 본인의 Slack 계정을 연결하세요. 연결한 계정의 DM으로 알림을 받습니다. 세금계산서 발행 정보와 상태를 확인하고, 권한이 있는 작업은 알림에서 승인, 거절하거나 메모를 작성합니다. \[재연결 필요]가 표시되면 \[다시 연결]을 진행하세요. 개인 알림을 중단하려면 내 계정의 \[연결 해제]를 선택합니다. ## 팀 채널 알림 설정 1. \[팀 채널 알림]에서 \[채널 알림 추가]를 클릭하세요. 2. \[슬랙 채널]에서 알림을 받을 채널을 선택하세요. 비공개 채널은 먼저 볼타 슬랙봇(@볼타)을 초대하세요. 3. 받을 알림을 선택하세요. 세금계산서 승인 요청과 발행 완료, 대량발행, 지급 승인과 이체 결과를 구분해 설정합니다. 4. \[추가하기]를 클릭하고 등록한 채널과 알림 종류를 확인하세요. 등록한 채널 알림을 수정할 때는 해당 항목에서 설정 창을 열고 알림을 변경한 뒤 \[저장하기]를 클릭하세요. 필요 없는 채널 알림은 해제를 선택하고 확인합니다. ## 오류 해결과 연동 해제 채널에 알림을 전송할 수 없다는 안내가 나오면 채널 삭제나 공개 범위 변경 여부를 확인하세요. 기존 채널 알림을 해제하고 사용할 채널로 다시 설정하세요. 워크스페이스 연동 오류는 \[다시 연동] 또는 \[재연동]으로 연결합니다. 재연동 안내에 설정 초기화가 표시되면 연결 후 개인 알림과 팀 채널 알림을 다시 확인하세요. 전체 연동을 해제하려면 상단 관리 메뉴의 \[연동 해제]를 선택하세요. 모든 팀원의 슬랙 알림을 중단하고 등록한 채널 알림을 삭제하므로 개인 계정의 연결 해제와 구분하세요. # 구글 스프레드시트 연동 Source: https://docs.bolta.io/docs/integrations/spreadsheet 볼타 내역을 Google 스프레드시트에 연결합니다. ## 파일 연결 1. \[외부 연동] > \[구글 스프레드시트]에서 \[연동하기]를 클릭하세요. Google 계정 연결이 필요하면 사용할 계정으로 접근을 허용하세요. 2. 연동을 구분할 \[설명]을 입력하세요. 이 설명은 Google 파일명과 별도로 볼타에서 사용합니다. 3. \[연동내역 선택]에서 매출 세금계산서, 매입 세금계산서, 계좌 입출금 내역 중 내보낼 항목을 선택하고 \[다음]을 클릭하세요. 4. 매출을 특정 라벨로 제한하려면 \[라벨 필터 사용]을 켜고 라벨을 선택하세요. 5. \[정보 확인]에서 설명과 연동 내역을 확인하고 \[연동 완료]를 클릭하세요. ## 자동 동기화와 즉시 내보내기 연결한 파일의 \[자동 동기화]를 켜면 매일 오전 6시와 오후 8시에 동기화합니다. 파일 내용을 확인하려면 \[파일 열기]를 클릭하세요. 지금 갱신하려면 해당 항목의 관리 메뉴에서 \[즉시 내보내기]를 클릭하세요. 완료 안내 후 파일을 확인합니다. 실패하면 오류 안내를 확인하고 다시 시도하세요. ## 연결 설정 변경 관리 메뉴의 \[연동 수정]에서 설명, 내역과 라벨을 변경한 뒤 \[수정 완료]를 클릭하세요. 별도 파일을 추가하려면 \[새 시트 연동]을 선택합니다. 다른 Google 계정을 사용하려면 상단 관리 메뉴의 \[새 계정 연동]을 이용하세요. ## 계정 만료와 파일 문제 해결 \[재연결 필요]가 표시되면 \[계정 재연동]을 클릭하세요. 담당자의 인증이 만료된 경우 담당자에게 재연결을 요청하거나 \[새 계정 연결]을 진행합니다. 다른 계정으로 연결하면 기존 파일에 접근하지 못할 수 있으므로 확인 창을 검토하세요. \[파일 문제 발생]은 \[문제 확인] 또는 \[파일 문제 확인]으로 원인을 확인하세요. 사용할 수 없는 연결은 해제하고 새 시트로 연동합니다. ## 연결 해제 해당 항목의 관리 메뉴에서 \[연동 해제]를 선택하고 확인하세요. Google 시트 파일은 남지만 볼타에서 해당 파일을 관리하거나 동기화하지 않습니다. # 역발행 요청 승인 Source: https://docs.bolta.io/docs/invoice-issuance-request/approval 거래처가 보낸 요청을 확인하고 회사 명의 인증서로 승인합니다. ## 요청 열기와 본인 확인 요청 메일에서 \[세금계산서 정보 확인하기]를 누르세요. 이메일 인증 화면이 나오면 \[인증 메일 보내기]를 누르고 새 메일의 인증번호 6자리를 입력하세요. 메일이 오지 않으면 스팸함을 확인하고 \[이메일 재발송하기]를 이용하세요. ## 회사와 거래 내용 확인 \[받은 역발행 요청] 화면에서 우리 회사가 맞는지 확인하고 요청을 선택하세요. 회사 이름 옆 버튼으로 사업자를 변경합니다. ![받은 역발행 요청 목록과 승인 기한](/images/docs/guide-portal-list.png) 공급자는 우리 회사, 공급받는자는 요청한 거래처인지 확인하세요. 화면을 내려 품목과 금액, 첨부파일을 검토하세요. 내용이 다르면 요청 화면의 거래처 담당자에게 정정을 요청하세요. ![요청 상세의 공급자와 공급받는자](/images/docs/guide-portal-detail.png) ## 인증서로 승인 \[승인하기]를 누르고 발행 정보를 확인한 뒤 \[발행 승인하기]를 누르세요. \[전자세금용 금융인증서] 또는 \[공동인증서]를 선택해 인증을 진행하세요. 공급자 회사 명의의 인증서가 필요합니다. ![전자세금용 금융인증서와 공동인증서 선택](/images/docs/guide-portal-method.png) 인증서가 없다면 [승인용 인증서 준비](/docs/invoice-issuance-request/certificate)를 확인하세요. ## 발행 결과 확인 \[세금계산서 발행 완료] 화면을 확인하세요. 목록의 \[지난 내역]에서 완료한 요청을 다시 확인합니다. 국세청 전송이 끝나 PDF를 받을 수 있는 요청은 상세 화면의 \[세금계산서 PDF 다운로드]를 이용하세요. ![세금계산서 발행 완료와 목록 이동](/images/docs/guide-portal-complete.png) \[링크 복사하기]로 요청 목록의 주소를 저장하면 다음에 받은 요청도 확인할 수 있습니다. | 지난 내역의 상태 | 뜻 | | - | - | | 발행완료 | 세금계산서 발행 완료 | | 요청취소 | 거래처가 요청 취소 | | 기간만료 | 승인 기한이 지나 취소 | 취소되거나 기한이 지난 요청을 발행해야 한다면 거래처에 새 요청을 보내 달라고 하세요. ## 여러 요청 함께 승인 같은 사업자의 요청 목록에서 \[N건 모두 승인하기]를 클릭하세요. \[발행 정보 확인]에서 총 발행건수와 총 발행금액을 확인하고 \[N건 발행 승인하기]로 진행합니다. 한 건만 처리하려면 요청 상세를 열고 \[승인하기]를 선택하세요. 데스크톱에서는 \[한 건만 승인하기]를 이용합니다. 금융인증서로 한 번에 승인하는 대상은 최대 50건입니다. 승인 대상이 많다면 개별 요청을 열어 처리하세요. 완료 후 \[남은 요청 N건 보기]가 표시되면 남은 요청의 상태를 확인합니다. ## 볼타 계정으로 승인 해당 사업자의 발행 승인 권한이 있고 발행용 인증서를 등록한 계정으로 로그인하면, 발행 정보 확인 후 등록된 인증서로 승인합니다. 이 경우 인증서 선택 단계 없이 진행합니다. 다른 회사 요청을 확인하려면 회사 이름 옆에서 사업자를 전환하세요. 다른 이메일로 받은 요청은 \[인증 종료] 후 해당 이메일로 다시 인증합니다. 로그인한 상태에서는 \[로그아웃] 후 사용할 계정으로 로그인하세요. ## 지난 내역과 인증 오류 이메일 인증만 한 비회원은 최근 90일 안에 생성한 요청의 지난 내역을 조회합니다. 화면에서는 이 기간을 최근 3개월로 안내합니다. 볼타 계정으로 로그인하면 이 기간 제한을 적용하지 않습니다. 받은 요청이 없다는 안내가 나오면 \[다른 이메일로 다시 시도]에서 수신 이메일을 확인하세요. 인증번호가 일치하지 않으면 \[다시 입력하기]를 클릭해 새로 받은 번호를 입력합니다. 재발송 대기 시간이 표시되면 시간이 지난 뒤 재요청하세요. 승인 중 오류가 났다면 요청 목록을 다시 열어 이미 처리한 요청인지 확인하세요. 인증서 오류는 사업자번호, 발행 가능한 인증서 종류와 비밀번호를 확인한 뒤 다시 진행합니다. # 승인용 인증서 준비 Source: https://docs.bolta.io/docs/invoice-issuance-request/certificate 역발행 요청을 승인할 회사 명의의 인증서를 준비합니다. ## 사용할 인증서 선택 요청을 받은 공급자 회사 명의의 인증서를 준비하세요. 전자세금계산서 발행 용도로 사용할 수 있는 인증서가 필요합니다. | 인증서 | 승인 화면에서 선택할 항목 | | - | - | | 전자세금용 금융인증서 | 전자세금용 금융인증서 | | 전자세금용 공동인증서 | 공동인증서 | | 사업자 범용 공동인증서 | 공동인증서 | 개인 명의 인증서, 은행 거래 전용 인증서와 홈택스 보안카드는 이 승인에 사용할 수 없습니다. 다른 전자세금계산서 서비스 전용 인증서도 등록 대상에서 제외합니다. 사업자 범용 또는 은행 발급 전자세금용 인증서를 선택하세요. ## 금융인증서 준비 기업뱅킹의 인증센터에서 전자세금용 금융인증서를 발급하세요. 발급할 때 사업자 명의와 용도를 확인하세요. 승인 화면에서 \[전자세금용 금융인증서]를 선택하고 인증 안내에 따라 진행합니다. 발급처와 인증서 종류는 [금융결제원 금융인증서 안내](https://www.yeskey.or.kr/?menuSeq=100058\&upMenuSeq=100000\&url=yeskey%2Fyessign%2Fcertificate%2Ffinance)에서 확인하세요. ## 공동인증서 준비 전자세금용 또는 사업자 범용 공동인증서를 발급하고 인증서 파일과 비밀번호를 준비하세요. 이미 해당 인증서로 세금계산서를 발행한다면 같은 인증서를 사용합니다. 인증서를 새로 신청한다면 [볼타 인증서 신청](https://bolta.io/cert/individual)에서 사업자 유형에 맞는 신청 경로를 선택하세요. 발급 비용, 신청 조건과 구비 서류는 신청 화면에서 확인하세요. 인증서를 준비한 뒤 [역발행 요청 승인](/docs/invoice-issuance-request/approval)을 진행하세요. # 역발행 세금계산서란? Source: https://docs.bolta.io/docs/invoice-issuance-request/introduce 공급받는자가 세금계산서 정보를 작성하고 공급자에게 발행을 요청합니다. ## 발행 요청 작성 \[세금계산서] > \[세금계산서 역발행]에서 \[발행 요청]을 클릭하세요. 공급자인 거래처와 담당자를 선택하세요. 공급자 담당자는 한 명을 지정합니다. 작성일자와 품목을 입력하세요. 품목은 최대 16개이며, 과세 유형에 맞춰 세액을 확인하세요. 요청 화면에 표시되는 승인 기한도 확인하세요. ## 정보 확인과 전송 전달사항과 증빙 자료를 추가한 뒤 \[다음]을 클릭하세요. 공급자, 공급받는자와 금액을 검토하고 세금계산서 미리보기를 확인하세요. 고칠 내용이 있으면 \[이전]으로 돌아가세요. \[발행 요청]을 클릭하면 볼타가 공급자 담당자에게 이메일을 보냅니다. 이 단계는 공급자에게 승인을 요청한 상태입니다. 공급자가 승인해야 세금계산서를 발행합니다. ## 진행 상태 확인 [요청현황 확인](/docs/invoice-issuance-request/request-status)에서 승인 상태를 확인하세요. 공급자가 진행하는 절차는 [역발행 요청 승인](/docs/invoice-issuance-request/approval)을 참고하세요. # 요청현황 확인 Source: https://docs.bolta.io/docs/invoice-issuance-request/request-status 역발행 요청의 승인 상태와 상세 내용을 확인합니다. ## 대기 중인 요청 \[세금계산서] > \[세금계산서 역발행]에서 대기 중인 요청을 확인하세요. 요청을 열면 거래처, 금액과 승인 기한을 확인합니다. 승인대기 상태에서는 요청을 취소하거나 담당자에게 이메일을 재전송할 수 있습니다. 거절된 요청은 \[요청 삭제]로 목록에서 삭제합니다. ## 승인된 요청 승인된 요청을 선택해 상세 내용을 확인하세요. 공급자의 승인과 세금계산서 발행 결과를 구분해 확인하세요. 발행된 매입 자료는 [매입 내역](/docs/invoice/purchase/fetch-external)에서 조회합니다. ## 요청 취소와 이메일 재전송 승인대기 요청을 열고 취소를 선택한 뒤 확인하세요. 잘못 작성한 요청은 취소 후 올바른 정보로 새로 요청합니다. 취소와 승인 기한 만료 상태는 목록에서 구분해 확인하세요. 담당자가 알림을 받지 못했다면 \[이메일 재전송]에서 수신 이메일을 추가하고 \[재전송하기]를 클릭하세요. \[상세보기]는 고객이 확인하는 요청 화면을 엽니다. 열기에 실패하면 다시 시도하세요. 거절된 요청을 삭제하려면 상세 화면에서 \[내역 삭제]를 선택하고 \[요청 삭제] 확인 창에서 확정하세요. 삭제한 요청은 더 이상 조회하지 않습니다. # 홈택스 매입세금계산서 가져오기 Source: https://docs.bolta.io/docs/invoice/purchase/fetch-external 홈택스의 매입세금계산서를 볼타에 연결합니다. ## 홈택스 연결 \[설정] > \[매출∙매입 내역 연동]에서 매입 세금계산서를 연결하세요. 홈택스 조회에 사용할 사업자 공동인증서를 등록하고 연동 상태가 정상인지 확인하세요. 홈택스 내역 연동은 라이트 플랜부터 이용합니다. ![매입 세금계산서 연동 상태](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-data-sync.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=f0357194f14c4f3ef63afd89a499a39d) ## 가져온 내역 확인 \[재무·회계] > \[매입 내역]에서 조회 기간을 선택하세요. 내역을 열어 거래처, 작성일자, 품목, 금액을 확인하세요. 매입 내역은 조회 권한이 있는 팀원이 확인합니다. 최신 내역을 가져오려면 상단의 \[내역 가져오기]를 이용하세요. 지급한 금액을 연결하려면 [지급 내역 관리](/docs/invoice/purchase/payment-history)를 참고하세요. # 지급 내역 관리 Source: https://docs.bolta.io/docs/invoice/purchase/payment-history 매입 거래에 지급 날짜와 금액을 연결합니다. ## 은행 출금 연결 \[재무·회계] > \[매입 내역]에서 거래의 \[지급 내역] 추가 버튼을 클릭하세요. 연동한 은행 거래 중 실제 지급한 출금을 찾아 연결하세요. 은행 거래 조회에는 출금 내역 조회 권한이 필요합니다. ![매입 거래의 지급 내역 추가 버튼](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-expenses.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=5e528fa1249c6c8c2c6d4d6bd3f5c4de) ## 직접 입력 \[직접 입력]에서 지급한 날짜와 금액을 입력하고 저장하세요. 계좌를 연동하지 않은 거래도 지급 사실을 직접 기록합니다. ## 지급 상태 확인 전체 금액을 지급했다면 연결 내역에서 금액을 확인하세요. 일부만 지급했다면 남은 미지급 금액을 확인하고 추가 지급을 연결하세요. 잘못 연결한 내역은 연결을 해제한 뒤 다시 연결하세요. 이 화면은 지급 내역을 기록하는 기능입니다. 지급요청서의 이체 처리는 [이체 내역 관리](/docs/payment-request/payment-history)를 참고하세요. # 받은 세금계산서 조회와 저장 Source: https://docs.bolta.io/docs/invoice/recipient-view 알림 링크에서 세금계산서를 조회하고 PDF와 XML을 내려받습니다. ## 수신 링크 열기 거래처가 보낸 세금계산서 알림의 링크를 여세요. \[세금계산서 조회]에서 문서에 등록된 사업자등록번호, 주민등록번호 또는 외국인등록번호로 인증하세요. 발행 문서의 수신자 정보와 일치하는 번호를 입력합니다. ## 문서 확인과 저장 공급자, 공급받는자, 작성일자, 품목, 공급가액과 세액을 확인하세요. \[PDF 다운로드]로 문서를 저장하고 인쇄합니다. 원본 XML이 필요하면 \[XML 다운로드]를 선택하세요. 연결된 수정세금계산서를 표시하는 경우 원본과 수정된 문서를 함께 확인하세요. 연결 문서를 불러오지 못했다면 새로고침 후 다시 확인합니다. ## 조회나 다운로드가 되지 않을 때 번호가 일치하지 않으면 문서에 등록된 수신자 정보를 발신자에게 확인하세요. 발행 중인 건은 발행 완료 후 내려받습니다. 다운로드 가능 여부를 확인하라는 안내가 나오면 발신자에게 해당 문서의 상태를 확인해 달라고 요청하세요. 입금 요청도 받았다면 [입금 요청 수신 화면](/docs/deposit-request/recipient-view)에서 계좌, 기한과 첨부 서류를 확인하세요. # 세금계산서 발행정보 요청 Source: https://docs.bolta.io/docs/invoice/sales/issuance-request-form 거래처에게 발행정보를 받아 검토한 뒤 세금계산서를 발행합니다. ## 요청서 만들기 \[세금계산서] > \[발행정보 요청서]에서 \[요청서 만들기]를 클릭하세요. 워크스페이스마다 요청서를 최대 10개까지 등록합니다. 요청서 관리 권한이 필요합니다. 요청서 제목과 설명, 품목명을 입력하세요. 거래처에게 보여 줄 자료를 첨부하고, 추가로 받을 정보가 있으면 입력 항목을 설정하세요. 필요한 항목은 필수로 지정하세요. ![요청서 제목과 설명, 첨부파일 설정](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-request-form-new.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=48afa00fdfb8ea78a70b6fbbf89a170e) ## 링크 공유 \[미리보기]에서 거래처가 작성할 화면을 확인한 뒤 요청서를 저장하세요. 목록에서 요청서의 링크를 복사해 거래처에게 전달하세요. 요청서를 삭제하면 기존 링크를 사용할 수 없습니다. 공유한 링크를 계속 사용해야 한다면 요청서를 수정하세요. ## 제출된 정보 확인과 발행 제출 안내 메일의 링크를 열거나 \[발행 내역]에서 승인대기 내역을 확인하세요. 거래처와 품목, 금액을 검토하고 잘못된 정보는 \[내용 변경]에서 고치세요. 발행 권한이 있는 팀원이 승인하면 세금계산서를 발행합니다. [발행요청 승인](/docs/invoice/sales/issue/approval)을 참고하세요. ## 요청서 수정과 삭제 목록에서 요청서의 관리 메뉴를 열고 \[수정하기]를 선택하세요. 제목, 요청 내용과 품목명, 첨부파일, 추가 입력 항목을 수정한 뒤 \[요청서 수정하기]로 저장합니다. \[미리보기]에서 고객에게 보이는 문구를 확인하세요. 더 이상 사용할 요청서는 \[삭제하기]를 선택하고 확인하세요. 삭제 후 기존 공유 링크를 사용할 수 없으므로 공유 중인 요청서인지 먼저 확인합니다. ## 거래처의 정보 제출 거래처는 공유받은 요청서 링크를 열고 다음 내용을 입력합니다. 1. \[발행요청일], \[입금자명], 부가세를 포함한 \[입금 금액], \[입금(예정)일]을 입력하세요. 2. 사업자등록증 기준으로 회사명, 대표자명과 사업자등록번호를 입력하세요. 3. 세금계산서를 받을 담당자의 이메일을 입력하세요. 두 번째 담당자 정보를 적었다면 해당 이메일도 입력합니다. 4. 추가 필수 항목을 작성한 뒤 \[정보 제출하기]를 클릭하세요. 발행요청일은 세금계산서 작성일자로 사용합니다. 제출 후 발행 담당자의 승인 절차를 거쳐 세금계산서를 받습니다. # 수정세금계산서 발행 Source: https://docs.bolta.io/docs/invoice/sales/issue/amend 발행을 완료한 세금계산서의 수정 사유를 선택하고 발행합니다. ## 수정할 내역 선택 \[세금계산서] > \[발행 내역]의 \[발행완료]에서 원본 세금계산서를 선택하세요. 상세 화면 아래의 \[수정발행]을 클릭하세요. ![발행 완료 세금계산서와 수정발행 버튼](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-invoice-detail.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=01207b52b46baf124d97fc5851e753bb) ## 수정 사유와 금액 확인 \[수정 사유 선택]에서 실제 거래에 맞는 사유를 선택하세요. 원본의 상태와 금액에 따라 선택할 수 있는 사유가 다릅니다. 사유별 입력 화면에서 원본과 수정할 내용을 확인하세요. 작성일자, 공급가액, 세액을 입력하고 \[미리보기]에서 확인한 뒤 발행하세요. 원본과 수정 내역은 발행 내역의 상세 화면에서 확인합니다. 발행 전 내용을 고치려면 [발행내용 변경](/docs/invoice/sales/management/edit)을 참고하세요. ## 사유 변경과 미리보기 작성 중 사유가 잘못됐다면 상단의 \[사유 변경]을 클릭하세요. 화면에 표시되는 기재사항 착오정정, 공급가액 변동, 착오에 의한 이중발급, 계약의 해제 중 해당하는 사유를 선택합니다. \[정보 확인]을 클릭해 발행할 문서를 검토하세요. 기재사항 착오정정은 \[다음]으로 수정분과 취소분을 모두 확인한 뒤 \[발행]을 클릭합니다. 취소분과 수정분 두 장을 발행합니다. ## 수정발행 이력 확인 상세 화면의 \[수정발행 이력]에서 원본과 연결된 수정 내역을 여세요. 수정발행 건수와 최종 금액을 확인합니다. 대기 건을 포함한 \[예상 최종 금액]이 표시되면 처리 완료 후 금액을 다시 확인하세요. 실패나 거절 건은 해당 내역의 상태를 확인합니다. # 세금계산서 발행요청 승인 Source: https://docs.bolta.io/docs/invoice/sales/issue/approval 발행 권한이 있는 팀원이 세금계산서 내용을 검토하고 승인합니다. ## 승인대기 확인 발행 권한이 없는 팀원이 작성한 세금계산서는 승인대기로 등록합니다. 소유자 또는 발행 권한이 있는 팀원이 승인한 뒤 발행합니다. \[세금계산서] > \[발행 내역]의 \[발행대기]에서 승인대기 내역을 여세요. 공급받는자와 작성일자, 품목, 금액을 확인하세요. ![승인대기 세금계산서의 발행 승인과 거절 버튼](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-invoice-pending.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=ccbacf58cfbf0fb9b1ef82061d51aef1) ## 승인 또는 거절 내용이 맞으면 발행 승인을 선택하고 확인 화면에서 승인하세요. 잘못된 정보는 발행 전에 [내용 변경](/docs/invoice/sales/management/edit)으로 고치거나 요청을 거절하세요. 여러 내역을 선택하면 한 번에 승인하거나 거절합니다. 일괄 처리는 최대 200건까지 선택합니다. 거절한 요청은 \[발행취소]에서 확인하세요. # 세금계산서 대량발행 Source: https://docs.bolta.io/docs/invoice/sales/issue/bulk 엑셀 파일로 한 번에 최대 20,000건을 등록하고 발행합니다. ## 대량발행 준비 스탠다드 플랜에서 엑셀 파일로 한 번에 최대 20,000건을 등록합니다. 발행할 워크스페이스에 사업자 범용 또는 전자세금용 공동인증서를 등록하세요. ## 엑셀 작성과 업로드 1. \[세금계산서] > \[대량발행]으로 이동하세요. 2. \[새로 등록하기] > \[발행 · 예약발행 등록]을 선택하세요. 3. 화면에서 엑셀 양식을 내려받고 양식에 맞춰 거래 정보를 입력하세요. 4. 파일을 업로드하세요. 오류가 있으면 오류 파일을 내려받아 표시된 내용을 고친 뒤 다시 업로드하세요. 5. 업로드 완료 후 건수, 금액, 예약발행 내용을 확인하세요. ![대량발행 엑셀 양식 다운로드와 파일 업로드](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-bulk-upload.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=807820bebffca7ea2246364dc8ca3cb3) ## 등록과 승인 발행 승인 권한이 있으면 \[발행 등록하기]를 클릭하고 확인 창에서 \[네, 등록할게요]를 선택하세요. 승인 권한이 없으면 \[승인 요청하기]로 담당자에게 요청하세요. 등록 작업은 한 번에 하나씩 진행합니다. 대량발행 목록에서 진행 상태와 결과를 확인하세요. 예약 건은 승인 시점에 따라 즉시 발행 대상이 될 수 있으므로 승인 전에 작성일자를 확인하세요. 역발행을 일괄 요청하려면 \[새로 등록하기] > \[역발행 등록]을 선택하세요. 공급자가 승인하는 절차는 [역발행 세금계산서](/docs/invoice-issuance-request/introduce)를 참고하세요. ## 작업별 결과와 실패 건 재등록 대량발행 목록에서 작업을 열어 총 건수, 즉시 발행과 예약 건수, 금액을 확인하세요. 승인대기 작업은 \[발행 승인하기] 또는 \[발행 거절하기]로 처리합니다. 처리가 끝나면 \[등록 결과]를 확인하세요. 실패 사유 옆 \[다운로드]로 오류 파일을 받아 해당 건의 정보를 수정한 뒤 다시 등록합니다. 성공한 건은 재등록 대상에서 빼세요. \[발행 내역 확인]에서 개별 발행 결과를 확인합니다. 대량역발행은 \[역발행 내역 확인]에서 거래처의 승인 여부를 확인하세요. 처리완료는 등록 작업의 결과이며, 예약이나 거래처 승인이 필요한 건은 후속 상태까지 확인해야 합니다. # 이전 발행 내용으로 발행하기 Source: https://docs.bolta.io/docs/invoice/sales/issue/load 기존 세금계산서의 거래처와 품목을 불러와 새로 발행합니다. ## 이전 내역 불러오기 \[세금계산서] > \[간편발행]에서 \[이전 내역 불러오기]를 클릭하세요. 복사할 세금계산서를 찾아 선택하세요. 불러온 고객과 담당자, 품목, 금액을 확인하세요. 작성일자와 공급일자는 이번 거래에 맞게 입력하세요. ## 새 거래 발행 필요한 내용을 수정한 뒤 \[미리보기]를 클릭하세요. 공급자, 공급받는자, 날짜, 금액을 확인하고 발행하세요. ![세금계산서 발행 전 미리보기](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-quick-preview.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=17c1fe6d39c7be6525c409562c6e0c41) 이전 내역을 불러와 발행하면 새 세금계산서를 만듭니다. 기존 세금계산서를 정정하려면 [수정세금계산서 발행](/docs/invoice/sales/issue/amend)을 진행하세요. # 매출세금계산서 간편발행 Source: https://docs.bolta.io/docs/invoice/sales/issue/quick 거래처와 품목을 입력하고 세금계산서를 발행합니다. ## 거래처 선택 \[세금계산서] > \[간편발행]으로 이동하세요. 작성일자를 확인하고 회사명이나 사업자등록번호로 고객을 검색하세요. 고객이 없다면 [고객 정보 등록](/docs/customer/creation)에서 등록하세요. 세금계산서를 받을 담당자는 최대 2명을 선택합니다. 선택한 담당자의 이메일과 연락처를 확인하세요. ## 품목과 금액 입력 1. 과세, 영세, 면세 중 거래에 맞는 유형을 선택하세요. 2. 공급일자와 품목명을 입력하세요. 3. 단가와 수량을 입력하고 공급가액, 세액, 합계금액을 확인하세요. 4. 품목이 여러 개라면 \[추가]를 클릭하세요. 최대 16개까지 입력합니다. 5. 영수 또는 청구를 선택하고 필요한 비고를 입력하세요. ![공급가액 1,000,000원과 세액 100,000원을 입력한 발행 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-quick-filled.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=3f9b5220a6bea3198a04ba5bafd350e8) 입금 안내를 함께 보내려면 \[입금 요청]의 \[요청 보내기]를 켜고 [입금 요청 설정](/docs/deposit-request/issue-with-invoice)을 입력하세요. ## 미리보기와 발행 \[미리보기]에서 공급자, 공급받는자, 작성일자, 품목, 금액을 확인하세요. 발행 승인 권한이 있으면 \[발행]으로 진행합니다. 승인 권한이 없다면 [발행요청 승인](/docs/invoice/sales/issue/approval) 절차를 따릅니다. 처리 결과는 \[세금계산서] > \[발행 내역]에서 확인하세요. 미래 날짜에 발행하려면 [예약발행](/docs/invoice/sales/issue/schedule)을, 정기 거래는 [반복발행](/docs/invoice/sales/issue/recurring)을 설정하세요. ## 관리용 옵션과 입력 오류 확인 \[추가 옵션]의 \[메모]와 \[라벨]은 발행 후 거래 관리에 사용할 내용을 입력하는 항목입니다. 거래처에게 보낼 문구는 \[세금계산서 비고]에 입력하세요. 고객 정보의 길이나 형식 오류가 표시되면 \[정보 수정]에서 수정하세요. 공급일자는 작성일자 이내로 입력하고, 합계금액이 공급가액과 세액의 합과 일치하는지 확인하세요. 작성일자 오류는 화면에 표시된 발행 가능 날짜를 확인합니다. 발행 후에는 [발행 내역 조회](/docs/invoice/sales/management/history)에서 상태를 확인하세요. 전송 중인 건은 완료 결과를 확인한 뒤 후속 작업을 진행합니다. # 세금계산서 반복발행 Source: https://docs.bolta.io/docs/invoice/sales/issue/recurring 정해진 날짜마다 같은 세금계산서를 자동으로 발행합니다. ## 반복 일정 설정 반복발행 기능은 라이트 플랜부터 제공합니다. \[세금계산서] > \[반복발행]에서 \[새로 등록하기]를 클릭하고, 고객과 담당자를 선택하세요. ![세금계산서 메뉴의 반복발행과 목록 화면 오른쪽 위 새로 등록하기 버튼이 강조된 화면](https://mintcdn.com/bolta/Jbpk2k-HBXLnWJok/images/docs/invoice-sales-issue-recurring__menu.png?fit=max\&auto=format\&n=Jbpk2k-HBXLnWJok\&q=85\&s=36bf40eab53f6d39864fad6c9943f1d1) 1. \[시작]에서 첫 회차를 작성할 달을 선택하세요. 2. \[종료]에서 반복을 끝낼 시점을 정하세요. 3. \[작성일자]에서 매월 작성할 날짜를 선택하세요. 볼타가 작성일자 오전 8시에 세금계산서를 자동으로 발행합니다. 작성일자와 다른 날 발행하려면 \[고급 설정]에서 발행일자를 따로 설정하세요. ![반복 일정에서 작성일자 매월 25일, 고급 설정에서 작성일자 다음 달 10일 발행을 선택한 화면](https://mintcdn.com/bolta/Jbpk2k-HBXLnWJok/images/docs/invoice-sales-issue-recurring__schedule.png?fit=max\&auto=format\&n=Jbpk2k-HBXLnWJok\&q=85\&s=2405460fd79db246f0cbe8fb3d4b06c9) 오른쪽 \[발행 일정]에서 회차별 발행일을 확인하세요. ## 품목 입력 품목은 [간편발행](/docs/invoice/sales/issue/quick)과 같은 방식으로 입력합니다. \[변수 입력]을 사용하면 품목명이나 비고에 발행 건마다 다른 날짜를 넣을 수 있습니다. ## 등록과 승인 \[미리보기]에서 내용을 확인하고 \[반복발행 등록하기]를 클릭하세요. 발행 권한이 없다면 \[승인 요청하기]를 클릭하세요. 승인 권한이 있는 팀원이 승인하면 등록됩니다. 첫 발행일 전까지 승인하지 않으면 요청은 자동으로 취소됩니다. ## 발행 현황 확인 등록한 반복발행은 \[반복발행] 목록에서 확인하세요. ![반복발행 목록에서 거래처별 합계금액, 작성일자, 상태, 반복 종료일, 발행 횟수가 보이는 화면](https://mintcdn.com/bolta/Jbpk2k-HBXLnWJok/images/docs/invoice-sales-issue-recurring__list.png?fit=max\&auto=format\&n=Jbpk2k-HBXLnWJok\&q=85\&s=6ba1013ebf88c704be300efb210d84f6) 목록에서 항목을 클릭하면 반복발행 상세가 열립니다. \[반복발행 일정]에서 각 회차를 클릭하면 발행된 회차는 발행 결과를, 예정된 회차는 미리보기를 볼 수 있습니다. ![반복발행 상세에서 회차별 발행일자와 발행완료, 5일 후 발행, 발행예정 상태가 보이는 회차 표](https://mintcdn.com/bolta/Jbpk2k-HBXLnWJok/images/docs/invoice-sales-issue-recurring__detail.png?fit=max\&auto=format\&n=Jbpk2k-HBXLnWJok\&q=85\&s=b85285617614258941aeb18db63fb41d) ## 해제와 복사 더 이상 발행하지 않으려면 상세 화면에서 \[반복발행 해제]를 클릭하세요. 남은 발행 예정 건은 발행되지 않습니다. 같은 조건으로 새로 등록하려면 \[같은 설정으로 만들기]를 클릭하세요. # 세금계산서 예약발행 Source: https://docs.bolta.io/docs/invoice/sales/issue/schedule 미래 작성일자를 지정해 세금계산서 발행을 예약합니다. ## 발행 예약 라이트 플랜부터 예약발행을 이용합니다. \[세금계산서] > \[간편발행]에서 작성일자 옆 \[예약] 스위치를 켜세요. 오늘 이후의 작성일자를 선택하고 고객, 담당자, 품목을 입력하세요. \[미리보기]에서 예약 날짜와 내용을 확인하고 등록하세요. 예약한 세금계산서는 지정한 작성일자 오전 8시부터 발행을 진행합니다. 발행 결과는 \[발행 내역]에서 확인하세요. ## 예약 확인과 취소 \[세금계산서] > \[발행 내역]의 \[발행대기]에서 예약 내역을 확인하세요. 취소할 내역을 열고 \[예약취소]를 선택하세요. 취소한 내역은 \[발행취소]에서 확인합니다. ## 회사 정보가 변경된 경우 예약 후 회사 정보를 바꿨다면 기존 예약을 취소하고 변경한 정보로 다시 등록하세요. 같은 거래를 정기적으로 발행하려면 [반복발행](/docs/invoice/sales/issue/recurring)을 설정하세요. ## 여러 예약 취소 \[발행대기] 목록에서 대상 행을 선택하고 \[예약취소]를 클릭하세요. 확인 창의 처리 건수와 제외된 항목을 확인한 뒤 취소합니다. 승인대기 건은 예약취소 대신 \[발행 거절]로 처리하세요. # 입금 내역 관리 Source: https://docs.bolta.io/docs/invoice/sales/management/deposit-history 매출 거래에 입금 날짜와 금액을 연결합니다. ## 은행 입금 연결 \[재무·회계] > \[매출 내역]에서 거래의 \[입금 내역] 추가 버튼을 클릭하세요. 세금계산서 발행 내역이나 고객 상세에서도 입금을 연결합니다. 연동한 은행 거래 중 금액과 적요를 확인해 입금을 선택하세요. 은행 거래 조회에는 입금 내역 조회 권한이 필요합니다. ![매출 거래의 입금 내역 추가 버튼](https://mintcdn.com/bolta/m0K_FW6YoHBhsTYx/images/docs/guide-revenues.png?fit=max\&auto=format\&n=m0K_FW6YoHBhsTYx\&q=85\&s=6593757e5f48e0f420e4ecbb37c7e405) ## 직접 입력 \[직접 입력]에서 실제 입금 날짜와 금액을 입력하고 저장하세요. 계좌를 연동하지 않은 거래도 직접 기록합니다. ## 연결 결과 확인 입금 정보를 열어 연결한 날짜와 금액을 확인하세요. 일부 금액만 입금했다면 남은 미수금을 확인하고 후속 입금을 추가하세요. 잘못 연결한 내역은 연결을 해제한 뒤 올바른 거래로 다시 연결하세요. 반복되는 입금 연결은 [AI 입금 매칭](/docs/accounting/payment-matches)에서 검토합니다. # 발행내용 변경 Source: https://docs.bolta.io/docs/invoice/sales/management/edit 발행 전 세금계산서의 내용을 변경하는 방법을 안내합니다. ## 변경할 내역 선택 \[세금계산서] > \[발행 내역]에서 변경할 내역을 열고 \[내용 변경]을 클릭하세요. 간편발행이나 발행정보 요청서로 작성한 세금계산서 중 승인대기 또는 발행대기 상태에서 변경합니다. 수정세금계산서는 이 기능의 대상이 아닙니다. ![발행 전 내역의 내용 변경 버튼](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-invoice-pending-member.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=07d4e53ea7231ec3cdaae71627d9a72b) ## 정보 변경 거래처, 작성일자, 품목과 금액을 고치고 확인 화면에서 변경한 정보를 검토하세요. 변경을 확정하기 전에 발행 여부도 확인하세요. 발행 권한이 있는 담당자가 내용을 변경하면 발행으로 이어집니다. 이미 발행한 세금계산서를 고치려면 [수정세금계산서 발행](/docs/invoice/sales/issue/amend)을 이용하세요. # 세금계산서 이메일 재전송 Source: https://docs.bolta.io/docs/invoice/sales/management/email-resend 발행한 세금계산서를 지정한 이메일로 다시 보냅니다. ## 재전송할 내역 선택 \[세금계산서] > \[발행 내역]의 \[발행완료]에서 세금계산서를 선택하세요. 상세 화면 아래의 \[이메일 재전송]을 클릭하세요. ## 수신 이메일 입력 이메일을 입력하고 \[추가]를 클릭하세요. 한 번에 최대 5개 주소를 추가합니다. 이전에 보낸 이메일이 표시되면 해당 주소를 선택해 추가해도 됩니다. 수신 주소를 확인하고 \[재전송하기]를 클릭하세요. 주소를 추가하면 버튼에 전송할 주소 수를 함께 표시합니다. 이메일 재전송은 세금계산서 원본에 기재한 이메일을 변경하지 않습니다. # 홈택스 매출세금계산서 가져오기 Source: https://docs.bolta.io/docs/invoice/sales/management/fetch-external 홈택스의 매출세금계산서를 볼타에 연결합니다. ## 홈택스 연결 홈택스 내역 연동은 라이트 플랜부터 이용합니다. \[설정] > \[매출∙매입 내역 연동]에서 매출 세금계산서를 연결하세요. 홈택스 조회에 사용할 사업자 공동인증서가 필요합니다. ![매출 세금계산서 연동 상태](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-data-sync.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=f0357194f14c4f3ef63afd89a499a39d) ## 가져온 내역 확인 \[재무·회계] > \[매출 내역]에서 조회 기간과 거래 유형을 선택하세요. 볼타에서 발행한 내역과 홈택스에서 가져온 내역을 함께 확인합니다. 내역을 열어 공급자, 공급받는자, 작성일자, 금액을 확인하세요. 최신 내역을 가져오려면 화면 상단의 \[내역 가져오기]를 이용하세요. [매출 내역 조회](/docs/accounting/revenues)에서 입금 내역과 라벨 관리 방법을 확인하세요. # 발행 내역 조회와 일괄 관리 Source: https://docs.bolta.io/docs/invoice/sales/management/history 상태별 발행 내역, 변경 이력과 담당자를 확인하고 관리 정보를 일괄 수정합니다. ## 발행 내역 찾기 \[세금계산서] > \[발행 내역]을 여세요. 조회 기간과 거래처 또는 사업자등록번호로 검색하고 발행 상태 탭을 선택하세요. 작성일자, 생성일시 또는 발행일시 정렬로 순서를 바꿉니다. | 탭 | 확인할 내용과 다음 행동 | | - | - | | 발행대기 | 승인대기는 담당자 승인, 발행예정은 예약일 확인, 전송중은 처리 결과 확인 | | 발행완료 | 원본 확인, 이메일 재전송, PDF 저장, 수정발행 | | 발행실패 | 실패 사유 확인 후 입력 정보나 인증서 수정 | | 발행취소 | 거절된 요청과 취소한 예약 확인 | ![발행된 세금계산서의 상세 정보](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-invoice-detail.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=01207b52b46baf124d97fc5851e753bb) ## 상세 내용과 변경 이력 내역을 열고 \[상세 내용]에서 거래처, 금액, 입금 내역, 라벨과 담당자를 확인하세요. \[담당자]는 볼타에서 거래를 관리할 팀원을 지정하는 항목입니다. 거래처의 이메일 수신 담당자와 구분하세요. \[변경 이력]에서는 처리자와 처리 시점을 확인합니다. 수정세금계산서가 연결된 내역은 \[수정발행 이력]에서 원본과 수정분을 확인하세요. ## 목록에 표시할 열 변경 \[컬럼 변경]을 클릭해 필요한 열과 순서를 설정하세요. 발행실패 목록에서는 \[실패 사유]를 함께 확인합니다. ## 관리 정보 일괄 수정 1. 대상 행을 선택하고 하단의 \[수정]을 클릭하세요. 2. 입금 내역, 라벨, 메모와 담당자 중 바꿀 항목을 지정하세요. 나머지는 \[기존 항목 유지]로 두세요. 3. 라벨과 메모는 \[모두 바꾸기] 또는 \[모두 제거]를 선택합니다. 담당자를 바꾸려면 \[모두 바꾸기]에서 팀원 또는 담당자 미지정을 선택하세요. 4. \[수정]을 클릭하고 결과를 확인하세요. 발행 전 거래처나 금액을 바꾸려면 [발행내용 변경](/docs/invoice/sales/management/edit)을 이용하세요. 여러 건의 [승인과 거절](/docs/invoice/sales/issue/approval), [예약취소](/docs/invoice/sales/issue/schedule)는 각각의 처리 버튼을 사용합니다. ## 발행실패 대응 \[발행실패]에서 실패 사유를 확인하세요. 인증서 문제라면 [공동인증서 관리](/docs/setting/general/certificate-registration)에서 갱신하고, 거래 정보 문제라면 고객과 작성 내용을 수정하세요. 다시 작성할 때는 [이전 내역 불러오기](/docs/invoice/sales/issue/load)를 이용합니다. 실패한 건과 발행 완료한 건을 구분한 뒤 재등록하세요. PDF 생성에 실패했을 때는 발행 상태를 먼저 확인하고 [다운로드 안내](/docs/invoice/sales/management/print-and-pdf-export)에 따라 처리합니다. # 세금계산서 라벨 Source: https://docs.bolta.io/docs/invoice/sales/management/label 업무 기준에 따라 세금계산서를 분류합니다. ## 라벨 선택 \[세금계산서] > \[발행 내역]의 \[라벨] 열을 클릭하세요. 기존 라벨을 검색해 선택하거나 새 라벨을 추가하세요. 상세 화면의 \[라벨]에서도 변경합니다. ![상세 화면에 선택한 정기 거래 라벨](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-invoice-detail.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=01207b52b46baf124d97fc5851e753bb) ## 라벨 변경과 관리 선택한 라벨을 클릭해 다른 라벨로 바꾸세요. 라벨 목록의 관리 메뉴에서 이름을 수정하거나 삭제하세요. 같은 워크스페이스에서 조회 권한이 있는 팀원과 라벨을 공유합니다. # 세금계산서 메모 Source: https://docs.bolta.io/docs/invoice/sales/management/memo 세금계산서에 내부 관리용 메모를 남깁니다. ## 메모 작성 \[세금계산서] > \[발행 내역]에서 세금계산서를 선택하세요. 상세 화면의 \[메모]에서 추가 또는 \[수정]을 선택하고 내용을 저장하세요. ![세금계산서 상세 화면의 메모](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-invoice-detail.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=01207b52b46baf124d97fc5851e753bb) 작성한 메모는 거래를 관리할 때 확인합니다. 거래처에 전달할 세금계산서 비고와 구분해 작성하세요. # 세금계산서 PDF 저장과 출력 Source: https://docs.bolta.io/docs/invoice/sales/management/print-and-pdf-export 세금계산서 PDF를 내려받고 출력합니다. ## PDF 다운로드 \[세금계산서] > \[발행 내역]에서 세금계산서를 선택하세요. 문서 아래의 \[PDF 다운로드]를 클릭하세요. ![세금계산서 상세 화면의 PDF 다운로드 버튼](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-invoice-detail.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=01207b52b46baf124d97fc5851e753bb) 내려받은 PDF에서 공급자, 공급받는자, 작성일자, 금액을 확인하세요. 출력하려면 PDF를 연 프로그램의 인쇄 기능을 사용하세요. XML 파일이 필요하면 \[XML다운로드]를 선택하세요. ## 다운로드가 되지 않을 때 발행이 끝나지 않은 문서는 발행 완료 후 내려받으세요. PDF를 만드는 데 시간이 걸린다는 안내는 잠시 후 다시 시도합니다. 문서 정보가 부족하거나 문서를 찾을 수 없다는 안내가 나오면 해당 내역과 조회 권한을 확인하세요. 거래처는 수신 알림의 링크에서 [세금계산서 조회](/docs/invoice/recipient-view)를 진행해 PDF와 XML을 내려받습니다. # 워크스페이스 추가 Source: https://docs.bolta.io/docs/onboarding/add-more-workspace 다른 사업자를 관리할 워크스페이스를 만듭니다. ## 워크스페이스 생성 화면 왼쪽 위의 회사명을 클릭하고 \[신규 워크스페이스 생성]을 선택하세요. 추가할 사업자등록번호를 입력하고 회사 정보를 확인하세요. ![신규 워크스페이스의 회사 정보 입력](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-onboarding-company.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=4dc0c2791d126cd1ebc0981169aff2b6) 기존 워크스페이스에 참여하려면 해당 워크스페이스의 관리자에게 [팀원 초대](/docs/setting/team/invitation)를 요청하세요. 워크스페이스별로 구독과 팀원을 관리합니다. 무료체험을 사용하지 않은 워크스페이스에서는 [무료체험 시작하기](/docs/onboarding/free-trial)를 진행합니다. ## 워크스페이스 전환 왼쪽 위 회사명을 클릭하고 참여 중인 워크스페이스를 선택하세요. 작업 전에 표시된 회사명이 발행하거나 조회할 사업자와 일치하는지 확인합니다. 초대받은 회사가 보이지 않으면 초대받은 이메일과 초대 수락 여부를 확인하세요. # 공동인증서 등록 Source: https://docs.bolta.io/docs/onboarding/certificate-registration 세금계산서 발행에 사용할 사업자 공동인증서를 등록합니다. ## 인증서 준비 세금계산서 발행에는 사업자 범용 또는 전자세금용 공동인증서를 사용합니다. 워크스페이스에 인증서를 등록하면 발행 권한이 있는 팀원이 함께 사용합니다. ## 인증서 등록 1. \[설정] > \[공동인증서 관리]로 이동하세요. 2. \[인증서 추가]를 클릭하세요. 3. 사용할 인증서를 선택하고 비밀번호를 입력하세요. 4. \[등록하기]를 클릭하세요. ![공동인증서 관리와 등록된 인증서의 만료일](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-certificates.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=f7953c3175295f57b4154fd16d01b2c4) 컴퓨터의 인증서를 불러오려면 인증서 선택 창에서 Bolta Agent를 설치하고 실행하세요. 브라우저가 로컬 네트워크 접근을 요청하면 허용하세요. 파일로 등록하려면 \[직접 파일 업로드]를 선택하세요. 등록을 마치면 인증서 종류와 만료일을 확인하세요. 갱신한 인증서는 [공동인증서 재등록](/docs/setting/general/certificate-registration) 절차에 따라 등록합니다. # 회사 정보 등록 Source: https://docs.bolta.io/docs/onboarding/company-registration 사업자등록번호와 회사 정보를 확인하고 워크스페이스를 만듭니다. ## 사업자등록번호 입력 가입 후 회사 정보 등록 단계에서 사업자등록번호를 입력하고 \[다음으로]를 클릭하세요. 이미 등록된 사업자는 화면 안내에 따라 인증하거나 기존 워크스페이스에 참여하세요. ## 회사 정보 확인 회사명과 대표자명을 확인하고 사업장 주소, 업태, 종목을 입력하세요. 이 정보는 세금계산서의 공급자 또는 공급받는자 정보에 사용합니다. ![사업자등록번호와 회사 정보를 입력하는 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-onboarding-company.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=4dc0c2791d126cd1ebc0981169aff2b6) \[다음으로]를 클릭해 등록을 진행하세요. 등록한 정보는 \[설정] > \[사업자 정보]에서 확인합니다. 발행에 사용할 인증서는 [공동인증서 등록](/docs/onboarding/certificate-registration)을 참고하세요. ## 이미 등록된 사업자로 참여 공동인증서 인증 화면이 나타나면 표시된 회사 정보를 확인한 뒤 해당 사업자의 인증서로 인증하세요. \[워크스페이스 참여 안내]가 나타나면 권한이 있는 팀원에게 초대를 요청하세요. 초대받은 이메일로 로그인한 뒤 \[워크스페이스 참여] 목록에서 회사를 선택하고 \[참여하기]를 클릭하세요. [팀원 초대](/docs/setting/team/invitation)에서 초대와 참여 절차를 확인합니다. # 무료체험 시작하기 Source: https://docs.bolta.io/docs/onboarding/free-trial 스탠다드 플랜을 1주 동안 체험합니다. ## 무료체험 시작 회사 정보를 등록한 뒤 나타나는 \[무료체험 시작하기] 안내에서 \[무료체험 시작]을 클릭하세요. 무료체험은 워크스페이스별로 한 번 제공하며, 7일 동안 스탠다드의 발행과 연동 기능을 이용합니다. 무료체험은 1명만 이용하며, 팀원 초대와 권한 관리는 포함하지 않습니다. ## 체험 종료 후 플랜 선택 \[설정] > \[구독 및 결제]에서 종료일을 확인하세요. 종료일까지 남은 기간이 3일 이내이면 종료 안내를 표시합니다. 체험 후에는 이용할 플랜을 선택하세요. 유료 플랜을 계속 이용하려면 결제 수단을 등록하고 구독합니다. [플랜 결제 및 관리](/docs/setting/general/billing-subscription)에서 요금과 변경 조건을 확인하세요. # 이메일로 시작하기 Source: https://docs.bolta.io/docs/onboarding/getting-started-email 업무용 이메일을 인증하고 볼타 계정을 만듭니다. ## 이메일로 가입 1. [볼타 로그인](https://app.bolta.io/login)에서 \[회원가입]을 클릭하세요. 2. 업무에 사용할 이메일을 입력하고 \[인증 요청]을 클릭하세요. 3. 받은 이메일에서 인증번호 6자리를 확인해 입력하세요. 4. 비밀번호, 비밀번호 확인, 사용자 이름을 입력하세요. 5. 개인정보 수집 및 이용동의와 이용약관을 확인하고 동의한 뒤 \[회원가입]을 클릭하세요. 인증 메일을 받지 못했다면 입력한 주소와 스팸함을 확인하세요. 화면에 보안 확인 안내가 표시되면 확인을 마친 뒤 인증을 요청하세요. 가입을 마치면 [회사 정보 등록](/docs/onboarding/company-registration)을 진행하세요. 팀원 초대를 받았다면 초대받은 이메일로 가입하고 초대 링크에서 참여하세요. ![이메일 회원가입 입력 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-email-signup.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=9546863ff9fa3913babea0b3cee03e15) ## 이메일로 로그인 이메일과 비밀번호를 입력하고 \[로그인]을 클릭하세요. 비밀번호를 잊었다면 \[비밀번호 찾기]에서 재설정하세요. ![이메일 로그인과 회원가입 버튼](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-login.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=7c3e476f4c32523bbabbb1ea791e91ca) ## 비밀번호 찾기 로그인 화면에서 \[비밀번호 찾기]를 클릭하세요. 가입한 이메일로 인증을 마친 뒤 \[다음]을 클릭합니다. 새 비밀번호와 확인 값을 입력하고 \[비밀번호 재설정]을 클릭하세요. 새 비밀번호로 다시 로그인합니다. # 구글로 시작하기 Source: https://docs.bolta.io/docs/onboarding/getting-started-google Google 계정으로 가입하고 로그인합니다. ## Google 계정으로 로그인 1. [볼타 로그인](https://app.bolta.io/login)에서 \[Google로 시작하기]를 클릭하세요. 2. 업무에 사용할 Google 계정을 선택하세요. 3. 처음 가입했다면 이름과 약관 동의를 확인하고 [회사 정보 등록](/docs/onboarding/company-registration)을 진행하세요. ![Google로 시작하기 버튼이 있는 로그인 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-login.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=7c3e476f4c32523bbabbb1ea791e91ca) 팀원 초대를 받았다면 초대받은 이메일과 같은 Google 계정으로 로그인하세요. 가입한 뒤에도 \[Google로 시작하기]로 로그인합니다. # 업무별 이용 가이드 Source: https://docs.bolta.io/docs/overview 발행, 입금 확인, 비용 지급과 연동에 필요한 가이드를 찾으세요. ## 처음 이용한다면 [계정 가입](/docs/onboarding/getting-started-email) 또는 [Google 로그인](/docs/onboarding/getting-started-google)을 진행하세요. [회사 정보](/docs/onboarding/company-registration)와 [공동인증서](/docs/onboarding/certificate-registration)를 등록한 뒤 사용할 기능을 선택합니다. 팀원으로 참여한다면 [초대 수락](/docs/setting/team/invitation)부터 진행하세요. 여러 사업자를 관리한다면 [워크스페이스 추가와 전환](/docs/onboarding/add-more-workspace)을 이용합니다. ## 하려는 업무로 찾기 | 하려는 일 | 시작할 가이드 | | - | - | | 세금계산서 한 건 발행 | [간편발행](/docs/invoice/sales/issue/quick) | | 엑셀로 여러 건 발행 | [대량발행](/docs/invoice/sales/issue/bulk) | | 정기 거래와 미래 날짜 발행 | [반복발행](/docs/invoice/sales/issue/recurring), [예약발행](/docs/invoice/sales/issue/schedule) | | 거래처의 발행 승인 받기 | [역발행 요청](/docs/invoice-issuance-request/introduce) | | 발행 결과 확인과 정정 | [발행 내역](/docs/invoice/sales/management/history), [수정발행](/docs/invoice/sales/issue/amend) | | 현금영수증 발행과 취소 | [간편발행](/docs/cash-receipt/issue), [발행 내역](/docs/cash-receipt/history) | | 매출과 입금 연결 | [AI 입금 매칭](/docs/accounting/payment-matches), [규칙 관리](/docs/accounting/matching-rules) | | 매출, 매입과 계좌 조회 | [내역 연동](/docs/setting/general/data-sync), [입출금 내역](/docs/bank/transaction-management) | | 미수금 입금 요청 | [미수금 요청](/docs/deposit-request/request-outstanding), [재안내와 완료 처리](/docs/deposit-request/management) | | 비용 승인과 지급 관리 | [지급 양식](/docs/payment-request/template), [지급 요청](/docs/payment-request/write), [이체 결과](/docs/payment-request/payment-history) | | 팀 알림과 파일 연동 | [슬랙](/docs/integrations/slack), [구글 스프레드시트](/docs/integrations/spreadsheet) | | API 연동 운영 | [API 키](/docs/developer-center/api-key), [로그](/docs/developer-center/api-log), [포인트 결제](/docs/developer-center/billing) | ## 거래처로 링크를 받았다면 * 세금계산서를 받았다면 [조회와 다운로드](/docs/invoice/recipient-view)를 진행하세요. * 역발행 승인 요청을 받았다면 [인증서 준비](/docs/invoice-issuance-request/certificate) 후 [모바일 승인](/docs/invoice-issuance-request/approval)을 진행하세요. * 입금 요청을 받았다면 [계좌와 첨부 서류](/docs/deposit-request/recipient-view)를 확인하세요. * 발행정보 제출을 요청받았다면 [요청서 작성](/docs/invoice/sales/issuance-request-form)을 확인하세요. ## 필요한 메뉴가 보이지 않을 때 먼저 선택한 워크스페이스와 계정을 확인하세요. 플랜 기능은 [구독 및 결제](/docs/setting/general/billing-subscription)에서, 계정별 허용 작업은 [권한 관리](/docs/setting/team/role-management)에서 확인합니다. 권한을 직접 바꿀 수 없다면 관리자에게 필요한 업무를 알려주세요. # 예산 관리하기 Source: https://docs.bolta.io/docs/payment-request/budget 지급 요청에 사용할 예산과 사용 금액을 관리합니다. ## 예산 등록 예산 관리 권한이 있는 팀원이 \[지급요청] > \[예산 관리]에서 \[예산 만들기]를 클릭하세요. 예산명과 총 예산 금액을 입력하고 \[저장]을 클릭하세요. 금액 한도를 두지 않으려면 \[한도 없음]을 켜세요. ![예산명과 총 예산 금액 입력](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-payment-budget-new.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=b81cdf71d6ec5f38f0d6a30328de9a2e) ## 지급 양식에 연결 [지급 양식](/docs/payment-request/template)에 예산 항목을 추가하세요. 지급 요청에서 해당 예산을 선택해 사용합니다. \[사용중]에서 사용 금액과 남은 예산을 확인하세요. 한도가 없는 예산은 사용 금액을 표시합니다. ## 수정과 보관 사용하지 않은 예산은 관리 메뉴에서 수정하거나 삭제하세요. 지급 요청에 사용한 예산은 \[보관]으로 옮깁니다. 보관한 예산은 \[보관함]에서 확인하세요. ## 보관한 예산 확인 보관한 예산은 새 지급 요청에서 선택하지 않습니다. \[보관함]에서는 사용 금액을 확인하며, 보관한 예산은 수정하거나 삭제할 수 없습니다. 계속 사용할 예산인지 확인한 뒤 보관하세요. # 이체 내역 관리하기 Source: https://docs.bolta.io/docs/payment-request/payment-history 승인이 끝난 지급 요청을 확인하고 이체 결과를 기록합니다. ## 이체할 내역 확인 \[지급요청] > \[지급요청 목록]의 \[이체 필요]에서 최종 승인을 마친 요청을 확인하세요. 지급처, 계좌와 금액, 요청일자를 확인하고 은행에서 이체하세요. ## 이체 결과 기록 이체를 마친 내역을 선택해 \[이체완료]로 처리하세요. 지급하지 않을 요청은 이체 거절로 처리합니다. 여러 건을 선택하면 한 번에 완료하거나 거절할 수 있습니다. 이체 완료 처리는 볼타에 이체 결과를 기록하는 기능입니다. 완료한 요청은 \[내역]에서 확인하세요. ## 대량이체 양식 \[이체 필요]에서 대상 내역을 선택하고 \[대량이체 양식]을 클릭하세요. 신한은행 또는 기업은행을 선택하면 계좌와 금액이 채워진 파일을 내려받습니다. 은행의 대량이체 화면에서 파일과 이체 내용을 확인한 뒤 진행하세요. ## 이체 자료 내려받기 \[이체 필요]에서 대상 행을 선택하고 \[내려받기]를 클릭하세요. 요청자, 거래처, 계좌, 금액과 지급 요청일을 엑셀로 확인합니다. 은행 업로드용 파일은 별도의 \[대량이체 양식]을 이용하세요. 이체를 거절할 때는 \[즉시 거절] 또는 \[거절 사유 작성]을 선택합니다. 사유를 남기면 요청자가 내역에서 확인하고 재요청할 때 참고합니다. # 지급요청서 양식 관리 Source: https://docs.bolta.io/docs/payment-request/template 지급 요청에 사용할 양식을 만들고 관리합니다. ## 양식 만들기 지급 요청 관리 권한이 있는 팀원이 \[지급요청] > \[지급 양식 만들기]에서 \[양식 만들기]를 클릭하세요. 양식의 제목과 설명을 입력하세요. ![지급 양식의 입력 항목과 순서 설정](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-payment-template-new.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=1825fe190f0932f1c2888706f328166d) ## 입력 항목 설정 \[항목 추가]로 필요한 항목을 등록하고 답변 유형을 고르세요. 필수로 받아야 하는 항목은 \[필수]를 선택하세요. | 유형 | 용도 | | - | - | | 단답형 | 짧은 텍스트 | | 장문형 | 긴 텍스트 | | 드롭다운 | 여러 선택지 중 하나 선택 | | 첨부파일 | 문서와 사진 첨부 | | 예산 | 등록한 예산 선택 | 예산 항목을 사용하려면 [예산 관리](/docs/payment-request/budget)에서 예산을 먼저 등록하세요. 오른쪽 \[양식 순서]에서 항목을 끌어 순서를 변경하세요. ## 미리보기와 저장 \[미리보기]에서 기본 지급 정보와 추가 항목을 확인하고 \[양식 만들기]를 클릭하세요. 등록한 양식은 목록의 관리 메뉴에서 수정하거나 삭제합니다. ## 양식 변경이 기존 요청에 미치는 영향 목록의 \[수정하기]로 양식을 열어 입력 항목과 순서를 변경하고 저장하세요. \[삭제하기]를 선택하면 확인 창에서 삭제를 확정합니다. 양식을 삭제해도 해당 양식으로 작성한 요청 내용은 변경하지 않습니다. 거절된 요청을 다시 작성할 때 이전 양식을 쓸 수 없다면 \[양식 변경하기]에서 현재 양식을 선택하세요. # 지급 요청하기 Source: https://docs.bolta.io/docs/payment-request/write 지급 양식을 작성하고 담당자의 승인을 받습니다. ## 지급 정보 작성 \[지급요청] > \[지급요청 목록]에서 \[지급 요청]을 클릭하고 양식을 선택하세요. 양식이 없으면 [지급 양식 만들기](/docs/payment-request/template)에서 먼저 등록하세요. 거래처, 지급 금액과 계좌를 입력하고 양식의 추가 항목을 작성하세요. 은행과 계좌번호로 예금주를 조회하세요. 조회에 실패하면 예금주를 직접 입력하고 계좌 정보를 확인하세요. ## 승인 절차 설정 진행 절차에 승인 담당자를 지정하세요. 승인 단계는 최대 4단계이며, 지급 요청 승인과 거절 권한이 있는 팀원을 지정합니다. 내용을 확인하고 \[작성]을 클릭하세요. ## 승인과 거절 \[승인 필요]에서 받은 요청과 보낸 요청을 확인하세요. 다음 승인 차례인 요청은 \[내 승인 필요]로 표시합니다. 요청을 열어 지급 정보와 첨부 내용을 검토한 뒤 \[승인]을 클릭하세요. 승인하면 다음 담당자에게 넘어가고, 최종 승인이 끝나면 \[이체 필요]로 이동합니다. \[거절]에서는 사유를 작성하거나 즉시 거절을 선택합니다. ## 거절된 요청 다시 작성 요청자는 \[내역]에서 거절된 문서를 열고 \[재요청]을 클릭하세요. 거절 사유를 확인하고 내용을 수정한 뒤 다시 작성하세요. 기존 양식이 수정되거나 삭제됐다면 사용할 양식을 다시 선택하세요. 승인 후에는 [이체 내역 관리](/docs/payment-request/payment-history)를 진행하세요. ## 이전 지급 요청 불러오기 작성 화면의 \[이전 내역 불러오기]를 클릭하세요. 거래처를 검색해 이전 요청을 \[선택]한 뒤 계좌, 금액, 지급요청일과 승인 담당자를 확인하세요. 현재 사용할 수 없는 은행이나 양식은 다시 선택하고 입력합니다. \[지급요청일]에서 특정 날짜에 지급하려면 \[당일]을, 해당 날짜까지 지급하려면 \[\~까지]를 선택하세요. 첨부파일 업로드에 실패하면 업로드를 다시 마친 뒤 작성하세요. ## 승인 전 내용 변경과 삭제 아직 첫 승인 단계인 요청은 작성자가 상세 화면의 관리 메뉴에서 내용을 변경합니다. \[내용 변경]을 눌러 항목을 수정하고 \[저장]을 클릭하세요. 변경사항을 버리려면 \[변경사항 초기화]를 선택합니다. 삭제 메뉴가 표시되는 요청은 관리 메뉴에서 \[문서 삭제]를 선택하고 확인하세요. 첫 단계의 작성자 또는 승인 가능한 담당자에게 삭제 메뉴를 표시합니다. 승인이 진행된 요청은 현재 상태와 담당자를 먼저 확인하세요. 상세 화면의 \[활동 이력] 탭에서 승인, 거절과 변경 내용을 확인하세요. 변경 이력이 있는 항목은 수정 전후 내용을 비교합니다. # 개인정보처리방침 Source: https://docs.bolta.io/docs/privacy-policy (주)볼타코퍼레이션(이하 ‘회사’)은 관련 법령에 따라 ‘볼타’(이하 ‘서비스’)를 이용하는 이용자의 개인정보를 보호하고, 이와 관련한 고충을 신속하고 원활하게 처리하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ## **제1조 (개인정보의 처리목적)** 회사는 개인정보를 다음의 목적을 위해 처리합니다. 개인정보는 다음의 목적 이외의 용도로는 사용되지 않으며 이용 목적이 변경될 시에는 개인정보보호법에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다. 1. 회원가입 및 관리 * 회원의 가입의사 확인, 본인인증, 회원자격 유지 및 관리, 서비스 부정이용 방지, 사용 관련 안내, 각종 고지 및 통지, 채용 및 웹사이트 이용 관련 연락 등의 목적으로 개인정보를 처리합니다. 2. 비회원 관리 * 각종 공지·통지사항 전달, 본인 확인, 제품 및 서비스 제공, 실명여부 확인 등의 목적으로 개인정보를 처리합니다. 3. 고객 상담 및 문의 * 제품 및 서비스 상담, 고객 불만 사항 처리, 문의 접수 및 처리 이력관리, 본인 확인, 실명여부 확인, 사실조사를 위한 연락·통지, 처리결과 통보 등의 목적으로 개인정보를 처리합니다. 4. 제품 및 서비스 * 제품 및 서비스 제공, 이용자 식별, 본인 여부 확인, 콘텐츠 제공, 서비스 환경의 유지·관리·개선, 콘텐츠 제공, 맞춤 서비스 제공, 홈택스 연동을 통한 세금계산서 정보 조회의 목적으로 개인정보를 처리합니다. 5. 요금 결제 및 환불 * 구매 및 요금결제·정산, 포인트 적립 및 사용, 계약서·청구서 발송, 세금계산서·현금영수증 발행, 결제내역 취소 및 환불처리, 채권추심 등의 목적으로 개인정보를 처리합니다. 6. 홍보 및 마케팅 * 신규 상품 및 서비스 안내, 상품 및 서비스 추천, 뉴스레터 발행, 웨비나/세미나 운영, 맞춤형 광고 제공, 이벤트 및 광고성 정보 제공 및 참여기회 제공, 인구통계학적 특성에 따른 서비스 제공 및 광고 게재, 접속빈도 파악 또는 회원의 서비스 이용에 대한 통계 등의 목적으로 개인정보를 처리합니다. 이 경우 회사는 필요한 별도 동의를 받는 등 관련 법을 준수합니다. 7. 서비스 개선 및 개발 * 기존 서비스(제품) 개선, 신규 서비스(제품) 개발 및 맞춤 서비스 개발, 서비스 이용 통계 분석, 서비스 이용 환경 구축, 피드백 수집 및 활용 등의 목적으로 개인정보를 처리합니다. 8. 가명정보의 활용 * 통계작성, 과학적 연구, 공익적 기록보존 등을 위한 가명처리 및 가명정보의 활용 등의 목적으로 개인정보를 처리합니다. ## **제2조 (개인정보의 처리 및 보유 기간)** (1) 회사는 법령에 따른 개인정보 보유·이용기간 또는 이용자로부터 개인정보를 수집시에 동의 받은 개인정보 보유, 이용기간 내에서 개인정보를 처리, 보유합니다. (2) 회사는 이용자가 서비스를 탈퇴 또는 이용자격을 상실할 경우에는 별도의 요청이 없더라도 수집된 이용자의 정보를 지체없이 삭제 및 파기합니다. 다만, 회원 탈퇴 또는 이용자격 상실에도 불구하고 다음의 정보에 대해서는 아래의 이유로 보존합니다. 1. 관계 법령 위반에 따른 수사·조사 등이 진행중인 경우에는 해당 수사·조사 종료시까지 2. 서비스 이용에 따른 채권·채무관계 잔존시에는 해당 채권·채무관계 정산시까지 3. 재화 또는 서비스 제공 : 재화·서비스 공급완료 및 요금결제·정산 완료시까지 4. 기타 회원 탈퇴 시 동일한 이메일 주소를 사용한 재가입 방지, 부정 이용자의 재가입 방지 등 회사의 내부 정책을 위한 목적으로 이용자의 이름, 아이디, 이메일 주소, 전화번호 등에 대하여 회원탈퇴 후 1년간 (3) 전항에도 불구하고 다음의 정보에 대해서는 아래의 이유로 보존합니다. 1. 「전자상거래 등에서의 소비자 보호에 관한 법률」에 따른 표시․광고, 계약내용 및 이행 등 거래에 관한 기록 * 표시·광고에 관한 기록 : 6개월 * 계약 또는 청약철회, 대금결제, 재화 등의 공급기록 : 5년 * 소비자 불만 또는 분쟁처리에 관한 기록 : 3년 2. 「통신비밀보호법」 제41조에 따른 통신사실확인자료 보관 * 컴퓨터통신, 인터넷 로그기록자료, 접속지 추적자료 : 3개월 3. 부가가치세법 * 세금계산서, 영수증 등 거래내역 관련 정보: 5년 4. 상법 * 전표 또는 이와 유사한 서류에 포함된 개인정보 : 5년 5. 「전자(세금)계산서 시스템을 구축·운영하는 사업자가 지켜야 할 사항 및 표준 인증에 관한 고시」에 따른 기록 * 거래사실이 속하는 과세기간ㆍ과세연도에 대한 부가가치세ㆍ종합소득세ㆍ법인세 확정 신고를 한 날부터의 전자(세금)계산서 : 3년 ## **제3조 (처리하는 개인정보 항목)** 회사는 다음의 개인정보 항목을 수집하여 처리하고 있습니다. 1. 회원가입, 무료 체험 서비스 이용 및 유료 서비스 전환 시, 도입 문의 신청 접수시 수집사항 * (필수) 웹/모바일웹: 회사명, 사업자 유형, 직원 수, 담당자 정보(이름, 비밀번호, 이메일 (Google 계정 외), Google 이메일 (Google SSO 사용 시), 휴대전화번호, 소속, 하는일(직무)) 2. 유료서비스 이용시 수집사항 * 신용카드 결제 시 : 카드사명, 카드번호 마지막 4자리 등 신용카드정보, 거래 ID (billing key) * 계좌이체 시 : 예금주명, 계좌번호, 계좌보유은행 등 은행계좌정보, 거래 ID (billing key) 3. 고객 상담, 문의 접수시 수집사항 * (필수) 이름, 이메일 주소, 내부 식별자 (userID) 4. 신청 자료 제공시 수집사항 * (필수) 이름, 직책, 직무, 이메일 주소, 휴대전화번호 5. 서비스 이용과정에서 이용자가 입력, 수집하는 사항 * 사업자명(기업명), 사업자등록번호, 주소, 이름, 이메일, 휴대전화번호, 계좌번호, 계좌보유은행 * 주민등록번호 (수집 근거: 「개인정보 보호법」 제24조의2 제1항 제2호, 「부가가치세법」 제32조 및 같은 법 시행령 제68조에 따른 세금계산서 발급 및 조회 의무 이행 목적) 6. 서비스 이용과정에서 자동으로 생성, 수집되는 정보 * 이용자가 작성∙서명한 문서 관련 정보, 쿠키, 접속 로그, 방문기록, 고유 식별자, 광고 식별자, 브라우저 유형 및 설정, 기기 유형 및 설정, 운영체제, 통신사명, 모바일 네트워크 주소, IP주소, 비정상 종료 보고서, 시스템 활동, 요청날짜와 시간, 리퍼러URL ## **제4조 (개인정보처리의 위탁)** (1) 회사는 원활한 개인정보 업무처리를 위하여 다음과 같이 개인정보 처리업무를 위탁하고 있습니다. | 수탁업체 | 위탁업무 내용 | 개인정보의 보유 및 이용기간 | | - | - | - | | (주)채널코퍼레이션 | 고객 상담, 상담 업무 관리 및 분석 | 회원 탈퇴 시 혹은 위탁 계약 종료시까지 | | Amazon Web Services, Inc. | 클라우드 서비스 이용 | 회원 탈퇴 시 혹은 위탁 계약 종료시까지 | | 스티비 주식회사 | 이메일 발송 | 회원 탈퇴 시 혹은 위탁 계약 종료시까지 | | 네이버클라우드 주식회사 | 이메일 발송 | 회원 탈퇴 시 혹은 위탁 계약 종료시까지 | | (주)딥다이버스 | 고객 관리, 이메일 발송 | 회원 탈퇴 시 혹은 위탁 계약 종료시까지 | | 엔에이치엔클라우드(주) | 카카오 알림톡 발송 | 회원 탈퇴 시 혹은 위탁 계약 종료시까지 | | 토스페이먼츠 주식회사 | 결제 대행 | 회원 탈퇴 시 혹은 위탁 계약 종료시까지 | | (주)페이플 | 결제 대행 | 회원 탈퇴 시 혹은 위탁 계약 종료시까지 | (2) 회사는 위탁계약 체결시 개인정보 보호법 제26조에 따라 위탁업무 수행목적 외 개인정보 처리금지, 기술적·관리적 보호조치, 재위탁 제한, 수탁자에 대한 관리·감독, 손해배상 등 책임에 관한 사항을 계약서 등 문서에 명시하고, 수탁자가 개인정보를 안전하게 처리하는지를 감독하고 있습니다. 위탁업무의 내용이나 수탁자가 변경될 경우에는 지체없이 본 개인정보 처리방침을 통하여 공개하도록 하겠습니다. (3) 회사는 다음과 같이 개인정보 국외이전을 하고 있습니다. | 업체명 | 이전되는 국가 | 이전 일시 및 방법 | 정보관리 책임자 연락처 | 이전 목적 | 개인정보의 보유 및 이용 기간 | | - | - | - | - | - | - | | Google, Inc. | 미국 | 서비스 이용 시 암호화된 네트워크(TLS/SSL)를 통해 이전 | [googlekrsupport@google.com](mailto:googlekrsupport@google.com) | 회사 서비스 이용 형태를 분석하여 서비스 개선 | 제2조에 기재된 보유·이용 기간과 일치함 | | Microsoft Corporation | 미국 | 서비스 이용 시 암호화된 네트워크(TLS/SSL)를 통해 이전 | [clarityms@microsoft.com](mailto:clarityms@microsoft.com) | 회사 서비스 이용 형태를 분석하여 서비스 개선 | 제2조에 기재된 보유·이용 기간과 일치함 | | Mixpanel, Inc. | 미국 | 서비스 이용 시 암호화된 네트워크(TLS/SSL)를 통해 이전 | [security@mixpanel.com](mailto:security@mixpanel.com) | 회사 서비스 이용 형태를 분석하여 서비스 개선 | 제2조에 기재된 보유·이용 기간과 일치함 | ## **제5조 (개인정보의 파기)** (1) 회사는 개인정보 보유기간의 경과, 처리목적 달성 등 개인정보가 불필요하게 되었을 때에는 지체없이 해당 개인정보를 파기합니다. (2) 이용자로부터 동의받은 개인정보 보유기간이 경과하거나 처리목적이 달성되었음에도 불구하고 제2조 제3항에 기재된 다른 법령에 따라 개인정보를 계속 보존하여야 하는 경우에는 해당 개인정보를 별도의 데이터베이스(DB)로 옮기거나 보관장소를 달리하여 보관합니다. (3) 개인정보 파기의 절차 및 방법은 다음과 같습니다. 1. 파기절차: 회사는 파기 사유가 발생한 개인정보를 선정하고, 회사의 개인정보 보호책임자의 승인을 받아 개인정보를 파기합니다. 2. 파기방법: 회사는 전자적 파일 형태로 기록 저장된 개인정보는 기록을 재생할 수 없도록 파기하며, 종이 문서로 기록 · 저장된 개인정보는 분쇄기로 분쇄하거나 소각하여 파기합니다. ## **제6조 (미이용자의 개인정보 파기 등에 관한 조치)** (1) 회사는 이용자의 사업주가 무료 체험 서비스 이용 완료 후 볼타 도입에 대한 추가 내부 검토, 도입 결정 보류 등으로 탈퇴 혹은 삭제 요청을 하지 않는 경우, 이용자의 개인정보를 무료 체험 종료일로부터 1년간 보관합니다. (2) 1년간 볼타 재사용, 유료 구독 전환, 도입 재검토 관련 요청이 인입되지 않은 경우, 이용자의 정보를 파기 하고 있습니다. (3) 회사는 개인정보 파기 30일 전까지 개인정보가 파기되는 사실, 기간 만료일 및 파기되는 개인정보의 항목을 이메일, 문자 등으로 이용자에게 통지 가능한 방법으로 알리고 있습니다. (4) 개인정보의 파기를 원하지 않으시는 경우, 기간 만료 전 회사에 연락해 주시기 바랍니다. ## **제7조 (이용자와 법정대리인의 권리, 의무 및 행사 방법)** (1) 이용자는 회사에 대해 언제든지 개인정보 열람, 정정, 삭제, 처리정지 요구 등의 권리를 행사할 수 있습니다. (2) 제1항의 권리 행사는 회사에 대해 ‘개인정보 보호법’ 시행령 제41조 제1항에 따라 서면, 전자우편, 채팅 상담 등을 통하여 하실 수 있으며, 회사는 이에 따라 지체없이 조치하겠습니다. (3) 권리 행사는 이용자의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수도 있습니다. 이 경우, ‘개인정보 처리 방법에 관한 고시 (제2025-5호)’ 별지 제11호 서식에 따른 위임장을 제출하셔야 합니다. (4) 개인정보 열람 및 처리정지 요구는 ‘개인정보 보호법’ 제 35조 제4항, 제37조 제2항에 의하여 이용자의 권리가 제한될 수 있습니다. (5) 개인정보의 정정 및 삭제 요구는 다른 법령에서 그 개인정보가 수집 대상으로 명시되어 있는 경우에는 그 삭제를 요구할 수 없습니다. (6) 회사는 이용자 권리에 따른 열람의 요구, 정정/삭제의 요구, 처리정지의 요구 시 열람 등 요구를 한 자가 본인이거나 정당한 대리인인지를 확인합니다. ## **제8조 (개인정보의 안전성 확보조치)** 회사는 개인정보의 안전성 확보를 위해 다음과 같은 조치를 취하고 있습니다. 1. 관리적 조치: 내부관리계획 수립 및 시행, 정기적 직원 교육 2. 기술적 조치: 개인정보에 대한 접근 권한 관리, 접근통제시스템 설치, 개인정보의 암호화, 해킹 등에 대비한 보안 프로그램 설치 및 갱신, 접속기록의 보관 및 위변조 방지 3. 물리적 조치: 전산실, 기계실, 업무 공간에 대한 출입 통제 ## **제9조 (개인정보 자동 수집 장치의 설치 ・ 운영 및 거부에 관한 사항)** (1) 회사는 이용자에게 개별적인 맞춤서비스를 제공하기 위해 이용 정보를 저장하고 수시로 불러오는 ‘쿠키(cookie)’를 사용합니다. (2) 쿠키는 웹사이트를 운영하는 데 이용되는 서버가 이용자의 컴퓨터 브라우저에게 보내는 소량의 정보이며 이용자들의 PC 컴퓨터 내의 하드디스크에 저장되기도 합니다. 1. 쿠키의 사용목적 : 이용자가 방문한 각 서비스와 웹사이트들에 대한 방문 및 이용형태, 인기 검색어, 보안접속 여부 등을 파악하여 이용자에게 최적화된 정보 제공을 위해 사용됩니다. 2. 쿠키의 설치 운영 및 거부 : 웹브라우저 상단의 도구 > 인터넷 옵션 > 개인정보 메뉴의 옵션 설정을 통해 쿠키 저장을 거부할 수 있습니다. 3. 쿠키 저장을 거부할 경우 맞춤형 서비스 이용에 어려움이 발생할 수 있습니다. ## **제10조 (행태정보의 수집, 이용 및 거부 등에 관한 사항)** (1) 회사는 서비스 이용과정에서 이용자에게 최적화된 맞춤형 서비스 및 혜택, 온라인 맞춤형 광고 등을 제공하기 위하여 행태정보를 수집, 이용하고 있습니다. (2) 회사는 다음과 같이 행태정보를 수집합니다. 1. 수집하는 행태정보의 항목 * 이용자의 서비스 내 방문 기록, 활동 로그 및 검색 이력, 광고식별자 2. 행태정보 수집 방법 * 웹 사이트 방문시 생성 정보 수집 툴 등을 통해 자동 수집 전송 3. 행태정보 수집 목적 * 회사 서비스 이용형태를 분석하여 이용자에게 추천 서비스 (광고 포함) 제공, 이용자 행태정보를 분석하여 신규 서비스, 서비스 개선 등의 척도로 활용 4. 보유, 이용기간 및 이후 정보처리 방법 * 수집일로부터 1년 동안 보유한 후 파기 (3) 회사는 다음과 같이 온라인 맞춤형 광고 사업자가 행태정보를 수집, 처리하도록 허용하고 있습니다. 1. 행태정보를 수집 및 처리하려는 광고 사업자: Meta (구. Facebook), Google LLC 2. 행태정보 수집 방법: 이용자가 회사 웹사이트를 방문할 때 자동수집 및 전송 3. 수집, 처리되는 행태정보 항목: 쿠키 또는 고유식별자 (광고 ID포함)를 통한 이용자의 서비스 방문 기록, 활동 로그 및 검색 이력, 설치 및 사용한 웹 이력, Google 계정 정보 일부 (Google 로그인 시) 4. 행태정보 수집 목적: 이용자 행태정보 기반 맞춤형 광고, 콘텐츠 제공, 이용자 분석 5. 보유 및 이용 기간 1. Meta: 수집일로부터 최장 6개월까지 저장 후 불필요한 데이터 삭제 처리 (상세정보는 [여기](https://www.facebook.com/privacy/policy)) 2. Google LLC. : 수집일로부터 최장 18개월까지 저장 후 익명처리 (상세정보는 [여기](https://policies.google.com/technologies/retention?hl=ko)) (4) 회사는 온라인 맞춤형 광고 등에 필요한 최소한의 행태정보만을 수집하며, 사상, 신념, 가족 및 친인척관계, 학력, 병력, 기타 사회활동 경력 등 개인의 권익, 이익이나 사생활을 뚜렷하게 침해할 우려가 있는 민감한 행태정보를 수집하지 않습니다. (5) 이용자는 웹브라우저의 쿠키 설정 변경 등을 통해 온라인 맞춤형 광고를 일괄적으로 차단, 허용할 수 있습니다. 다만, 쿠키 설정 변경은 웹사이트 자동로그인 등 일부 서비스의 이용에 영향을 미칠 수 있습니다. ## **제 11조 (개인정보 보호책임자)** (1) 회사는 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 이용자의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다. \[개인정보 보호책임자] * 성명 : 진태양 * 직책 : CTO * 직급 : 이사 * 연락처 : [privacy@bolta.io](mailto:privacy@bolta.io) (2) 이용자는 회사의 서비스를 이용하시면서 발생한 모든 개인정보보호 관련 문의, 열람청구, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및 담당부서로 문의할 수 있습니다. 회사는 이용자의 문의에 대해 지체없이 답변 및 처리해 드릴 것입니다. ## **제12조 (권익침해 구제방법)** 이용자는 개인정보침해로 인한 구제를 받기 위하여 개인정보분쟁조정위원회, 한국인터넷진흥원 개인정보침해신고센터 등에 분쟁해결이나 상담 등을 신청할 수 있습니다. 이 밖에 기타 개인정보침해의 신고, 상담에 대하여는 아래의 기관에 문의하시기 바랍니다. 1. 개인정보분쟁조정위원회: (국번없이) 1833-6972 ([www.kopico.go.kr](http://www.kopico.go.kr/)) 2. 개인정보침해신고센터: (국번없이) 118 ([privacy.kisa.or.kr](https://privacy.kisa.or.kr)) 3. 대검찰청: (국번없이) 1301 ([www.spo.go.kr](http://www.spo.go.kr/)) 4. 경찰청: (국번없이) 182 ([ecrm.cyber.go.kr](http://ecrm.cyber.go.kr)) 회사는 이용자의 개인정보자기결정권을 보장하고, 개인정보 침해로 인한 상담 및 피해 구제를 위해 노력하고 있으며, 신고나 상담이 필요한 경우 개인정보보호책임자에게 연락해 주시기 바랍니다. 「개인정보 보호법」 제35조(개인정보의 열람), 제36조(개인정보의 정정 삭제), 제37조(개인정보의 처리정지 등)의 규정에 의한 요구에 대하여 공공기관의 장이 행한 처분 또는 부작위로 인하여 권리 또는 이익의 침해를 받은 자는 행정심판법이 정하는 바에 따라 행정심판을 청구할 수 있습니다. * 중앙행정심판위원회: (국번없이) 110 ([www.simpan.go.kr](http://www.simpan.go.kr)) ## **제13조 (수집목적과 합리적으로 관련된 범위 내의 개인정보 이용 및 제공)** 회사는 당초 수집 목적과 합리적인 범위 내에서 아래 각 기준을 고려하여, 이용자의 동의 없이 개인정보를 이용 또는 제3자에게 제공할 수 있습니다. 1. 당초 수집 목적과 관련성이 있는지 여부: 당초 수집 목적과 추가적 이용·제공 목적이 성질이나 경향에 있어 연관이 있는지 등을 고려하여 따라 판단 2. 개인정보를 수집한 정황 또는 처리 관행에 비추어 볼 때 개인정보의 추가적인 이용 또는 제공에 대한 예측 가능성이 있는지 여부: 개인정보처리자와 이용자 간의 관계, 기술 수준 및 발전 속도, 상당한 기간동안 정립된 일반적인 사정(관행) 등을 고려하여 판단 3. 이용자의 이익을 부당하게 침해하는지 여부: 추가적인 이용 목적과의 관계에서 이용자의 이익이 실질적으로 침해되는지 및 해당 이익 침해가 부당한지 등을 고려하여 판단 4. 가명처리 또는 암호화 등 안전성 확보에 필요한 조치를 하였는지 여부: 침해 가능성을 고려한 안전 조치가 취해지는지 등을 고려하여 판단 ## **제14조 (개인정보 처리방침의 변경)** 이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는 공지사항을 통하여 고지할 것입니다. ## **부칙** * 공고일: 2025. 12. 17. * 시행일: 2025. 12. 24. *** * [2023/05/18 - 개인정보처리방침](https://docs.bolta.io/docs/privacy-policy/20230518) # 플랜 결제 및 관리 Source: https://docs.bolta.io/docs/setting/general/billing-subscription 현재 플랜, 결제 수단과 결제 내역을 확인하고 플랜을 변경하세요. ## 현재 플랜 확인 \[설정] > \[구독 및 결제]를 여세요. 현재 플랜, 이용 기간과 다음 결제일을 확인할 수 있습니다. ![현재 플랜, 등록한 카드와 결제 내역](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-billing-current.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=d6752cd3764961ab8c7be09d8a1e3eb6) ## 플랜 선택과 결제 \[플랜 변경]을 누르고 사용할 플랜의 \[시작하기]를 선택하세요. | 플랜 | 월 기본 요금 | 사용 인원 | | - | - | - | | 무료 | 0원 | 1명 | | 라이트 | 50,000원 | 1명 | | 스탠다드 | 200,000원 | 인원 제한 없음, 팀원 추가 시 1명당 월 7,000원 | 유료 요금은 부가세 별도입니다. 플랜별 제공 기능은 [요금 안내](https://bolta.io/pricing)를 확인하세요. 엔터프라이즈 요금은 별도 협의입니다. ![플랜 선택 화면의 무료, 라이트, 스탠다드 요금과 제공 기능](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-billing-plans.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=5e2e16154b83cd22d9da4d6e276293a7) 유료 플랜은 카드로 결제합니다. 결제 정보에서 플랜명과 부가세를 포함한 총 결제 금액을 확인한 뒤 \[결제하기]를 누르세요. 카드가 등록되지 않았다면 카드 등록을 먼저 진행하세요. ![부가세를 포함한 플랜 결제 금액 확인](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-billing-checkout.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=b9782e6cdbee250f6b47a50136f9eab3) 플랜 변경이 완료되면 새 플랜을 바로 이용합니다. 유료 플랜을 변경하면 새 플랜 요금을 결제하고 기존 구독의 남은 기간에 해당하는 금액을 환불합니다. 결제와 환불 결과는 같은 화면의 \[결제 내역]에서 확인하세요. ## 무료체험 중 플랜 변경 무료체험은 7일 동안 1명에게 제공합니다. 발행과 연동 기능을 체험하며 팀원 초대와 권한 관리는 포함하지 않습니다. 종료일까지 3일 이내로 남으면 화면 상단에 안내가 나타납니다. 체험 중 유료 플랜을 선택하면 바로 적용합니다. 무료 플랜은 체험이 끝난 뒤 선택하세요. 체험 종료 후에는 사용할 플랜을 선택해 이용을 이어가세요. ## 하위 플랜으로 변경 이용 중인 유료 플랜을 하위 플랜으로 바꾸려면 현재 결제 주기가 시작된 뒤 7일이 지나기 전이어야 합니다. 해당 기간에 아래 기능을 사용했다면 변경할 수 없습니다. | 변경 | 사용 여부를 확인하는 기능 | | - | - | | 스탠다드 → 라이트 | 발행정보 요청서, 역발행, 대량발행, 지급요청서 | | 라이트 → 무료 | 예약 발행, 반복 발행, 미수금 관리 | | 스탠다드 → 무료 | 위 두 행의 기능 전체 | 계약으로 청구하는 플랜과 엔터프라이즈는 화면에서 하위 플랜으로 변경할 수 없습니다. 무료체험이 끝났거나 구독이 정지 또는 만료된 경우에는 위 7일과 사용 이력 조건을 적용하지 않습니다. ## 결제 카드 변경 \[카드 정보]의 \[카드 변경]을 누르고 새 카드를 등록하세요. 등록 후 카드 정보와 다음 결제일을 확인하세요. ## 결제 실패 후 다시 진행 \[플랜 결제 실패] 화면에서 실패 사유를 확인하고 \[이전으로 돌아가기]를 클릭하세요. 등록 카드의 문제라면 \[카드 변경]으로 다시 등록한 뒤 플랜 결제를 진행하세요. \[플랜 결제 완료] 화면에서는 \[결제 정보 확인]으로 현재 플랜과 결제 내역을 확인합니다. 결제 결과를 확인한 뒤 \[간편 발행]으로 이동하세요. # 공동인증서 재등록 Source: https://docs.bolta.io/docs/setting/general/certificate-registration 갱신하거나 새로 발급한 공동인증서를 등록합니다. ## 갱신한 인증서 등록 1. \[설정] > \[공동인증서 관리]로 이동하세요. 2. \[인증서 추가]를 클릭하세요. 3. 갱신한 인증서를 선택하고 해당 인증서의 비밀번호를 입력하세요. 4. \[등록하기]를 클릭한 뒤 목록에서 새 만료일을 확인하세요. ![공동인증서 종류와 만료일 확인](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-certificates.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=f7953c3175295f57b4154fd16d01b2c4) 세금계산서 발행에는 사업자 범용 또는 전자세금용 공동인증서가 필요합니다. 인증서를 찾는 방법은 [공동인증서 등록](/docs/onboarding/certificate-registration)을 참고하세요. ## 만료되거나 사용하지 않는 인증서 삭제 인증서 목록에서 만료일과 종류를 확인하세요. 삭제할 인증서의 관리 메뉴에서 \[삭제]를 선택하고 \[네, 삭제할게요]로 확정하세요. 발행이나 내역 조회에 필요한 인증서는 새 인증서를 등록한 뒤 다시 이용하세요. 등록 후에도 발행 가능한 인증서가 없다는 안내가 나오면 등록한 종류를 확인하세요. 은행 거래 내역 연동에는 은행 거래용 인증서를 사용합니다. # 매출과 매입 내역 연동 Source: https://docs.bolta.io/docs/setting/general/data-sync 홈택스 내역과 은행 계좌를 연결하고 연동 상태를 확인합니다. ## 연동 상태 확인 \[설정] > \[매출∙매입 내역 연동]에서 매출 세금계산서, 매입 세금계산서, 입출금 계좌의 상태를 확인하세요. ![매출 세금계산서, 매입 세금계산서와 계좌 연동 상태](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-data-sync.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=f0357194f14c4f3ef63afd89a499a39d) ## 내역 연결 \[연동하기]를 클릭하고 연결할 항목을 선택하세요. 화면 안내에 따라 인증서를 등록하거나 계좌를 선택하세요. 연동을 마친 뒤 상태가 정상인지 확인하세요. 가져온 내역은 [매출 내역](/docs/accounting/revenues), [매입 내역](/docs/accounting/expenses), [입출금 내역](/docs/bank/transaction-management)에서 확인합니다. 인증서 만료 등으로 오류가 표시되면 해당 항목의 안내를 확인하고 인증서를 다시 등록하세요. 계좌를 추가하거나 연결을 해제하려면 [은행 계좌 관리](/docs/bank/account-management)를 참고하세요. ## 처음 가져오는 기간 처음 연결하면 기본적으로 전년도 1월 1일부터 현재까지 내역을 가져옵니다. 은행 계좌는 해당 은행의 조회 가능 기간 안에서 가져옵니다. 수집한 내역은 각 목록에서 조회 기간을 선택해 확인하세요. ## 지금 내역 가져오기 화면 상단의 \[내역 가져오기]를 클릭하세요. \[거래 내역 가져오기]에서 연결한 내역과 마지막 업데이트 상태를 확인하고 \[지금 가져오기]를 클릭하세요. 가져오는 중에는 완료를 기다린 뒤 해당 목록을 확인합니다. 가져올 내역이 없으면 \[연동 설정]으로 이동해 연결하세요. 인증서 안내가 나타나면 \[공동인증서 관리]에서 조회용 인증서를 확인합니다. ## 오류 확인과 연동 해제 \[오류] 상태인 연동의 \[사유 보기]를 클릭하세요. 안내에 따라 인증서를 등록하거나 계좌 연결을 확인한 뒤 다시 가져오세요. 더 이상 가져오지 않을 항목은 관리 메뉴의 \[연동 해제]를 선택하고 확인하세요. 해제한 항목은 이후 동기화를 중단합니다. 계좌별 설정은 [은행 계좌 관리](/docs/bank/account-management)에서 확인하세요. # 개인 정보 수정 Source: https://docs.bolta.io/docs/setting/general/profile-account 계정 이름과 비밀번호를 변경하세요. ## 계정 이름 변경 \[설정] > \[계정 정보]를 여세요. 이름을 수정한 뒤 \[저장]을 누르세요. 로그인 이메일은 이 화면에서 확인합니다. ![계정 이메일과 이름을 확인하는 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-account-profile.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=ac709f570cc2b3259d93ec09774c660b) ## 비밀번호 재설정 이메일과 비밀번호로 가입한 계정은 \[비밀번호 재설정]을 누르세요. 현재 비밀번호, 새 비밀번호와 새 비밀번호 확인을 입력한 뒤 \[등록]을 누르세요. Google로 가입한 계정은 Google 계정으로 로그인하세요. # 회사 정보 수정 Source: https://docs.bolta.io/docs/setting/general/profile-company 세금계산서에 사용할 사업자 정보와 담당자 정보를 수정하세요. ## 사업자 정보 수정 \[설정] > \[사업자 정보]를 여세요. 회사명과 대표자명을 사업자등록증 기준으로 입력하세요. 사업장 주소, 종사업장 번호, 업태와 종목도 이 화면에서 수정합니다. 사업자등록번호는 이 화면에서 수정할 수 없습니다. 변경이 필요하면 \[문의·의견]으로 요청하세요. ![사업자 정보와 담당자 정보 입력 화면](https://mintcdn.com/bolta/cBUeNQcZaYln56Nl/images/docs/guide-company-profile.png?fit=max\&auto=format\&n=cBUeNQcZaYln56Nl\&q=85\&s=8b7de98ed528d5f7c2e39ad0945a1856) ## 담당자 정보 수정 \[담당자 정보]에 세금계산서에 표시할 이메일, 이름과 휴대전화번호를 입력하세요. 처음에는 워크스페이스를 만든 계정의 이메일을 사용합니다. 수정을 마쳤다면 화면 아래의 \[저장]을 누르세요. 예약된 세금계산서에 변경한 정보를 반영하려면 기존 예약을 취소하고 다시 등록하세요. # 워크스페이스 기본값 설정 Source: https://docs.bolta.io/docs/setting/general/workspace-settings 팀원이 함께 사용할 세금계산서 발행 기본값과 입금 요청 정보를 설정합니다. ## 발행 기본값 설정 \[설정] > \[워크스페이스 설정]을 여세요. \[세금계산서 간편발행]에서 발행 방식과 과세 유형의 기본값을 선택하고 \[저장]을 클릭하세요. 기본값은 모든 팀원에게 적용합니다. 개별 세금계산서를 작성할 때 거래에 맞게 변경하세요. ![세금계산서 간편발행 기본값과 입금 요청 설정](https://mintcdn.com/bolta/m0K_FW6YoHBhsTYx/images/docs/guide-workspace-settings.png?fit=max\&auto=format\&n=m0K_FW6YoHBhsTYx\&q=85\&s=a73faa0e1e4219c5e8168cdbf246aac5) ## 입금 요청 기본 정보 같은 화면의 \[입금 요청]에서 입금 계좌, 통장사본과 사업자등록증을 등록합니다. [입금 요청 사전설정](/docs/deposit-request/preset)을 따라 등록하세요. # 팀원 초대 Source: https://docs.bolta.io/docs/setting/team/invitation 이메일로 팀원을 초대하고 권한을 부여합니다. ## 초대 보내기 1. \[설정] > \[팀원 목록/초대]에서 \[팀원 초대]를 클릭하세요. 2. 초대할 이메일을 입력하세요. \[추가]로 한 번에 최대 5개 이메일을 입력합니다. 3. 팀원에게 부여할 권한을 선택하세요. 4. \[초대하기]를 클릭하세요. ![이메일과 권한을 입력하는 팀원 초대 창](https://mintcdn.com/bolta/m0K_FW6YoHBhsTYx/images/docs/guide-team-invite.png?fit=max\&auto=format\&n=m0K_FW6YoHBhsTYx\&q=85\&s=8633544ee25b873e99141bdd80bb1827) 업무에 맞는 권한이 없다면 [권한 생성](/docs/setting/team/role-management)에서 먼저 추가하세요. ## 초대 현황 확인 \[초대 현황]에서 아직 참여하지 않은 팀원을 확인하세요. 이메일을 받지 못했다면 메일을 다시 보내고, 이메일이나 권한을 잘못 지정했다면 초대를 취소한 뒤 다시 초대하세요. ## 초대받은 팀원 참여 초대 이메일의 링크를 열고 초대받은 이메일로 가입하거나 로그인하세요. 참여할 워크스페이스와 권한을 확인한 뒤 초대를 수락하세요. 참여한 팀원은 \[팀원 목록/초대]에 표시합니다. # 권한 생성 Source: https://docs.bolta.io/docs/setting/team/role-management 팀원의 업무에 맞는 권한을 만들고 관리합니다. ## 권한 확인 \[설정] > \[권한]에서 권한명, 설명, 해당 권한을 사용하는 팀원 수를 확인하세요. 워크스페이스를 만든 계정에는 소유자 권한을 부여합니다. ![권한 목록과 팀원 수](https://mintcdn.com/bolta/m0K_FW6YoHBhsTYx/images/docs/guide-team-roles.png?fit=max\&auto=format\&n=m0K_FW6YoHBhsTYx\&q=85\&s=5a36ca0a9adc13624ad0d99d0a8aca4f) ## 권한 추가 1. \[권한 추가]를 클릭하세요. 2. 권한명과 설명을 입력하세요. 3. 허용할 기능을 선택하세요. \[기본 템플릿 적용]에서 최고 관리자, 일반 팀원, 사업 담당자, 재무 담당자 중 하나를 선택한 뒤 조정해도 됩니다. 4. 설정을 저장하세요. 세금계산서 발행 요청과 발행 승인은 별도 권한입니다. 발행 승인 권한이 없는 팀원의 요청은 승인 권한이 있는 팀원이 처리합니다. ## 수정과 삭제 권한 목록의 관리 메뉴에서 수정하거나 삭제하세요. 소유자 권한은 수정하거나 삭제할 수 없습니다. 다른 권한은 사용하는 팀원이 0명일 때 삭제합니다. 먼저 [팀원 관리](/docs/setting/team/team-management)에서 해당 팀원의 권한을 변경하세요. \[신규 기능 권한 자동부여]를 켜면 새 기능의 권한을 자동으로 추가합니다. 새 기능을 검토한 뒤 부여하려면 이 설정을 끄세요. # 팀원 관리 Source: https://docs.bolta.io/docs/setting/team/team-management 팀원 권한을 변경하거나 워크스페이스에서 내보냅니다. ## 팀원 확인 \[설정] > \[팀원 목록/초대]에서 이름, 이메일, 권한을 확인하세요. 팀원 관리는 해당 관리 권한이 있는 계정으로 진행합니다. ![워크스페이스 팀원 목록](https://mintcdn.com/bolta/m0K_FW6YoHBhsTYx/images/docs/guide-team-members.png?fit=max\&auto=format\&n=m0K_FW6YoHBhsTYx\&q=85\&s=8bd0a5b1144984bf9766f6e726e73e67) ## 권한 변경 변경할 팀원의 관리 메뉴에서 \[권한 변경]을 선택하세요. 새 권한을 선택하고 저장하세요. 권한별 허용 기능은 [권한 생성](/docs/setting/team/role-management)에서 확인합니다. ## 팀원 내보내기 내보낼 팀원의 관리 메뉴에서 \[내보내기]를 선택하세요. 확인 창에서 \[네, 내보낼게요.]를 클릭하세요. 다시 참여해야 하는 팀원은 [팀원 초대](/docs/setting/team/invitation)로 초대합니다. ## 워크스페이스 가입 요청 처리 \[가입 요청]을 클릭해 직접 참여를 요청한 이메일을 확인하세요. 참여할 팀원이 맞으면 \[권한 선택]에서 부여할 권한을 정한 뒤 \[수락]을 클릭하세요. 참여시키지 않을 요청은 \[거절]을 선택하고 확인하세요. 거절한 사용자 정보는 가입 요청 목록에서 삭제합니다. 수락 후에는 팀원 목록에서 권한을 확인하세요. # 서비스 이용약관 Source: https://docs.bolta.io/docs/terms-of-service ### **제1조 (목적)** 본 약관은 주식회사 볼타코퍼레이션(이하 "회사"라 합니다)이 볼타 웹페이지를 통해(이하 "서비스 페이지"라 합니다) 제공하는 볼타(Bolta) 및 볼타 관련 제반 서비스의 이용과 관련하여, 회사와 이용자의 권리, 의무 및 책임사항, 기타 필요한 사항을 규정함을 목적으로 합니다. ### **제2조 (용어의 정의)** (1) 본 약관에서 사용하는 용어의 정의는 다음과 같습니다. 1. 서비스 : 회사가 '볼타(Bolta)' 브랜드로 제공하는 기업 대상 재무 플랫폼 및 관련 서비스 일체를 의미합니다. 2. 구독 서비스 : 정기적인 요금 결제를 통해 일정 기간 동안 웹 인터페이스 기반으로 서비스를 이용할 수 있는 서비스를 의미합니다. 3. API 서비스 : 회사가 제공하는 OpenAPI를 통해 프로그래밍 방식으로 이용하며, 사전 충전한 포인트에서 실제 사용량에 따라 차감되는 서비스를 의미합니다. 4. 포인트 : API 서비스 이용을 위해 사전에 충전하는 가상 결제 수단으로, API 호출량에 따라 정해진 요율로 차감됩니다. 5. 고객 : 본 약관에 따라 회사와 서비스 이용계약을 체결하고 회사가 제공하는 서비스를 이용하는 사업주인 개인 또는 기업을 의미합니다. 6. 소유자 : 고객의 소속으로 고객을 대표하여 구성원의 서비스 이용을 승인 및 개별 계정을 부여하고, 구성원의 서비스 이용에 대한 관리 권한과 운영을 책임지는 자를 의미합니다. 7. 구성원 : 소유자에 의해 고객의 일원으로 승인 받아 소유자가 허용하는 범위 내에서 서비스를 이용하는 자를 의미합니다. 8. 유료서비스 : 회사가 제공하는 서비스 중 고객이 회사에 일정 금액을 결제하는 경우에 이용할 수 있는 회사의 서비스를 의미하며, 구독 서비스와 API 서비스를 모두 포함합니다. 9. 유료고객 : 유료서비스를 이용하는 고객을 말합니다. 10. 이용자 : 본 약관에 따라 회사와 서비스 이용계약을 체결하고 회사가 제공하는 서비스를 이용하는 고객, 소유자, 구성원을 통칭하여 의미합니다. 11. 워크스페이스: 회사와 고객 간 이용계약 체결을 통하여 회사가 이용자가 서비스를 이용할 수 있도록 제공하는 시스템을 의미합니다. (2) 이 약관에서 사용하는 용어의 정의는 제1항에서 정하는 것을 제외하고는 관련법령에서 정하는 바에 의하며, 관련 법령에서 정하지 않는 것은 일반적인 상관례에 의합니다. ### **제3조 (약관의 게시와 개정)** (1) 회사는 본 약관의 내용을 이용자가 쉽게 알 수 있도록 회사의 홈페이지 (bolta.io), 이하 '홈페이지') 초기화면의 연결화면에 게시합니다. (2) 회사는 약관의 규제에 관한 법률, 정보통신망 이용촉진 및 정보보호 등에 관한 법률, 전자상거래 등에서의 소비자 보호에 관한 법률 등 관련법령을 위배하지 않는 범위에서 이 약관을 개정할 수 있습니다. (3) 회사가 약관을 개정할 경우에는 적용일자 및 개정사유를 명시하여 현행약관과 함께 본 제1항의 방식에 따라 그 개정약관의 적용일자 7일 전부터 적용일자 전까지 공지합니다. 다만, 이용자의 권리 또는 의무에 관한 중요한 사항의 변경 또는 이용자에게 불리한 약관의 변경은 최소한 30일 전에 공지하고 이용자가 사전에 등록한 전화, 메일, 문자메시지 등의 전자적 수단을 통해 별도로 명확히 통지하도록 합니다. (4) 회사가 본조 제3항에 따라 개정약관을 공지 또는 통지하면서 이용자에게 약관 변경 적용일까지 거부의사를 표시하지 않으면 동의한 것으로 본다는 뜻을 명확하게 공지 또는 통지하였음에도 이용자가 명시적으로 거부의 의사표시를 하지 아니한 경우 이용자가 개정약관에 동의한 것으로 봅니다. (5) 이용자는 개정된 약관에 대해 동의하지 않을 권리가 있으며 이용자가 개정약관의 적용에 동의하지 않을 경우 이용자는 이용계약을 해지할 수 있습니다. 회사는 개정약관 적용에 동의하지 않는 이용자에 대해서는 기존 약관을 적용하되, 기존 약관을 적용할 수 없는 특별한 사정이 있는 경우에는 이용계약을 해지할 수 있습니다. (6) 본 약관은 약관의 내용에 동의한 자가 본 서비스에 가입하여 이용자가 됨으로써 효력이 발생하여 이용계약 종료일까지 적용됩니다. 단, 서비스 이용계약과 관련하여 채권 또는 채무관계가 있을 경우에는 채권, 채무의 소멸일까지 적용됩니다. ### **제4조 (약관의 해석)** (1) 회사가 필요하다고 판단한 경우 회사와 이용자는 별도의 서면 계약을 체결할 수 있습니다. 본 약관과 서면 계약의 내용이 충돌할 경우 서면 계약의 내용이 우선합니다. (2) 본 약관 또는 별도 계약에서 규정하지 않은 사항에 관해서는 관계법령에 따릅니다. ### **제5조 (이용계약의 성립)** (1) 이용계약은 본 서비스를 이용하고자 하는 자(이하 '가입신청자')가 약관의 내용에 대하여 동의를 한 다음 회사가 제시하는 양식과 절차에 따라 이용신청을 하고 회사가 이러한 신청에 대하여 승낙하여 가입완료를 신청절차 상에서 표시함으로써 체결됩니다. (2) 회사는 가입신청자의 신청에 대하여 서비스 이용을 승낙함을 원칙으로 합니다. 다만, 회사는 다음 각 호에 해당하는 신청에 대하여는 승낙을 하지 않거나 사후에 이용계약을 해지할 수 있습니다. 1. 이용자가 본 약관에 의하여 이전에 서비스 이용자격을 상실한 적이 있는 경우 2. 이용신청시 회사가 제시하는 양식에 허위의 정보를 기재하거나, 내용을 기재하지 않은 경우 3. 만 14세 미만의 신청자인 경우 4. 이용자가 서비스의 정상적인 제공을 저해하거나 다른 이용자의 서비스 이용에 지장을 줄 것으로 예상되는 경우 5. 이용자의 귀책사유로 인하여 승인이 불가능하거나 기타 규정한 제반 사항을 위반하며 신청하는 경우 6. 이용자가 본 약관 제26조 제1항에 따라 금지되는 행위 또는 기타 본 약관 또는 법령에 위반되는 행위를 이유로 본 약관 제16조에 따라 이용이 제한된 상태이거나 제한된 적이 있는 경우 7. 이용자가 본 약관 제26조 제1항에 따라 금지되는 행위를 위한 목적 또는 의도로 본 서비스에 가입하는 경우 8. 그 밖에 회사가 관련된 사정 및 상황에 기초하여 위 각호의 행위에 준하는 사유로서 승낙이 부적절하다고 합리적으로 판단하는 경우 (3) 회사는 서비스 관련설비의 여유가 없거나, 기술상 또는 업무상 문제가 있는 경우에는 승낙을 유보할 수 있습니다. (4) 회사가 제2항, 제3항에 따라 서비스 이용을 승낙하지 아니하거나 유보하는 경우, 회사는 원칙적으로 그 사실을 해당 사유와 함께 가입신청자가 기입한 이메일주소로 통지합니다. 단 회사는 이러한 승낙의 거부 또는 유보에 대한 사실을 통지하는 행위가 법령에 위반되거나 기타 회사의 본 서비스 제공에 중대하게 부정적인 영향을 미칠 경우 이러한 통지를 생략할 수 있습니다. (5) 회사는 이용자를 회사정책에 따라 등급별로 구분하고 제공하는 서비스 기능 등을 세분화하여 이용에 차등을 둘 수 있습니다. ### **제6조 (이용자 정보의 제공)** (1) 이용자로 가입하여 서비스를 이용하고자 하는 자는 이메일, 이름 등 정보를 제공하고, 이메일 인증 또는 소셜 인증(구글)을 하여야 합니다. (2) 이용자가 제1항에서 정한 인증을 거치지 않은 경우 서비스 이용이 제한될 수 있으며, 실명으로 등록하지 않은 이용자는 본 서비스 이용에 관하여 일체의 권리를 주장할 수 없습니다. (3) 타인의 명의를 도용하여 이용신청을 한 이용자에 대해서는 회사가 이용계약을 해지할 수 있으며, 관계법령에 따라 처벌을 받을 수 있습니다. ### **제7조 (개인 정보의 보호 및 관리)** (1) 회사는 관계 법령이 정하는 바에 따라 계정정보를 포함한 이용자의 개인정보를 보호하기 위하여 노력합니다. 이용자의 개인정보 보호 및 사용에 대해서는 회사가 별도로 고지하는 개인정보처리방침에 따릅니다. (2) 회사는 이용자의 귀책사유로 인하여 이용자의 계정정보를 포함한 모든 정보가 노출되어 발생하는 손해에 대해서는 회사의 귀책사유가 없는 한 일체의 책임을 지지 않습니다. (3) 회사는 이용자의 요청에 따라 문서 파기를 진행합니다. 문서의 파기로서 이용자는 영구적으로 해당 문서에 대한 접근권한을 잃게 됩니다. (4) 이용자가 서비스를 이용하여 제3자의 개인정보를 처리하는 경우, 이용자는 관련 법령을 준수하여 해당 개인정보를 관리하고 보호해야 하며, 회사는 회사의 귀책사유가 없는 한 이용자의 관리 소홀로 인해 발생하는 제3자의 정보 유출 등을 포함하되 이에 한정되지 않는 결과, 손실 또는 손해에 대하여 책임을 지지 않습니다. ### **제8조 (이용자의 계정 및 비밀번호)** (1) 서비스의 원활한 제공 및 이용자의 정보보호, 서비스 이용안내 등의 편의를 위하여 이용자가 선정한 이메일 주소를 계정으로 사용합니다. 다만, 회사는 이용자의 계정이 반사회적이거나 미풍양속을 해치거나 또는 회사의 운영자로 오인할 우려가 있는 경우 등에는 해당 계정의 사용을 거부하거나 제한할 수 있습니다. (2) 회사는 계정을 기준으로 당해 이용자에 대한 서비스 이용가능여부 결정 등 제반 이용자 관리 업무를 수행하며, 하나의 계정을 통해 서비스를 이용할 수 있는 사람은 1인에 한정합니다. 따라서 이용자는 자신의 계정을 제3자가 이용하도록 하여서는 안 됩니다(이하, "계정공유금지정책"). 계정공유금지정책은 동일 법인 내 근무하는 임직원 간에도 엄격히 적용됩니다. (3) 이용자는 회사가 정한 기준을 충족하는 범위 내에서 자유롭게 비밀번호를 정할 수 있으며, 정해진 비밀번호는 이용자가 원하는 경우 언제든지 변경이 가능합니다. 다만, 회사는 보안 등을 이유로 이용자에게 정기적 또는 비정기적으로 비밀번호의 변경을 권고할 수 있습니다. ### **제9조 (이용자에 대한 통지)** (1) 회사가 이용자에 대한 통지를 하는 경우 본 약관에 별도 규정이 없는 한 이용자가 계정으로 사용하는 이메일 주소로 할 수 있습니다. (2) 회사는 이용자 전체에 대한 통지의 경우 7일 이상 회사의 서비스 페이지 또는 기타 공지사항 페이지에 게시함으로써 제1항의 통지에 갈음할 수 있습니다. 단, 이용자의 권리, 의무에 중대한 영향을 주는 내용을 통지하는 경우에는 적용일자 30일 전부터 게시합니다. ### **제10조 (서비스의 제공시간 및 중지)** (1) 회사는 이용자의 회원가입을 승낙한 때부터 서비스 제공을 개시합니다. 단, 유료서비스의 경우에는 요금을 지급하여야 이용할 수 있으며, 일부 기능의 경우에는 회사의 사정에 따라 지정된 일자부터 서비스를 제공할 수 있습니다. (2) 제1항에도 불구하고 회사는 다음 각 호의 경우에는 서비스의 전부 또는 일부를 일시 정지할 수 있습니다. 이 경우 회사는 사전에 그 정지의 사유와 기간을 홈페이지에 공지합니다. 다만, 사전에 공지할 수 없는 부득이한 사정이 있는 경우 사후에 공지할 수 있습니다. 1. 시스템 정기점검, 서버의 증설 및 교체, 네트워크의 불안정 등의 시스템 운영상 필요한 경우 2. 정전, 서비스 설비의 장애, 서비스 이용폭주, 기간통신사업자의 설비 보수 또는 점검 등으로 인하여 정상적인 서비스 제공이 불가능한 경우 3. 전시, 사변, 천재지변 또는 이에 준하는 국가비상사태 등 회사가 통제할 수 없는 상황이 발생한 경우 4. 기타 회사의 부득이한 사정으로 서비스를 할 수 없는 경우 (3) 제1항 단서 및 제2항의 경우 회사는 그 내용 및 시간을 홈페이지에 공지합니다. 다만, 회사가 사전에 통지할 수 없는 부득이한 사유가 있는 경우 사후에 통지할 수 있습니다. (4) 회사는 회사의 고의 또는 중대한 과실로 인한 경우를 제외하고는 서비스의 일시 정지로 발생하는 문제에 대해서 일체의 책임을 부담하지 않습니다. ### **제11조 (서비스의 내용 및 변경)** (1) 이용자는 회사가 제공하는 서비스를 이 약관 및 운영정책, 가이드 등 회사가 정한 규칙(이하, "본 서비스 이용 규칙")에 따라 이용할 수 있습니다. (2) 회사가 이용자에게 제공하는 서비스에 대하여 회사는 제작, 변경, 유지, 보수에 관한 포괄적인 권한을 가집니다. (3) 회사는 새로운 기능 개발, 각종 버그 패치 등 서비스의 운영상 또는 기술상 필요한 경우, 제공하고 있는 기능의 전부 또는 일부를 수정, 추가, 폐지 등 변경할 수 있습니다. 다만, 이용자에게 불리한 변경의 경우 사전에 공지하여야 합니다. (4) 회사는 무료로 제공되는 서비스의 일부 또는 전부를 회사의 정책 기획이나 운영상 또는 회사의 긴박한 상황 등 필요에 의해 수정, 중단, 변경할 수 있으며, 이에 대하여 관련 법령상 특별한 규정이 없는 한 이용자에게 별도의 보상을 하지 않습니다. (5) 회사는 서비스가 회사의 고의 또는 중대한 과실로 인한 경우를 제외하고는 서비스의 변경으로 발생하는 문제에 대해서 책임을 부담하지 않습니다. (6) 회사가 제공하는 무료체험 또는 기타 무료서비스는 회사의 독자적인 재량에 따라 제공되는 것으로, 회사는 이를 제공하거나 유지할 어떠한 의무도 없습니다. (7) 회사는 이용자가 무료체험 또는 무료서비스를 부당하게 반복적으로 이용하거나 남용한다고 판단하는 경우 무료체험 및 무료서비스 제공을 중단할 수 있습니다. ### **제12조 (정보의 제공 및 광고의 게재)** (1) 회사는 이용자의 서비스 이용에 필요한 다양한 정보를 회사의 홈페이지에 게시하거나 이메일 등을 이용하여 이용자에게 제공할 수 있습니다. 다만, 이용자는 관련 법령에 따른 거래 관련 정보, 고객센터 답변 등을 제외한 정보의 전송에 대하여 언제든지 이메일 등을 통하여 수신거절의 의사표시를 할 수 있습니다. (2) 회사는 본 서비스를 유지하기 위하여 서비스 내에 광고를 게재할 수 있습니다. (3) 회사는 적법하게 수집한 이용자의 개인정보를 활용하여 수신에 동의한 회원에 한하여 이메일로 광고성 정보를 전송할 수 있습니다. 이 경우 회원은 언제든지 수신을 거절할 수 있으며, 회사는 회원의 수신 거절 시 광고성 정보를 발송하지 아니합니다. (4) 회사가 제공하는 서비스 중의 배너 또는 링크 등을 통해 타인이 제공하는 광고나 서비스에 연결될 수 있습니다. 이 경우 해당 영역에서 제공하는 서비스는 회사의 서비스 영역이 아니므로 회사가 신뢰성, 안정성 등을 보장하지 않으며, 그로 인한 회원의 손해에 대하여도 회사는 책임을 지지 않습니다. 이용자가 회사가 제공하는 제3자의 재화나 서비스 등에 대한 광고를 보고 해당 재화나 서비스를 제공하는 제3자와 교신 또는 거래를 함으로써 발생하는 손실과 손해에 대해서도 회사는 어떠한 책임도 부담하지 않습니다. ### **제13조 (권리의 귀속)** (1) 서비스 및 회사가 제작한 서비스 내 콘텐츠 등(이하, "회사 콘텐츠 등")에 대한 저작권 및 지식재산권 등 일체의 권리는 회사에 귀속됩니다. (2) 이용자는 회사 콘텐츠 등을 무단 복제, 배포, 변경 등 어떠한 형태로든 사용하거나 제3자로 하여금 사용(이하, "회사 콘텐츠 부정사용")하도록 할 수 없으며, 회사 콘텐츠 부정사용 시 발생한 손해에 대하여 회사에 배상할 책임을 부담합니다. ### **제14조 (레퍼런스 활용)** (1) 이용자는 회사가 마케팅 및 홍보 목적으로 이용자의 기업명, 로고 등을 레퍼런스로 활용할 수 있는 권리를 회사에 부여합니다. (2) 회사는 이용자의 상표권 사용 가이드라인을 준수하여야 하며, 이용자가 이러한 사용을 거부하는 경우 즉시 중단하여야 합니다. ### **제15조 (이용자의 계약해제•해지 등)** (1) 이용자는 서비스 내 탈퇴 기능을 통해 탈퇴 신청을 할 수 있으며, 회사는 관련법령 등에서 정하는 바에 따라 이를 즉시 처리하여야 합니다. (2) 다음 각 호에 해당하는 경우를 제외하고, 이용자의 모든 정보는 탈퇴 이후 바로 삭제되며 복구할 수 없습니다. 1. 서명 완료된 문서 및 관련 정보(단, 서명 요청자 및 서명자 전원의 동의가 있을 경우 삭제 가능) 2. 관련법령 및 회사의 개인정보 처리방침에서 정한 바에 따라 특별히 이용자 관계된 정보를 저장해야 할 때 (3) 이용자는 탈퇴 이후 동일한 이메일 주소로 다시 가입할 수 없습니다. ### **제16조 (이용제한 등)** (1) 회사는 이용자가 본 약관의 의무, 회사의 운영정책 등 본 서비스 이용 규칙을 위반하거나 서비스의 정상적인 운영을 방해한 것으로 볼 상당한 이유가 있는 경우, 서비스 이용을 경고, 일시정지, 계약해지로 제한할 수 있습니다. 이러한 서비스 이용 제한에 따른 손해에 대하여 회사는 별도로 보상하지 않습니다. (2) 회사는 이용자가 고의 또는 중대한 과실로 이 계약의 중요한 사항을 위반하여 회사에게 손해를 입힌 경우 또는 이 계약과 관련하여 관련법령에 의하여 형사처벌의 대상이 되는 범죄행위를 한 경우, 월 정기결제 중인 유료서비스의 이용요금이 결제되지 않은 경우에는 즉시 계약을 해지할 수 있습니다. 이에 따라 서비스 이용을 통해 획득한 혜택 등은 모두 소멸되며, 회사는 이에 대해 별도로 보상하지 않습니다. (3) 회사가 위 제1항 및 제2항에 따라 이용자의 서비스 이용을 제한하는 경우, 제한의 조건 및 세부내용은 이용제한정책 등에서 정한 바에 따르며, 회사는 제9조에서 정한 방법으로 이용제한 조치의 사유, 유형 및 기간, 이의신청 방법을 통지합니다. (4) 이용자는 회사의 이용제한 조치 등에 대하여 회사가 정한 절차에 따라 이의신청을 할 수 있습니다. 이용자의 이의 사유가 정당하다고 인정되는 경우 회사는 즉시 이용자의 서비스 이용을 재개하여야 합니다. 단, 이 경우에도 이용 제한으로 발생한 손해에 대하여 회사는 별도로 보상하지 않으나, 이용자가 자신의 고의, 과실이 없었음을 입증한 경우 회사는 서비스를 정지한 기간만큼 이용 기간을 연장합니다. 이의신청 접수: [support@bolta.io](mailto:support@bolta.io) ### **제17조 (남용금지)** 회사는 고의 또는 악의로 세금계산서 발행과 기타 서비스내 기능을 반복 사용하여 회사의 운영에 피해를 끼치는 이용자에게 제16조에 따라 이용제한 조치를 할 수 있으며, 이에 대하여 이용자에게 별도의 보상을 하지 않습니다. ### **제18조 (유료서비스 이용 계약)** (1) 회사가 유료고객의 유료서비스 이용신청을 승낙한 때(일부 서비스의 경우, 이용 신청 접수 후 사전 공지한 지정된 일자)로부터 유료서비스는 개시되며, 회사의 기술적 사유, 운영상 사유 등 기타 사정에 의하여 유료서비스를 개시할 수 없는 경우에는 제9조에 따라 이용자에게 개별 통지 또는 공지합니다. (2) 회사는 이용자의 유료서비스 이용신청이 있는 경우, 해당 이용자에게 이용신청의 내용을 통지합니다. 회사의 통지를 받은 이용자는 의사표시의 불일치 등 오류가 있는 경우 회사에 정정 또는 수정을 요청하여야 하며, 회사는 이용자의 요청에 따라 처리하여야 합니다. 다만, 이미 대금을 지불한 경우에는 이 약관의 청약 철회 등에 관한 규정에 따릅니다. (3) 회사가 제공하는 서비스의 가격, 지급방법 등 구체적인 사항은 웹사이트 등을 통해 게시됩니다. (4) 서비스 이용요금에 대하여 회사와 이용자 간에 별도 약정이 있는 경우, 해당 약정 내용이 본 약관에 우선하여 적용됩니다. ### **제19조 (포인트 시스템)** (1) API 서비스 이용을 위해서는 사전에 포인트를 충전하여야 합니다. (2) 포인트 충전에 관한 사항은 다음 각 호와 같습니다. 1. 포인트 충전 방법: 회사가 정한 결제 수단 2. 최소 충전 금액: 회사가 별도로 정하여 홈페이지에 공지하는 금액 3. 포인트 환율: 1포인트당 금액은 회사가 별도로 정하여 공지 (3) 충전된 포인트의 유효기간은 충전일로부터 5년입니다. 유효기간 내 추가 충전 시 기존 포인트의 유효기간이 최신 충전일로부터 5년으로 연장됩니다. (4) 포인트는 유효기간 만료 시 자동으로 소멸되며, 회사는 소멸 예정일 30일 전에 이용자에게 이메일 등으로 사전 통지합니다. (5) 포인트 차감에 관한 사항은 다음 각 호와 같습니다. 1. API별 포인트 차감 기준은 회사 홈페이지를 통해 공지 2. 차감된 포인트는 복구되지 않음 (단, 회사의 시스템 오류인 경우 제외) (6) 포인트 잔액이 부족한 경우 해당 API 서비스 이용이 중단될 수 있으며, 회사는 포인트 부족을 사전에 통지하도록 노력합니다. (7) 포인트는 다음 각 호와 같은 제한이 있습니다. 1. 현금으로 환불되지 않음 (단, 본 약관에서 정한 환불 사유에 해당하는 경우 제외) 2. 타인에게 양도하거나 이전할 수 없음 3. 다른 서비스나 혜택으로 교환할 수 없음 (8) 포인트 충전 내역, 사용 내역, 잔액 등은 서비스 내에서 실시간으로 확인할 수 있습니다. (9) 회사는 다음 각 호의 경우 포인트를 회수할 수 있습니다. 1. 이용자가 본 약관을 위반하여 서비스 이용이 제한된 경우 2. 부정한 방법으로 포인트를 획득한 것으로 확인된 경우 3. 시스템 오류로 인해 잘못 지급된 포인트인 경우 ### **제20조 (요금제 변경)** 회사는 이용자가 유료서비스 변경을 신청할 경우 즉시 반영합니다. 단, 요금제의 종류 및 변경 신청 시점 등에 따라 요금제 변경 시점은 달라질 수 있으며, 하위 요금제로 변경을 신청하는 경우 기존 요금제 사용을 전제로 제공되었던 혜택(할인혜택, 서비스 이용 내용 등, 이하 본조에서 "기존 혜택")은 모두 소멸하며, 이용자가 부당하게 기존 혜택을 수령한 부분 등 관련하여 회사에 발생한 손해에 대하여는 손해배상을 청구할 수 있습니다. ### **제21조 (결제수단 등)** (1) 구독 서비스 결제를 위하여 이용할 수 있는 수단은 다음 각 호와 같습니다. 1. 신용카드 2. 계좌이체 3. 기타 회사가 정하는 결제 수단 (2) API 서비스의 포인트 충전을 위하여 이용할 수 있는 수단은 다음 각 호와 같습니다. 1. 신용카드 2. 기타 회사가 정하는 결제 수단 ### **제22조 (청약 철회 및 환불 및 유료서비스 정기결제 중단)** (1) 유료고객은 구매계약일과 서비스 이용 가능일 중 늦은 날부터 7일 이내에 청약철회를 할 수 있으며, 관련 법령에서 규정하는 청약철회가 불가능한 서비스의 경우 청약철회권이 제한됩니다. 단, 「전자상거래 등에서의 소비자보호에 관한 법률」등 관련 법령에서 회사에게 청약철회권의 제한을 위한 조치를 취할 것을 요구하는 경우, 회사는 해당 조치를 취합니다. (2) 구독 서비스 해지 시 환불은 다음 각 호와 같습니다. 1. 월간 구독 1. 이미 결제가 완료된 당월분에 대해서는 환불하지 않으며, 해당 결제 기간 종료일까지 서비스를 제공 2. 정기결제 해지 신청일 이후의 차기 결제분부터는 결제되지 않음 3. 단, 결제 완료 후 7일 이내에 서비스를 전혀 이용하지 않은 경우에 한하여 당월분에 대한 전액 환불 2. 연간 이상 구독 1. 할인 전 정가를 계약 기간(개월수)으로 나눈 월 요금 기준으로 계산 2. 사용 월수(시작 월 포함)에 해당하는 금액 차감 후 환불 3. 할인 혜택은 소급하여 취소됨 (3) API 서비스의 포인트 충전 관련 환불은 다음 각 호와 같습니다. 1. 포인트 충전 후 7일 이내, 포인트를 전혀 사용하지 않은 경우 전액 환불 2. 포인트 충전 후 7일 경과 또는 일부라도 포인트를 사용한 경우 잔여 포인트에서 수수료 10%를 차감하여 환불 (부가세 별도) 3. 포인트 유효기간 만료로 인한 소멸은 환불 대상이 아님 (4) 제1항에도 불구하고 유료고객은 구매한 유료 콘텐츠의 내용이 표시, 광고의 내용과 다르거나 구매계약의 내용과 다르게 이행된 경우에 해당 콘텐츠가 이용 가능하게 된 날부터 3개월 이내, 그 사실을 안 날 또는 알 수 있었던 날부터 30일 이내에 청약철회를 할 수 있습니다. (5) 청약의 철회는 유료고객이 서비스 페이지를 통해 할 수 있으며, 회사에 의사를 표시하여 회사에 도달될 때 그 효력이 발생하고, 회사는 유료고객의 의사표시를 수령한 후 지체 없이 이러한 사실을 유료고객에게 회신합니다. (6) 회사는 「콘텐츠산업 진흥법」 제28조에 따라 제정된 「콘텐츠이용자보호지침」 에 따라, 회사가 부담하였거나 부담할 부대비용, 수수료를 차감하여 환불할 수 있습니다. (7) 이용자가 프로모션 등을 통해 무상으로 취득하는 등 이용자가 직접 비용을 지불하지 아니하고 이용하는 유료서비스에 대하여 회사는 이용자에게 유료서비스 결제 대금을 환불할 의무를 부담하지 않습니다. (8) 유료고객의 신청 또는 동의에 따라 월 정기결제 중인 유료서비스의 경우, 해당 이용자가 유료서비스의 이용요금을 체납하는 경우 연체가 발생한 날 자동으로 이용권 해지가 될 수 있으므로, 유료서비스를 유지하고자 하는 유료고객은 이용요금의 체납 또는 결제수단의 연체가 발생하지 않도록 사전에 조치하여야 합니다. (9) 유료서비스를 이용 중인 유료고객이 워크스페이스를 삭제하는 경우 유료서비스는 즉시 해지되며 환불은 제4항의 방법에 따라 이루어집니다. 이 경우 유료고객의 정보와 서비스이용내용은 관련 법령이 정하는 경우를 제외하고는 본 약관에 따라 처리됩니다. (10) 이용자가 본 약관에서 정하는 이용자의 의무를 위반하여 이용계약 해지 등 제재조치가 있었던 경우 회사는 회사의 고의 또는 중대한 과실이 없는 한 이용자에 대하여 이용요금을 환불하지 않습니다. ### **제23조 (유료서비스 내용 변경)** 회사는 운영상, 기술상의 필요에 따라 공급하는 유료서비스 내용(가액, 제공 서비스 내역 등)을 변경할 수 있으며, 제9조에서 정한 방법에 따라 유료고객에게 사전공지합니다. ### **제24조 (과오금)** (1) 회사는 유료서비스 결제와 관련하여 과오금이 발생한 경우 이용대금의 결제와 동일한 방법으로 과오금 전액을 환불합니다. 다만, 동일한 방법으로 환불이 불가능할 때는 이를 사전에 고지합니다. (2) API 서비스의 과오금은 다음 각 호와 같이 처리됩니다 1. 시스템 오류로 인한 과도한 포인트 차감의 경우 해당 포인트를 즉시 복구 2. 중복 충전 등으로 인한 과오금은 동일한 결제 방법으로 환불 3. 포인트 차감 오류에 대한 이의제기는 해당 API 호출 후 30일 이내에만 가능 4. 과오금 확인을 위해 이용자는 API 사용 내역 등 관련 자료를 제공해야 함 (3) 회사의 귀책사유로 과오금이 발생한 경우 과오금 전액을 환불합니다. 단, 회사의 고의나 과실 없이 이용자의 귀책사유로 과오금이 발생한 경우, 회사가 과오금을 환불하는데 소요되는 비용은 합리적인 범위 내에서 이용자가 부담하여야 하며, 회사는 해당 비용을 차감 후 과오금을 환불할 수 있습니다. (4) 회사는 이용자가 과오금을 주장하며 환불을 요구하는 경우, 정당하게 유료서비스 요금이 부과되었음을 입증하면 환불을 거부할 수 있습니다. (5) 회사는 과오금의 세부 환불절차 및 기타 사항에 대하여 다음과 같이 「콘텐츠이용자보호지침」이 정하는 바에 따릅니다. 1. 회사나 이용자가 과오금의 발생사실을 안 때에는 이메일, 서비스 홈페이지 등 회사가 제시한 방법에 따라 상대방에게 통보 2. 회사는 이용자에게 환불에 필요한 정보를 요청(이용자 성명, 결제증빙서류, 전화번호, 환불 요청 계좌 등, 이하 "환불필요정보") 3. 이용자는 환불 필요 정보를 회사에 제공 4. 회사는 이용자의 환불 필요 정보 제공일로부터 7일 이내 환불 처리 (이용자의 동의가 있는 경우 차회 요금에서 상계) ### **제25조 (회사의 의무)** (1) 회사는 본 약관 및 관련법령에서 금지하는 행위 및 미풍양속에 반하는 행위를 하지 않으며, 계속적이고 안정적인 서비스의 제공을 위하여 최선을 다하여 노력합니다. (2) 회사는 이용자가 안전하게 서비스를 이용할 수 있도록 신용정보를 포함한 일체의 개인정보 보호를 위한 보안시스템을 갖추어야 하며 개인정보처리방침을 공개하고 준수합니다. (3) 회사는 이용자로부터 제기되는 의견이나 불만이 정당하다고 객관적으로 인정될 경우에는 합리적인 기간 내에 신속하게 처리하여야 합니다. 다만, 처리에 장기간이 소요되는 경우 이용자에게 게시판 또는 이메일 등을 통하여 지체 사유를 안내하고 처리과정 및 처리결과를 전달합니다. (4) 회사는 이용계약의 체결, 계약사항의 변경 및 해지 등 이용자와의 계약관련 절차 및 내용 등에 있어 이용자에게 편의를 제공하도록 노력합니다. ### **제26조 (이용자의 의무)** (1) 이용자는 회사에서 제공하는 서비스를 본래의 이용 목적 이외의 용도로 사용하거나 다음 각 호에 해당하는 행위를 해서는 안됩니다. 1. 가입신청 또는 정보 변경을 목적으로 회사에 개인정보 등록시 실명이 아닌 정보 또는 다른 사람의 정보를 사용하거나 허위 사실을 기재하는 행위 2. 타인으로 가장하거나 타인과의 관계를 허위로 명시하는 행위, 다른 이용자의 계정 및 비밀번호를 도용, 부정하게 사용하는 행위 3. 알려지거나 알려지지 않은 버그를 악용하여 서비스를 이용하는 행위 4. 회사 및 제3자의 명예를 훼손하거나 업무를 방해하거나 회사 및 제3자에게 손해를 가하는 행위 5. 회사의 지식재산권, 제3자의 지식재산권, 초상권 등 기타 권리를 침해하거나 권한 없이 서비스를 이용하여 다른 이용자의 개인정보를 수집, 저장, 유포, 게시하는 행위 6. 제3자를 기망하여 이득을 취하거나 회사가 제공하는 서비스를 불건전하게 이용하거나 하여 제3자에게 피해를 주는 행위 7. 회사로부터 특별한 권리를 부여받지 않고 서비스 사이트를 변경하거나 사이트에 다른 프로그램을 추가 또는 삽입하거나 서버를 해킹, 역설계, 소스코드의 유출 및 변경, 별도의 서버를 구축하거나 웹사이트의 일부분을 임의로 변경 또는 도용하여 회사를 사칭하는 행위 8. 회사의 직원이나 운영자를 가장, 사칭하거나 또는 타인의 명의를 도용하여 문서를 등록하거나 메일을 발송하는 행위 9. 회사의 동의 없이 영리, 영업, 광고, 정치활동, 불법선거운동 등을 목적으로 서비스를 이용하는 행위 10. 본 서비스 이용 규칙에 반하는 서비스 이용 행위 11. 본 서비스와 동일, 유사 또는 관련된 서비스를 개발하거나 출시하기 위한 목적으로 본 서비스에 가입, 이용 또는 접근하는 행위 12. 정당한 사유 없이 유료 서비스를 3회 이상 반복적으로 결제, 취소하는 행위 13. 그 구체적인 의도, 목적 및 내용을 종합적이고 합리적으로 고려할 때 실질적으로 위 각 호와 동일하거나 그에 준하는 행위 14. 기타 공공질서 및 미풍양속을 위반하거나 불법적, 부당한 행위 및 법령에 위배되는 행위 및 그에 수반되는 제반 행위 (2) 이용자는 본 서비스 이용 규칙, 회사 홈페이지 상의 공지사항 및 이용약관의 수정사항 등을 확인하고 이를 준수할 의무가 있으며 기타 회사의 업무에 방해되는 행위를 하여서는 안 됩니다. (3) 회사는 제1항, 제2항 및 다음 각 호의 어느 하나에 해당하는 행위의 구체적인 사항을 운영 정책에서 정할 수 있으며, 이용자는 이를 준수할 의무가 있습니다. 1. 이용자의 계정명, 비밀번호의 정함에 대한 제한 2. 계정공유금지정책 3. 요금정책 4. 이용 계약 승낙 정책 5. 서비스를 활용한 불법행위 또는 그에 수반되는 행위 금지를 위한 제반 정책 6. 기타 이용자의 서비스 이용에 대한 본질적인 권리를 침해하지 않는 범위 내에서 회사가 운영상 필요하다고 인정하는 사항 ### **제27조 (서비스 등의 보호)** (1) 이용자는 볼타를 무단 복제하거나 고의 또는 과실로 볼타 및 서비스에 관하여 이용자에게 공개되지 않은 정보를 부당하게 취득하거나 부당하게 취득한 정보를 제3자에게 유출할 수 없습니다. (2) 이용자는 이용계약 도중 또는 종료 후라고 하더라도 볼타, 볼타와 유사한 솔루션의 제작/판매행위를 할 수 없으며, 제3자를 통한 우회적 제작/판매행위도 이용자 본인의 행위로 간주합니다. (3) 이용자는 전 1항 또는 2항을 위반할 경우, 민.형사상의 모든 법적 책임을 부담합니다. ### **제28조 (데이터의 보존 및 파기)** (1) 이용자는 서비스 이용 중 데이터를 별도로 상시 백업, 저장하여야 하며, 회사가 이용자의 데이터를 백업하거나 이용자에게 제공할 의무는 없습니다. 이용자가 전단의 의무를 소홀히 하여 발생한 데이터의 유출, 누락이나 손실에 대해서는 회사는 책임을 부담하지 않습니다. (2) 서비스 이용기간 만료, 서비스 이용계약의 해제 또는 해지 등의 사유로 회사가 서비스 제공을 종료한 경우 회사는 구성원의 정보를 비롯한 모든 데이터를 즉시 파기합니다. 단, 다음 정보들은 일정 기간 동안 보존합니다. * 서명 완료된 문서 및 관련 정보(단, 서명 요청자 및 서명자 전원의 동의가 있을 경우 삭제 가능) * 관련법령 및 회사의 개인정보 처리방침에서 정한 바에 따라 특별히 이용자 관계된 정보를 저장해야 할 때 ### **제29조 (손해배상)** (1) 회사가 제공하는 유료서비스의 하자 등에 의하여 이용자에게 피해가 발생한 경우, 이용자에 대한 피해보상의 기준, 범위, 방법 및 절차에 관한 사항은 콘텐츠이용자보호지침에 따릅니다. (2) 이용자가 본 약관 및/또는 본 서비스 이용규칙을 위반하거나 이용자가 회사에 요청 또는 지시한 행위를 회사가 수행함으로 인하여 회사에 손해가 발생한 경우 또는 이용자가 서비스의 이용과 관련하여 회사에 손해를 입힌 경우 이용자는 회사에 대하여 그로 인한 손해를 배상하여야 합니다. (3) 이용자가 서비스를 이용함에 있어 행한 불법행위 및/또는 본 서비스 이용규칙을 위반한 행위 또는 이용자의 요청 또는 지시로 인하여 회사가 행한 행위에 따라 회사가 당해 이용자 및/또는 제3자로부터 손해배상청구 또는 소송 등 각종 이의제기를 받는 경우 당해 이용자는 자신의 책임과 비용으로 회사를 면책시켜야 하며, 회사가 면책되지 못한 경우 당해 이용자는 그로 인하여 회사에 발생한 모든 손해를 배상할 책임이 있습니다. (4) 제16조 및 제17조에 의한 이용제한조치는 이용자에 대한 회사의 손해배상 청구에 영향을 미치지 아니합니다. ### **제30조 (책임 제한)** (1) 회사는 천재지변 또는 국가 정책 등 이에 준하는 불가항력으로 인하여 서비스를 제공할 수 없는 경우에는 서비스 제공에 관한 책임이 면제됩니다. (2) 회사는 이용자의 귀책사유로 인한 서비스 중지 또는 이용의 장애, 기간통신사업자가 전기통신서비스를 중지하거나 정상적으로 제공하지 아니하여 이용자에게 손해가 발생한 경우에는 책임이 면제됩니다. (3) 회사는 이용자가 서비스와 관련하여 게재한 정보, 자료, 사실의 신뢰도, 정확성 등의 내용에 관하여는 책임을 지지 않습니다. (4) 회사는 이용자 간 또는 이용자와 제3자 상호간에 서비스를 매개로 하여 거래 등을 한 경우에는 책임이 면제됩니다. (5) 회사는 무료로 제공되는 서비스 이용과 관련하여 관련법령에 특별한 규정이 없는 한 책임을 지지 않습니다. ### **제31조 (준거법 및 재판관할)** (1) 본 약관은 대한민국법령에 의하여 규정되고 이행됩니다. (2) 서비스 이용과 관련하여 회사와 이용자 간에 발생된 분쟁에 대해서는 회사의 본사 소재지를 관할하는 법원을 전속적 합의관할로 합니다. (3) 해외에 주소나 거소가 있는 이용자의 경우 회사와 이용자간 발생한 분쟁에 관한 소송은 전항에도 불구하고 대한민국 서울중앙지방법원을 관할법원으로 합니다. ### 부칙 * 공고일: 2025. 7. 23. * 시행일: 2025. 8. 30. *** * [2025/07/23 - 서비스 이용약관](https://docs.bolta.io/docs/terms-of-service/20250723) * [2023/05/18 - 서비스 이용약관](https://docs.bolta.io/docs/terms-of-service/20230518) # 업데이트 노트 Source: https://docs.bolta.io/docs/update-note 볼타의 다양한 기능 업데이트 내용을 확인할 수 있어요. [업데이트 기능 보러가기](https://bolta.io/update-note) # 예금주 일괄 조회 Source: https://docs.bolta.io/api-reference/bank-account-holder/bulk-inquire-bank-account-holders /openapi.yaml post /v1/bankAccountHolders:bulkInquire 계좌 1~100개의 예금주명을 한 번에 조회합니다. 계좌마다 결과 하나를 요청과 같은 순서로 돌려줍니다. 찾지 못한 계좌는 `holderName`이 `null`이고 `error`에 원인이 옵니다. 한 계좌도 판정하지 못하면 이 응답 대신 `503`을 반환합니다. [예금주 조회 가이드](/docs/api-introduction/bank-account-holder) # 예금주 단건 조회 Source: https://docs.bolta.io/api-reference/bank-account-holder/inquire-bank-account-holder /openapi.yaml post /v1/bankAccountHolders:inquire 은행코드와 계좌번호로 예금주명 한 건을 조회합니다. 발급자 등록과 공동인증서가 필요 없고, 요청자 관리번호도 쓰지 않습니다. 입금 금액이 정해진 가상계좌는 `amount`에 금액을 넣어야 조회합니다. 여러 계좌를 한 번에 조회하려면 일괄 조회 API를 쓰세요. [예금주 조회 가이드](/docs/api-introduction/bank-account-holder) # 입출금 내역 조회 Source: https://docs.bolta.io/api-reference/bank-account-transactions/list-bank-account-transactions /openapi.yaml get /v1/bankAccounts/transactions 볼타가 은행에서 가져와 적재한 입출금 내역을 볼타에서 거래가 바뀐 순서로 반환합니다. 거래 시각 순서가 아닙니다. 새로 적재됐거나 다시 보이게 된 거래는 `ACTIVE`로, 대시보드에서 안 보이게 된 거래는 `id`만 담은 `REMOVED`로 옵니다. 같은 `id`가 여러 번 올 수 있으니 받은 순서대로 `id` 기준으로 덮어쓰거나 지우세요. `items`가 비어 있어도 `hasMore`가 `true`일 수 있으니 `hasMore`를 보고 이어 호출하세요. `nextCursor`는 마지막 페이지에서도 채워집니다. 이 값을 저장해 두었다가 다음에 넘기면 그 사이 바뀐 거래만 받습니다. 최근 5분 안에 바뀐 거래는 다음 호출로 미룹니다. 스탠다드 플랜 이상을 구독해야 하며 포인트는 차감하지 않습니다. [입출금 내역 조회 가이드](/docs/api-introduction/bank-account-transactions) # 입출금 계좌 목록 조회 Source: https://docs.bolta.io/api-reference/bank-account-transactions/list-bank-accounts /openapi.yaml get /v1/bankAccounts API 키가 속한 사업자에 연결된 입출금 계좌와 계좌별 동기화 상태를 조회합니다. 스탠다드 플랜 이상을 구독해야 하며 포인트는 차감하지 않습니다. 계좌는 볼타 대시보드에서 먼저 연결하세요. 테스트 키는 구독과 관계없이 고정 샘플 계좌 2개를 반환합니다. [입출금 내역 조회 가이드](/docs/api-introduction/bank-account-transactions) # 입출금 내역 동기화 요청 Source: https://docs.bolta.io/api-reference/bank-account-transactions/request-bank-account-sync /openapi.yaml post /v1/bankAccounts:sync 연결된 모든 입출금 계좌의 은행 조회를 요청합니다. API가 `202 Accepted`로 접수만 하고 은행 조회는 비동기로 진행합니다. 볼타가 입출금 내역을 주기적으로 가져오므로, 그 전에 최신 내역이 필요할 때만 요청하세요. 진행 상황은 계좌 목록 조회의 `syncStatus`로 확인하고, `IN_PROGRESS`가 끝나면 저장한 cursor로 입출금 내역을 이어 받으세요. 사업자마다 30분에 1번, 24시간에 12번까지 요청할 수 있습니다. 이미 진행 중이라 거절한 요청(`409`)은 한도를 차감하지 않습니다. 테스트 키는 한도를 차감하지 않고 접수 응답만 반환합니다. [입출금 내역 조회 가이드](/docs/api-introduction/bank-account-transactions) # 사업자 프로필 상세 조회 Source: https://docs.bolta.io/api-reference/business-profile/retrieve-business-profile /openapi.yaml get /v1/businessProfiles/{businessRegistrationNumber} 사업자등록번호 한 건의 상세 프로필을 조회합니다. 발급자 등록과 공동인증서가 필요 없고, 요청자 관리번호도 쓰지 않습니다. 조회에 성공하면 90포인트를 차감하고, 프로필이 없는 번호(`404`)는 차감하지 않습니다. `registration`과 `taxation`은 볼타가 마지막으로 확인해 저장한 값입니다. 호출 시점의 상태가 필요하면 사업자등록 상태 조회 API를 쓰세요. 테스트 키는 가이드에 안내한 테스트 번호만 모의 조회합니다. [사업자 프로필 조회 가이드](/docs/api-introduction/business-profile) # 사업자 프로필 검색 Source: https://docs.bolta.io/api-reference/business-profile/search-business-profiles /openapi.yaml get /v1/businessProfiles:search 상호, 대표자명, 사업자등록번호로 사업자를 검색합니다. 발급자 등록과 공동인증서가 필요 없고, 요청자 관리번호도 쓰지 않습니다. 돌려준 결과 한 건마다 9포인트를 차감하고, 결과가 없으면 차감하지 않습니다. `hasMore`가 `true`이면 `nextCursor`를 `cursor`에 넣어 이어 받으세요. 받은 결과가 `limit`보다 적어도 `hasMore`가 `true`일 수 있으니 `hasMore`를 보고 이어 호출하세요. 한 검색어로 앞 1,000건까지 받을 수 있습니다. 테스트 키는 가이드에 안내한 모의 사업자에서만 찾습니다. [사업자 프로필 조회 가이드](/docs/api-introduction/business-profile) # 사업자등록증 인식과 진위확인 Source: https://docs.bolta.io/api-reference/business-registration-certificate-extraction-and-verification/extract-and-verify-business-registration-certificate /openapi.yaml post /v1/businessRegistrationCertificates:extract 사업자등록증 파일 한 건을 읽고, 읽은 사업자등록번호, 첫 번째 대표자명, 개업일로 국세청 진위확인을 합니다. 발급자 등록과 공동인증서가 필요 없고, 요청자 관리번호도 쓰지 않습니다. 처리에 최대 약 45초가 걸리므로 클라이언트 읽기 타임아웃은 60초 이상으로 잡으세요. 테스트 키는 올린 파일과 관계없이 고정 결과를 돌려줍니다. [사업자등록증 인식과 진위확인 가이드](/docs/api-introduction/business-registration-certificate) # 사업자등록 상태 단건 조회 Source: https://docs.bolta.io/api-reference/business-registration-status/check-business-registration-status /openapi.yaml post /v1/businessRegistrationStatuses:check 사업자등록번호 한 건의 등록 상태와 과세유형을 조회합니다. 발급자 등록과 공동인증서가 필요 없고, 요청자 관리번호도 쓰지 않습니다. 상태를 확인하면 10포인트를 차감합니다. 테스트 키는 가이드에 안내한 고정 번호만 모의 조회합니다. 여러 번호를 한 번에 조회하려면 일괄 조회 API를 쓰세요. [사업자등록 상태 조회 가이드](/docs/api-introduction/business-registration-status) # 사업자등록 상태 일괄 조회 Source: https://docs.bolta.io/api-reference/business-registration-status/check-business-registration-statuses-in-bulk /openapi.yaml post /v1/businessRegistrationStatuses:checkBulk 사업자등록번호를 한 번에 최대 100개까지 조회합니다. 발급자 등록과 공동인증서가 필요 없고, 요청자 관리번호도 쓰지 않습니다. 상태를 확인한 번호마다 10포인트를 차감하고, `status`가 `null`인 번호는 차감하지 않습니다. 중복 번호는 처음 나온 것만 남기고, 요청 순서대로 `results`에 담습니다. 이번 요청에서 확인하지 못한 번호는 `status`가 `null`이니 잠시 후 그 번호만 다시 조회하세요. 한 건도 확인하지 못하면 `503`을 반환합니다. 테스트 키는 가이드에 안내한 고정 번호만 모의 조회하며, 목록 밖 번호가 하나라도 섞이면 요청 전체를 거절합니다. [사업자등록 상태 조회 가이드](/docs/api-introduction/business-registration-status) # 현금영수증 취소 Source: https://docs.bolta.io/api-reference/cash-receipt/cancel-cash-receipt /openapi.yaml post /v1/cashReceipts/{issuanceKey}/cancellation 발행 처리에 접수된 원본 현금영수증을 전액 취소합니다. 국세청 발급 확정 전에도 취소할 수 있지만, 원본 요청이 `PENDING` 상태이면 취소할 수 없습니다. API가 `202 Accepted`를 먼저 반환합니다. 최종 결과는 웹훅이나 상태 조회 API로 확인하세요. 볼타 외부(예: 홈택스)에서 전액이나 일부가 먼저 취소된 원본을 취소해도 API는 `202 Accepted`를 반환합니다. 이 취소 요청은 `CANCEL_FAILED` 상태와 `CANCELLATION_TARGET_NOT_FOUND` 실패 코드로 끝납니다. 원본이 이미 `EXTERNALLY_CANCELED` 상태여도 같습니다. # 현금영수증 발행 Source: https://docs.bolta.io/api-reference/cash-receipt/issue-cash-receipt /openapi.yaml post /v1/cashReceipts 현금영수증 발행 요청은 비동기입니다. API가 `202 Accepted`와 `issuanceKey`를 먼저 반환합니다. 처리 중이거나 발행 결과 확인이 필요한 요청은 요청일 다음 날 17:00(KST) 이후에 확정될 수 있습니다. 상태 조회에서 `ISSUED`를 확인하거나 `CASH_RECEIPT_ISSUED` 웹훅을 받아 최종 발행 결과를 확인하세요. 수취인 유형(`recipient.type`)과 발급수단(`recipient.value`) 입력 방식, 금액과 검증 규칙은 [현금영수증 발행 가이드](/docs/api-introduction/cash-receipt-guide)를 참고하세요. # 현금영수증 발행 상태 조회 Source: https://docs.bolta.io/api-reference/cash-receipt/retrieve-cash-receipt-status /openapi.yaml get /v1/cashReceipts/status 발행이나 취소 요청에 사용한 `Bolta-Client-Reference-Id`로 처리 상태를 조회합니다. `status`로 성공과 실패를 판별하고, 실패 사유는 `failure`에서 확인하세요. LIVE 요청은 처리 중이거나 발행 결과 확인이 필요하면 요청일 다음 날 17:00(KST) 이후에 확정될 수 있습니다. # 발급자 공동인증서 등록 내역 조회 Source: https://docs.bolta.io/api-reference/certificate/retrieve-issuer-certificate-registration-status /openapi.yaml get /v1/issuers/{issuerId}/certificates/latestHistory 가장 최근 인증서 등록 내역 1건을 조회합니다. 등록 후 30초 이내에 확인하세요. # 발급자 공동인증서 등록 URL 조회 Source: https://docs.bolta.io/api-reference/certificate/retrieve-issuer-certificate-registration-url /openapi.yaml get /v1/issuers/{issuerId}/certificates/url 발급자가 공동인증서를 등록할 수 있는 URL을 발급합니다. # 발급자 공동인증서 등록 해제 Source: https://docs.bolta.io/api-reference/certificate/unregister-issuer-certificate /openapi.yaml delete /v1/issuers/{issuerId}/certificates 등록된 발급자 공동인증서를 삭제합니다. # 서류 발급 요청 Source: https://docs.bolta.io/api-reference/document-issuance/request-document-issuance /openapi.yaml post /v1/documentIssuances 서류 발급을 접수합니다. API가 `202 Accepted`와 `issuanceKey`를 반환하고 발급은 비동기로 진행합니다. `issuanceKey`로 결과를 조회하세요. 테스트 키는 기관에 신청하지 않고 포인트도 차감하지 않습니다. 홈택스 서류는 항상 바로 `COMPLETED`로 끝납니다. 법인등기는 `corporationNumber` `1100000000014`가 `COMPLETED`, `1100000000071`이 `FAILED`로 바로 끝나고, 다른 번호는 `400 INVALID_REQUEST`를 반환합니다. `COMPLETED` 조회 응답에는 샘플 PDF 주소가 담깁니다. [서류 발급 가이드](/docs/api-introduction/document-issuance) # 서류 발급 결과 조회 Source: https://docs.bolta.io/api-reference/document-issuance/retrieve-document-issuance /openapi.yaml get /v1/documentIssuances/{issuanceKey} 발급 요청의 상태를 조회합니다. 홈택스 서류는 보통 30초 안에 끝나니 5~10초 간격으로 조회하세요. 법인등기는 몇 분이 걸립니다. 같은 사업자의 홈택스 서류를 여러 건 보내면 뒤 요청은 앞 요청이 끝난 뒤 시작합니다. 기다리는 시간이 1시간을 넘기면 `FAILED`로 바뀌고 포인트를 차감하지 않습니다. `COMPLETED`가 되면 `downloadUrl`로 원본 PDF를 내려받으세요. 주소는 홈택스 서류 5분, 법인등기 1분(테스트 키 샘플 주소는 5분) 동안 유효하고, 만료되면 다시 조회해 새 주소를 받으세요. 파일 이름은 `{서류명}_{사업자등록번호}_{발급일}.pdf`이고 법인등기는 사업자등록번호 대신 법인등록번호를 씁니다. [서류 발급 가이드](/docs/api-introduction/document-issuance) # 발급자 목록 조회 Source: https://docs.bolta.io/api-reference/issuer/list-issuers /openapi.yaml get /v1/issuers 현재 API 키로 등록한 발급자와 인증서 상태를 조회합니다. # 발급자 등록 Source: https://docs.bolta.io/api-reference/issuer/register-issuer /openapi.yaml post /v1/issuers 세금계산서를 발급할 사업자를 등록하고 `issuerId`를 발급받습니다. # 발급자 조회 Source: https://docs.bolta.io/api-reference/issuer/retrieve-issuer /openapi.yaml get /v1/issuers/{issuerId} 등록된 발급자 정보와 인증서 상태를 조회합니다. # 매입 내역 조회 Source: https://docs.bolta.io/api-reference/revenue-and-expense/list-expenses /openapi.yaml get /v1/expenses 볼타에 쌓인 매입을 볼타에서 바뀐 순서로 반환합니다. 파라미터, 응답, cursor 규칙은 매출 내역 조회와 같습니다. 매입은 볼타가 지급 완료 여부를 다시 판정할 때도 순서가 뒤로 옮겨지므로 내용이 같은 매입이 한 번 더 올 수 있습니다. 덮어쓰면 됩니다. `items`가 비어 있어도 `hasMore`가 `true`일 수 있으니 `hasMore`를 보고 이어 호출하세요. 최근 5분 안에 바뀐 매입은 다음 호출로 미룹니다. 스탠다드 플랜 이상을 구독해야 하며 포인트는 차감하지 않습니다. [매출/매입 내역 조회 가이드](/docs/api-introduction/revenue-expense) # 매출 내역 조회 Source: https://docs.bolta.io/api-reference/revenue-and-expense/list-revenues /openapi.yaml get /v1/revenues 볼타에 쌓인 매출을 볼타에서 바뀐 순서로 반환합니다. 작성일자 순서가 아닙니다. 대시보드에 보이는 매출은 `ACTIVE`로, 보관하거나 비활성이 되어 안 보이게 된 매출은 `id`만 담은 `REMOVED`로 옵니다. 같은 `id`가 여러 번 올 수 있으니 받은 순서대로 `id` 기준으로 덮어쓰거나 지우세요. 홈택스에서 수집해 상세를 채우는 중인 매출은 `id`만 담은 `PENDING`으로 오고, 상세가 채워지면 같은 `id`가 `ACTIVE`로 다시 옵니다. `items`가 비어 있어도 `hasMore`가 `true`일 수 있으니 `hasMore`를 보고 이어 호출하세요. `nextCursor`는 마지막 페이지에서도 채워집니다. 이 값을 저장해 두었다가 다음에 넘기면 그 사이 바뀐 매출만 받습니다. 최근 5분 안에 바뀐 매출은 다음 호출로 미룹니다. 스탠다드 플랜 이상을 구독해야 하며 포인트는 차감하지 않습니다. [매출/매입 내역 조회 가이드](/docs/api-introduction/revenue-expense) # 매입 동기화 요청 Source: https://docs.bolta.io/api-reference/revenue-and-expense/request-expense-sync /openapi.yaml post /v1/expenses:sync 대시보드에서 연동한 매입 전부의 수집을 요청합니다. API가 `202 Accepted`로 접수만 하고 수집은 비동기로 진행합니다. 볼타가 매입을 주기적으로 수집하므로, 방금 국세청에 올라간 문서가 급할 때만 요청하세요. 수집 상태를 조회하는 경로는 없습니다. 저장한 cursor로 `GET /v1/expenses`를 이어 받으세요. 사업자마다 30분에 1번, 24시간에 12번까지 요청할 수 있고, 매출 동기화와 한도를 따로 셉니다. `409`와 `422`로 거절한 요청은 한도를 차감하지 않습니다. 테스트 키는 수집하지 않고 접수 응답만 반환합니다. [매출/매입 내역 조회 가이드](/docs/api-introduction/revenue-expense) # 매출 동기화 요청 Source: https://docs.bolta.io/api-reference/revenue-and-expense/request-revenue-sync /openapi.yaml post /v1/revenues:sync 대시보드에서 연동한 매출 전부의 수집을 요청합니다. API가 `202 Accepted`로 접수만 하고 수집은 비동기로 진행합니다. 볼타가 매출을 주기적으로 수집하므로, 방금 국세청에 올라간 문서가 급할 때만 요청하세요. 수집 상태를 조회하는 경로는 없습니다. 저장한 cursor로 `GET /v1/revenues`를 이어 받으세요. 사업자마다 30분에 1번, 24시간에 12번까지 요청할 수 있고, 매입 동기화와 한도를 따로 셉니다. `409`와 `422`로 거절한 요청은 한도를 차감하지 않습니다. 테스트 키는 수집하지 않고 접수 응답만 반환합니다. [매출/매입 내역 조회 가이드](/docs/api-introduction/revenue-expense) # 전자(세금)계산서 역발행 - 요청 취소 Source: https://docs.bolta.io/api-reference/reverse-issuance/cancel-reverse-issuance-request /openapi.yaml put /v1/taxInvoices/{issuanceKey}/issueRequest/cancel 역발행 요청을 취소합니다. 이미 승인, 취소, 발행된 요청이면 API가 에러를 반환합니다. [이메일 승인 역발행](/docs/api-introduction/usecase-reverse-email) | [간편 승인 역발행](/docs/api-introduction/usecase-reverse-simple)을 참고하세요. # 전자(세금)계산서 역발행 Source: https://docs.bolta.io/api-reference/reverse-issuance/request-reverse-issuance /openapi.yaml post /v1/taxInvoices/issueRequest 전체 품목의 금액 합이 발행 금액이 됩니다. `taxType`에 따라 품목의 세액(`tax`)을 전달하세요. 금액 계산 방식은 정발행과 동일합니다. [발행 금액 계산 가이드](/docs/api-introduction/issuance-guide)와 [이메일 승인 역발행](/docs/api-introduction/usecase-reverse-email) | [간편 승인 역발행](/docs/api-introduction/usecase-reverse-simple)을 참고하세요. API가 요청 텍스트의 보이지 않는 문자를 자동으로 지웁니다. 탭, 줄바꿈, 캐리지리턴은 유지합니다. 이모지처럼 U+FFFF를 넘는 보충 문자는 `400`으로 거부합니다. [지원하지 않는 문자](/docs/api-introduction/issuance-guide#지원하지-않는-문자)를 참고하세요. # 전자(세금)계산서 역발행 - 승인 URL 조회 Source: https://docs.bolta.io/api-reference/reverse-issuance/retrieve-reverse-issuance-approval-url /openapi.yaml get /v1/taxInvoices/{issuanceKey}/issueRequest/grant 역발행 승인 URL을 조회합니다. URL은 10분간 유효하며, 공급자의 공동인증서가 등록돼 있어야 합니다. 전체 워크플로우는 [간편 승인 역발행](/docs/api-introduction/usecase-reverse-simple)을 참고하세요. # 전자(세금)계산서 역발행 - 요청 상태 조회 Source: https://docs.bolta.io/api-reference/reverse-issuance/retrieve-reverse-issuance-request-status /openapi.yaml get /v1/taxInvoices/{issuanceKey}/issueRequest 역발행 요청의 현재 상태를 조회합니다. 웹훅을 받지 못했거나 공급자가 아직 승인하지 않은 요청을 확인할 때 쓰세요. 테스트 키 요청은 공급자 승인 단계를 거치지 않습니다. 요청 취소 API로 취소한 테스트 요청은 `CANCELED`를 반환합니다. [이메일 승인 역발행](/docs/api-introduction/usecase-reverse-email) | [간편 승인 역발행](/docs/api-introduction/usecase-reverse-simple)을 참고하세요. # 전자(세금)계산서 수정발행 - 계약의 해제 Source: https://docs.bolta.io/api-reference/tax-invoice-issuance/amend-tax-invoice--cancellation-of-contract /openapi.yaml post /v1/taxInvoices/{issuanceKey}/amend/termination `date`(작성일자) 하나만 전달하면 기존 발행건을 상계처리합니다. 원본 세금계산서의 품목 공급가액이 음수이면 수정발행할 수 없습니다. [수정발행 유형 가이드](/docs/api-introduction/amendment-guide)를 참고하세요. # 전자(세금)계산서 수정발행 - 공급가액 변동 Source: https://docs.bolta.io/api-reference/tax-invoice-issuance/amend-tax-invoice--change-in-supply-cost /openapi.yaml post /v1/taxInvoices/{issuanceKey}/amend/changeSupplyCost 기존 대비 늘어난(+) 금액이나 줄어든(-) 금액을 품목으로 전달하세요. `taxType`에 따라 품목의 세액(`tax`)을 전달하세요. 자세한 계산 예시는 [수정발행 유형 가이드](/docs/api-introduction/amendment-guide#공급가액-변동)를 참고하세요. API가 요청 텍스트의 보이지 않는 문자를 자동으로 지웁니다. 탭, 줄바꿈, 캐리지리턴은 유지합니다. 이모지처럼 U+FFFF를 넘는 보충 문자는 `400`으로 거부합니다. [지원하지 않는 문자](/docs/api-introduction/issuance-guide#지원하지-않는-문자)를 참고하세요. # 전자(세금)계산서 수정발행 - 착오에 의한 이중발급 Source: https://docs.bolta.io/api-reference/tax-invoice-issuance/amend-tax-invoice--double-issuance-by-mistake /openapi.yaml post /v1/taxInvoices/{issuanceKey}/amend/doubleIssuance 요청 본문 없이 호출하면 기존 발행건을 상계처리합니다. 작성일자는 당초 세금계산서의 작성일자를 자동으로 적용합니다. [수정발행 유형 가이드](/docs/api-introduction/amendment-guide)를 참고하세요. # 전자(세금)계산서 정발행 Source: https://docs.bolta.io/api-reference/tax-invoice-issuance/issue-tax-invoice /openapi.yaml post /v1/taxInvoices/issue 전체 품목의 금액 합이 발행 금액이 됩니다. `taxType`에 따라 품목의 세액(`tax`)을 전달하세요. 자세한 금액 계산 방식은 [발행 금액 계산 가이드](/docs/api-introduction/issuance-guide), 위수탁 발행 절차는 [위수탁 발행 가이드](/docs/api-introduction/usecase-brokered)를 참고하세요. API가 요청 텍스트의 보이지 않는 문자를 자동으로 지웁니다. 탭, 줄바꿈, 캐리지리턴은 유지합니다. 이모지처럼 U+FFFF를 넘는 보충 문자는 `400`으로 거부합니다. [지원하지 않는 문자](/docs/api-introduction/issuance-guide#지원하지-않는-문자)를 참고하세요. # 전자(세금)계산서 내용 조회 Source: https://docs.bolta.io/api-reference/tax-invoice-retrieval/retrieve-tax-invoice /openapi.yaml get /v1/taxInvoices/{issuanceKey} `발행 완료`된 전자(세금)계산서의 내용(국세청승인번호 포함)을 조회합니다. 활용 예시: [B2B 거래](/docs/api-introduction/usecase-b2b) | [정기 결제](/docs/api-introduction/usecase-recurring) # 전자(세금)계산서 요청자 관리번호 이용하여 조회 Source: https://docs.bolta.io/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-by-client-reference /openapi.yaml get /v1/taxInvoices/issue/status `Bolta-Client-Reference-Id`로 요청 처리 상태를 조회합니다. 요청자 관리번호는 [인증 가이드](/docs/api-introduction/authentication#client-reference-id)를 참고하세요. # 전자(세금)계산서 발행 마감일 조회 Source: https://docs.bolta.io/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-issuance-deadline /openapi.yaml get /v1/taxInvoiceIssueDueDates 작성일자를 보내면 그 전자(세금)계산서의 발행 마감일을 반환합니다. 마감일 당일까지 발행할 수 있습니다. 정발행과 역발행 요청 API도 마감일을 검증합니다. 발행 전에 마감일을 미리 확인할 때 쓰세요. 발급자 등록, 공동인증서, 요청자 관리번호가 필요 없습니다. 테스트 키와 라이브 키가 같은 결과를 반환하며 포인트를 차감하지 않습니다. 마감일은 작성일자가 속한 달의 다음 달 10일입니다. 10일이 주말이나 공휴일이면 다음 영업일이고, 국세청이 기한을 연장한 달은 연장된 날짜를 따릅니다. 마감일은 필요할 때마다 조회하세요. [세금계산서 발행 마감일 조회 가이드](/docs/api-introduction/tax-invoice-issue-due-date) # 세금계산서 PDF 조회 Source: https://docs.bolta.io/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-pdf /openapi.yaml get /v1/taxInvoices/{issuanceKey}/pdf 발행 완료한 세금계산서(정발행, 역발행, 수정세금계산서)의 PDF 다운로드 주소를 조회합니다. 발행을 요청한 API 키로 호출하세요. 포인트를 차감하지 않습니다. 첫 호출이 PDF 생성을 시작합니다. `202`를 받으면 `Retry-After` 초 뒤 같은 요청을 다시 보내세요. 준비되면 API가 `200`과 5분 동안 유효한 주소를 반환합니다. 주소가 만료되면 다시 호출해 새 주소를 받으세요. 테스트 키는 바로 `200`과 샘플 PDF 주소를 반환합니다. [세금계산서 PDF 조회 가이드](/docs/api-introduction/tax-invoice-pdf) # CLI Source: https://docs.bolta.io/docs/api-introduction/sdk-cli Bolta CLI로 터미널에서 세금계산서를 발행, 조회, 관리하는 방법을 안내합니다. ![Bolta CLI](https://mintcdn.com/bolta/XhKjDkW0y5x7zZO_/images/docs/sdk-cli__hero.png?fit=max\&auto=format\&n=XhKjDkW0y5x7zZO_\&q=85\&s=3541c1f587b0fd8499aaa50e4c85bd52) Bolta CLI는 터미널에서 세금계산서를 발행하고 관리할 수 있는 커맨드라인 도구입니다. AI 에이전트(Claude Code 등)도 이 CLI로 세금계산서 업무를 자동화할 수 있습니다. ## 설치 ```bash theme={"dark"} npm install -g @bolta-io/cli ``` > [!NOTE] > > Node.js 20.0.0 이상이 필요합니다. ## 인증 설정 API 키를 환경변수나 CLI 명령으로 설정하세요. ```bash theme={"dark"} # 방법 1: 환경변수 (권장) export BOLTA_API_KEY="test_your_key" # 방법 2: CLI 명령 (영구 저장 - ~/.bolta/config.json) bolta config set api-key test_your_key # 연결 테스트 bolta config test ``` > [!NOTE] > > 인증 해결 우선순위: CLI 플래그(`--api-key`) > 환경변수(`BOLTA_API_KEY`) > 설정 파일(`~/.bolta/config.json`) API 키 발급은 [개발자센터 API 키 관리](/docs/developer-center/api-key) 페이지를 참고하세요. ## 커맨드 ### 발급자 관리 `issuer` 커맨드는 세금계산서 발행에 사용할 발급자를 등록하고 조회합니다. ```bash theme={"dark"} # 발급자 등록 bolta issuer create --data '{ "identificationNumber": "1234567890", "organizationName": "주식회사 테스트", "representativeName": "홍길동" }' # 발급자 조회 bolta issuer get ``` ### 인증서 관리 ```bash theme={"dark"} # 인증서 등록 URL 조회 bolta certificate url # 인증서 등록 상태 조회 bolta certificate status # 인증서 해제 bolta certificate deregister ``` ### 세금계산서 발행/조회 아래 예시의 `YYYY-MM-DD`는 명령을 실행하기 전에 실제 발행일 또는 수정발행일로 바꾸세요. ```bash theme={"dark"} # 세금계산서 정발행 bolta invoice issue --data '{ "date": "YYYY-MM-DD", "purpose": "CLAIM", "taxType": "TAXABLE", "supplier": { "identificationNumber": "1234567890", "organizationName": "공급자 주식회사", "representativeName": "김공급", "manager": { "email": "supplier@example.com" } }, "supplied": { "identificationNumber": "0987654321", "organizationName": "공급받는자 주식회사", "representativeName": "이고객", "managers": [{ "email": "buyer@example.com" }] }, "items": [{ "date": "YYYY-MM-DD", "name": "소프트웨어 개발 용역", "supplyCost": 1000000, "tax": 100000 }] }' # 외국인등록번호 공급받는자 정발행 샘플 조회 # CLI는 식별번호의 하이픈과 공백을 제거해 처리합니다. # 최상위 description은 빼거나 null로 두고, 여권번호는 사용할 수 없습니다. bolta examples invoice-issue-foreign-supplied # 세금계산서 역발행 요청 (공급받는자는 사업자등록번호만 허용) bolta invoice issue-request --data '{...}' # 세금계산서 조회 bolta invoice get # Client-Reference-Id로 상태 조회 bolta invoice status --reference-id ``` ### 수정발행 ```bash theme={"dark"} # 수정발행: 계약 해제 bolta invoice amend termination --date YYYY-MM-DD # 수정발행: 공급가액 변동 bolta invoice amend change-supply-cost --data '{ "date": "YYYY-MM-DD", "taxType": "TAXABLE", "items": [{ "date": "YYYY-MM-DD", "name": "가격 조정", "supplyCost": -200000, "tax": -20000 }] }' # 수정발행: 착오에 의한 이중발급 bolta invoice amend double-issuance ``` > [!NOTE] > > CLI는 정발행, 역발행 요청, 공급가액 변동 수정발행 입력을 API와 같은 규칙으로 먼저 검증합니다. 최신 스키마는 `bolta schema invoice-issue`로 확인하세요. ### 설정 ```bash theme={"dark"} bolta config set # api-key, base-url bolta config show # 현재 설정 확인 bolta config test # API 연결 테스트 ``` ## 입력 방법 데이터가 필요한 커맨드는 3가지 입력 방식을 지원합니다. ```bash theme={"dark"} # 인라인 JSON (AI 에이전트 권장) bolta invoice issue --data '{"date":"YYYY-MM-DD", ...}' # 파일 참조 bolta invoice issue --file invoice.json # 파이프 입력 cat invoice.json | bolta invoice issue --stdin ``` ## 글로벌 옵션 | 옵션 | 설명 | | - | - | | `--api-key ` | API 키 오버라이드 | | `--verbose` | 상세 로그 출력 (stderr) | | `--dry-run` | API 호출 없이 요청 데이터만 출력 | ## 출력 형식 CLI는 모든 응답을 JSON으로 stdout에 출력합니다. ```json theme={"dark"} // 성공 (exit code 0) { "success": true, "data": { ... } } // 실패 (exit code 1) { "success": false, "error": { "code": "...", "message": "...", "suggestion": "..." } } ``` ## 에러 코드 | 코드 | 원인 | 해결 | | - | - | - | | `AUTH_ERROR` | API 키 없음 또는 잘못됨 | `bolta config set api-key ` | | `VALIDATION_ERROR` | 입력 데이터 오류 | `bolta schema `로 스키마 확인 | | `INPUT_ERROR` | 입력 방식 오류 | `--data`, `--file`, `--stdin` 중 하나 사용 | | `HTTP_400` | 잘못된 요청 | error.message 확인 | | `HTTP_403` | 발급자 없음 또는 접근 권한 없음 | issuerId와 API 키 확인 | | `HTTP_404` | 발행 요청 없음 | issuanceKey 확인 | | `HTTP_429` | 요청 제한 초과 | 자동 재시도 (최대 3회) | | `NETWORK_ERROR` | 네트워크 오류 | 인터넷 연결 확인 | ## AI 가이드 AI 에이전트용으로 다음 가이드를 제공합니다. | 가이드 | 용도 | 접근 방법 | | - | - | - | | `CLAUDE.md` | Claude Code가 자동으로 읽는 프로젝트 가이드 | 프로젝트 루트에 위치 | | `llms.txt` | 범용 AI 에이전트 참조 문서 | 프로젝트 루트에 위치 | | `bolta examples` | 바로 쓸 수 있는 샘플 JSON | `bolta examples [command]` | | `bolta schema` | JSON 입력 스키마 | `bolta schema [command]` | | `--help` | 모든 커맨드에 예시 포함 | `bolta --help` | ```bash theme={"dark"} # 사용 가능한 예제 목록 bolta examples # 정발행 샘플 JSON 조회 bolta examples invoice-issue # 외국인등록번호 공급받는자 정발행 샘플 JSON 조회 bolta examples invoice-issue-foreign-supplied # 정발행 입력 스키마 조회 bolta schema invoice-issue ``` > **[npm](https://www.npmjs.com/package/@bolta-io/cli)** > > npm 패키지 페이지 # SDK: Make Source: https://docs.bolta.io/docs/api-introduction/sdk-make Make를 이용한 볼타 API 연동을 안내합니다. [Make 연동 바로가기 →](https://www.make.com/integrations/bolta) # SDK: Zapier Source: https://docs.bolta.io/docs/api-introduction/sdk-zapier Zapier를 이용한 볼타 API 연동을 안내합니다. Zapier 연동은 볼타에 문의하세요. # 위수탁 발행 Source: https://docs.bolta.io/docs/api-introduction/usecase-brokered 수탁자가 위탁자를 대신해 전자(세금)계산서를 정발행하는 절차를 안내합니다. 위수탁 발행에서는 공급자와 공급받는자 외에 수탁자 정보를 함께 보냅니다. ## 발행 흐름 **1. 수탁자를 발급자로 등록** [발급자 등록 API](/api-reference/issuer/register-issuer)에 수탁자 정보를 보냅니다. 응답의 `issuerId`를 저장하세요. ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/issuers \ -H "Authorization: Basic {apiKey}" \ -H "Content-Type: application/json" \ -d '{ "identificationNumber": "1111111111", "taxRegistrationId": null, "organizationName": "수탁자 상호", "representativeName": "수탁자대표" }' ``` **2. 수탁자 공동인증서 등록** `GET /v1/issuers/{issuerId}/certificates/url`로 등록 URL을 발급합니다. 수탁자가 URL에 접속해 공동인증서를 등록한 뒤, [인증서 등록 내역 조회 API](/api-reference/certificate/retrieve-issuer-certificate-registration-status)로 결과를 확인하세요. **3. 위수탁 정발행 요청** [정발행 API](/api-reference/tax-invoice-issuance/issue-tax-invoice)에 `supplier`, `supplied`, `trustee`를 함께 보냅니다. **4. 발행 결과 확인** 웹훅으로 완료 이벤트를 받거나 [세금계산서 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice)를 호출하세요. 수탁자 정보는 `invoice.trustee`, 담당자 정보는 `invoice.trustee.manager`에 담깁니다. ## 정발행 요청 ```bash theme={"dark"} curl -X POST https://xapi.bolta.io/v1/taxInvoices/issue \ -H "Authorization: Basic {apiKey}" \ -H "Content-Type: application/json" \ -d '{ "date": "YYYY-MM-DD", "purpose": "CLAIM", "taxType": "TAXABLE", "supplier": { "identificationNumber": "1234567890", "organizationName": "위탁자 상호", "representativeName": "위탁자대표", "manager": { "email": "supplier@example.com", "name": "위탁자담당자" } }, "supplied": { "identificationNumber": "0987654321", "organizationName": "공급받는자 상호", "representativeName": "공급받는자대표", "managers": [ { "email": "recipient@example.com", "name": "공급받는자담당자" } ] }, "trustee": { "identificationNumber": "1111111111", "organizationName": "수탁자 상호", "representativeName": "수탁자대표", "manager": { "email": "trustee@example.com", "name": "수탁자담당자", "telephone": "010-1234-5678" } }, "items": [ { "date": "YYYY-MM-DD", "name": "위수탁 과세 품목", "supplyCost": 100000, "tax": 10000 } ] }' ``` ### 수탁자 입력값 | 필드 | 필수 | 설명 | | - | - | - | | `identificationNumber` | O | 수탁자 사업자등록번호 | | `organizationName` | O | 수탁자 상호 | | `representativeName` | O | 수탁자 대표자명 | | `taxRegistrationId` | X | 수탁자 종사업장번호 | | `address` | X | 수탁자 주소 | | `businessItem` | X | 수탁자 종목 | | `businessType` | X | 수탁자 업태 | | `manager` | X | 수탁자 담당자 | `manager`에는 `email`, `name`, `telephone`을 입력할 수 있습니다. `manager`를 보낼 때는 세 필드 중 하나 이상에 값을 넣으세요. ### 과세유형별 세액 위수탁 발행도 일반 정발행과 같은 세액 규칙을 사용합니다. | 과세유형(`taxType`) | 품목 세액(`items[].tax`) | 예시 | | - | - | - | | `TAXABLE` | `null`이 아닌 세액 | 공급가액 `100000`, 세액 `10000` | | `ZERO_RATE` | `0` | 공급가액 `100000`, 세액 `0` | | `TAX_FREE` | `null` 또는 필드 생략 | 공급가액 `100000`, 세액 `null` | 전체 요청은 [정발행 API](/api-reference/tax-invoice-issuance/issue-tax-invoice)의 코드 예시 패널 상단 메뉴에서 `위수탁 과세`, `위수탁 영세율`, `위수탁 면세`를 선택해 확인하세요. ## 관련 문서 * [발급자 등록 API](/api-reference/issuer/register-issuer) * [인증서 등록 연동](/docs/api-introduction/certificate-registration) * [발행 금액 계산](/docs/api-introduction/issuance-guide) * [세금계산서 웹훅](/docs/api-introduction/webhook-tax-invoice) # 이메일 승인 역발행 Source: https://docs.bolta.io/docs/api-introduction/usecase-reverse-email 역발행 요청 후 공급자가 이메일 링크를 통해 승인하는 워크플로우입니다. 플랫폼이 역발행을 요청하면, 볼타가 공급자의 담당자 이메일 주소로 승인 요청 이메일을 자동 발송하고, 공급자가 이메일 링크로 승인하는 시나리오입니다. ## 워크플로우 **1. 발급자 등록** [발급자 등록 API](/api-reference/issuer/register-issuer)를 호출하여 공급자를 발급자로 등록합니다. **2. 역발행 요청** [역발행 API](/api-reference/reverse-issuance/request-reverse-issuance)를 호출합니다. 승인 요청 메일을 받을 주소는 요청 본문의 `supplier.manager.email`에 입력하세요. **3. 승인 요청 이메일 발송** 볼타가 승인 요청 메일을 발송합니다. **4. 공급자 승인** 공급자가 이메일 링크를 통해 볼타에 접속하여 세금계산서를 승인합니다. **5. 발행 완료 웹훅 수신** 승인이 완료되면 볼타가 [웹훅](/docs/api-introduction/webhook-tax-invoice)으로 `taxInvoiceUrl`이 담긴 알림을 보냅니다. **6. 세금계산서 조회 (선택)** [세금계산서 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice)로 발행 결과를 확인합니다. ## 중복 요청 처리 역발행 요청에 선택형 `Bolta-Client-Reference-Id` 헤더를 추가할 수 있습니다. 1\~255자의 비어 있지 않은 값을 입력하고, 발행 요청마다 사용하지 않은 값을 쓰세요. 같은 API 키에서 이미 사용한 값을 다시 보내면 요청 본문이 같아도 API가 HTTP `400`과 `INVALID_REQUEST`를 반환합니다. 응답을 받지 못했다면 역발행을 다시 요청하지 말고 [관리번호 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-by-client-reference)로 접수 결과를 확인하세요. 재사용 규칙은 [인증 가이드](/docs/api-introduction/authentication#client-reference-id)를 참고하세요. ## 요청 상태 확인 [요청 상태 조회 API](/api-reference/reverse-issuance/retrieve-reverse-issuance-request-status)로 역발행 요청이 지금 어느 단계인지 확인하세요. | `status` | 의미 | | - | - | | `REQUESTED` | 요청 접수 완료, 공급자 승인 대기 (공급자에게 전달하기 전 포함) | | `APPROVED` | 공급자 승인 완료, 국세청 전송 중 | | `ISSUED` | 발행 완료 | | `REJECTED` | 공급자 거절 | | `CANCELED` | 요청 취소 | | `EXPIRED` | 승인 기한(`approvalDueDate`) 만료 | | `FAILED` | 접수 또는 발행 실패 | `FAILED`는 `failure.stage`로 단계를 구분합니다. `SUBMISSION`이면 요청이 공급자에게 전달되지 않았습니다. `Bolta-Client-Reference-Id`를 보냈다면 사용하지 않은 새 값으로 다시 요청하세요. `ISSUANCE`면 공급자가 승인했지만 발행에 실패했으니 `failure.code`와 `failure.message`로 원인을 확인하세요. ## 역발행 요청 취소 승인 전이라면 [요청 취소 API](/api-reference/reverse-issuance/cancel-reverse-issuance-request)를 호출하여 역발행 요청을 취소할 수 있습니다. * 정상 취소되면 API가 HTTP 200을 반환합니다. * 이미 승인, 취소, 발행된 요청이면 API가 에러를 반환합니다. 취소 전에 요청 상태를 확인하려면 [요청 상태 조회 API](/api-reference/reverse-issuance/retrieve-reverse-issuance-request-status)를 호출하세요. > [!WARNING] > > 발행 마감일이 지나면 공급자가 승인할 수 없습니다. 날짜를 고쳐 다시 요청하세요. 요청 전에 [세금계산서 발행 마감일 조회 API](/docs/api-introduction/tax-invoice-issue-due-date)로 마감일을 확인하세요. ## 적합한 경우 * 공급자의 인증서를 사전에 확보하기 어려운 경우 * 공급자가 이메일로 승인하길 원하는 경우 * 플랫폼이 승인 UI를 직접 구현할 필요 없이 볼타에 위임하는 경우 ## 간편 승인 역발행과의 차이 | | 이메일 승인 | [간편 승인](/docs/api-introduction/usecase-reverse-simple) | | - | - | - | | 승인 방식 | 볼타가 보낸 이메일 링크 | 플랫폼이 발급한 승인 URL | | 인증서 필요 | 불필요 | 필요 | | 승인 주체 | 공급자가 이메일에서 직접 | 공급자가 플랫폼 내에서 | # 간편 승인 역발행 Source: https://docs.bolta.io/docs/api-introduction/usecase-reverse-simple 플랫폼 내에서 승인 URL을 통해 공급자가 직접 승인하는 역발행 워크플로우입니다. 플랫폼이 역발행을 요청한 뒤, 승인 URL을 발급받아 플랫폼 내에서 공급자가 직접 승인하는 시나리오입니다. ## 워크플로우 **1. 발급자 등록** [발급자 등록 API](/api-reference/issuer/register-issuer)를 호출하여 공급자를 발급자로 등록하고 `issuerId`를 저장합니다. **2. 인증서 등록 URL 발급** `issuerId`로 [인증서 등록 URL 조회 API](/api-reference/certificate/retrieve-issuer-certificate-registration-url)를 호출하여 공급자가 인증서를 등록할 수 있는 URL을 발급받습니다. **3. 공급자 인증서 등록** 공급자가 발급받은 URL에 직접 접속해 공동인증서를 등록합니다. 등록 완료 후 리다이렉트 복귀와 결과 확인은 [인증서 등록 연동](/docs/api-introduction/certificate-registration)을 참고하세요. **4. 역발행 요청** [역발행 API](/api-reference/reverse-issuance/request-reverse-issuance)를 호출합니다. **5. 승인 URL 획득** [승인 URL 조회 API](/api-reference/reverse-issuance/retrieve-reverse-issuance-approval-url)를 호출하여 승인 페이지 URL을 발급받습니다. 생성된 URL은 10분간 유효합니다. **6. 간편 승인** 공급자가 승인 URL에 접속하여 세금계산서를 승인합니다. 플랫폼에서 새 탭 열기나 페이지 이동으로 URL을 보여 주세요. **7. 발행 완료 웹훅 수신** 승인이 완료되면 볼타가 [웹훅](/docs/api-introduction/webhook-tax-invoice)으로 `taxInvoiceUrl`이 담긴 알림을 보냅니다. **8. 세금계산서 조회 (선택)** [세금계산서 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice)로 발행 결과를 확인합니다. ## 중복 요청 처리 역발행 요청에 선택형 `Bolta-Client-Reference-Id` 헤더를 추가할 수 있습니다. 1\~255자의 비어 있지 않은 값을 입력하고, 발행 요청마다 사용하지 않은 값을 쓰세요. 같은 API 키에서 이미 사용한 값을 다시 보내면 요청 본문이 같아도 API가 HTTP `400`과 `INVALID_REQUEST`를 반환합니다. 응답을 받지 못했다면 역발행을 다시 요청하지 말고 [관리번호 조회 API](/api-reference/tax-invoice-retrieval/retrieve-tax-invoice-by-client-reference)로 접수 결과를 확인하세요. 재사용 규칙은 [인증 가이드](/docs/api-introduction/authentication#client-reference-id)를 참고하세요. ## 요청 상태 확인 [요청 상태 조회 API](/api-reference/reverse-issuance/retrieve-reverse-issuance-request-status)로 역발행 요청이 지금 어느 단계인지 확인하세요. | `status` | 의미 | | - | - | | `REQUESTED` | 요청 접수 완료, 공급자 승인 대기 (공급자에게 전달하기 전 포함) | | `APPROVED` | 공급자 승인 완료, 국세청 전송 중 | | `ISSUED` | 발행 완료 | | `REJECTED` | 공급자 거절 | | `CANCELED` | 요청 취소 | | `EXPIRED` | 승인 기한(`approvalDueDate`) 만료 | | `FAILED` | 접수 또는 발행 실패 | `FAILED`는 `failure.stage`로 단계를 구분합니다. `SUBMISSION`이면 요청이 공급자에게 전달되지 않았습니다. `Bolta-Client-Reference-Id`를 보냈다면 사용하지 않은 새 값으로 다시 요청하세요. `ISSUANCE`면 공급자가 승인했지만 발행에 실패했으니 `failure.code`와 `failure.message`로 원인을 확인하세요. ## 역발행 요청 취소 승인 전이라면 [요청 취소 API](/api-reference/reverse-issuance/cancel-reverse-issuance-request)를 호출하여 역발행 요청을 취소할 수 있습니다. * 정상 취소되면 API가 HTTP 200을 반환합니다. * 이미 승인, 취소, 발행된 요청이면 API가 에러를 반환합니다. 취소 전에 요청 상태를 확인하려면 [요청 상태 조회 API](/api-reference/reverse-issuance/retrieve-reverse-issuance-request-status)를 호출하세요. > [!WARNING] > > 발행 마감일이 지나면 승인 URL을 조회할 때 API가 400 에러를 반환합니다. 날짜를 고쳐 다시 요청하세요. 요청 전에 [세금계산서 발행 마감일 조회 API](/docs/api-introduction/tax-invoice-issue-due-date)로 마감일을 확인하세요. ## 적합한 경우 * 플랫폼 UX 안에서 승인 프로세스를 완결하고 싶은 경우 * 공급자가 이미 인증서를 등록한 상태인 경우 * 플랫폼에서 승인 상태를 직접 추적해야 하는 경우 ## 이메일 승인 역발행과의 차이 | | [이메일 승인](/docs/api-introduction/usecase-reverse-email) | 간편 승인 | | - | - | - | | 승인 방식 | 볼타가 보낸 이메일 링크 | 플랫폼이 발급한 승인 URL | | 인증서 필요 | 불필요 | 필요 | | UX 제어 | 볼타에 위임 | 플랫폼이 직접 제어 | | URL 유효시간 | - | 10분 |