파이썬으로 사업자등록정보 진위확인 및 상태조회하기
파이썬 PublicDataReader 라이브러리를 이용하면 간단하게 사업자등록정보의 진위를 확인하거나 상태를 조회할 수 있습니다.
PublicDataReader
PublicDataReader는 Open API를 사용하여 공공 데이터를 자동으로 조회할 수 있는 파이썬 라이브러리입니다. 이 도구를 사용하면 생산성을 높일 수 있게 됩니다. PublicDataReader는 Open API 서비스 인증키와 함께 사용하면 간편하게 공공 데이터를 조회할 수 있습니다. 일반적인 공공 데이터 조회 과정에서는 API 명세를 찾고, 적절한 형식으로 요청을 작성하고, 반환된 데이터를 정리하는 과정이 필요합니다. PublicDataReader는 이러한 과정을 자동화해주기 때문에 코드 작성이 간결해집니다.
설치하기
- 운영체제(OS)에 따라 아래 중 하나를 선택합니다.
- Windows: CMD(명령 프롬프트) 실행
- Mac: Terminal(터미널) 실행
아래 Shell 명령어를 입력 후 실행합니다.
pip install PublicDataReader --upgrade
국세청 Open API 서비스 신청하기
국세청 사업자등록정보 진위확인 및 상태조회 서비스에서 서비스를 신청하면 API를 사용할 수 있는 인증키가 발급됩니다. 인증키 값을 serviceKey
에 할당하고 이 값을 Nts
의 인자로 입력하여 API 인스턴스를 생성합니다.
from PublicDataReader import Nts
serviceKey = "공공 데이터 포털에서 발급받은 서비스 키(디코딩 키)"
API = Nts(serviceKey)
사업자등록정보 진위확인하기
사업자등록정보의 진위확인을 하기 위해 조회할 사업자등록정보의 목록이 필요합니다. 이 때, 사업자등록정보의 목록을 엑셀 파일로 만들어 이용하거나 파이썬 딕셔너리 형식으로 작성해 이용할 수 있습니다. 참고로 진위확인 서비스는 1회 요청 당 최대 100개의 사업자등록정보를 처리할 수 있습니다.
엑셀 파일을 이용하는 방법
아래와 같이 엑셀 파일을 판다스 데이터 프레임 객체로 불러온 뒤 validate
에 입력하면 조회 결과를 데이터 프레임으로 확인할 수 있습니다. 엑셀 파일의 컬럼은 다음과 같이 구성되어 있어야 합니다.
- b_no: 사업자등록번호 (필수)
- start_dt: 개업일자 (YYYYMMDD 포맷) (필수)
- p_mn: 대표자성명1 (필수)
- p_mn2: 대표자성명2 - 대표자성명1 이 한글이 아닌 경우, 이에 대한 한글명
- b_nm: 상호 (Optional)
- corp_no: 법인등록번호 (Optional)
- b_sector: 주업태명 (Optional)
- b_type: 주종목명 (Optional)
import pandas as pd
# 엑셀 파일 불러오기
df = pd.read_excel("./dataset.xlsx", dtype=str).fillna("")
df
b_no | start_dt | p_nm | p_nm2 | b_nm | corp_no | b_sector | b_type | |
---|---|---|---|---|---|---|---|---|
0 | 0000000000 | 20000101 | 홍길동 | |||||
1 | 1111111111 | 20100101 | 홍길동 | |||||
2 | 2222222222 | 20200101 | 홍길동 |
# 진위확인하기
result = API.validate(df)
result
b_no | valid | valid_msg | request_param.b_no | request_param.start_dt | request_param.p_nm | request_param.p_nm2 | request_param.b_nm | request_param.corp_no | request_param.b_type | request_param.b_sector | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0000000000 | 02 | 확인할 수 없습니다. | 0000000000 | 20000101 | 홍길동 | |||||
1 | 1111111111 | 02 | 확인할 수 없습니다. | 1111111111 | 20100101 | 홍길동 | |||||
2 | 2222222222 | 02 | 확인할 수 없습니다. | 2222222222 | 20200101 | 홍길동 |
파이썬 딕셔너리 형식으로 이용하는 방법
아래와 같이 파이썬 딕셔너리로 사업자등록정보 목록을 작성 후 진위확인을 하는 방법도 있습니다. 이 때, 작성해야 하는 항목은 아래와 같습니다.
- b_no: 사업자등록번호 (필수)
- start_dt: 개업일자 (YYYYMMDD 포맷) (필수)
- p_mn: 대표자성명1 (필수)
- p_mn2: 대표자성명2 - 대표자성명1 이 한글이 아닌 경우, 이에 대한 한글명
- b_nm: 상호 (Optional)
- corp_no: 법인등록번호 (Optional)
- b_sector: 주업태명 (Optional)
- b_type: 주종목명 (Optional)
# 딕셔너리로 작성하기
businesses = [{
'b_no': '0000000000',
'start_dt': '20000101',
'p_nm': '홍길동',
'p_nm2': '',
'b_nm': '',
'corp_no': '',
'b_sector': '',
'b_type': ''},
{'b_no': '1111111111',
'start_dt': '20100101',
'p_nm': '홍길동',
'p_nm2': '',
'b_nm': '',
'corp_no': '',
'b_sector': '',
'b_type': ''},
{'b_no': '2222222222',
'start_dt': '20200101',
'p_nm': '홍길동',
'p_nm2': '',
'b_nm': '',
'corp_no': '',
'b_sector': '',
'b_type': ''
}]
# 진위확인하기
result = API.validate(businesses)
result
b_no | valid | valid_msg | request_param.b_no | request_param.start_dt | request_param.p_nm | request_param.p_nm2 | request_param.b_nm | request_param.corp_no | request_param.b_type | request_param.b_sector | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0000000000 | 02 | 확인할 수 없습니다. | 0000000000 | 20000101 | 홍길동 | |||||
1 | 1111111111 | 02 | 확인할 수 없습니다. | 1111111111 | 20100101 | 홍길동 | |||||
2 | 2222222222 | 02 | 확인할 수 없습니다. | 2222222222 | 20200101 | 홍길동 |
사업자등록정보 상태조회하기
사업자등록정보의 상태를 조회하려면 사업자등록번호 목록이 필요합니다. 이 목록을 status
에 입력하여 조회 결과를 판다스 데이터 프레임 형식으로 확인할 수 있습니다.
# 사업자등록번호 목록
b_no = ['0000000000', '1111111111']
# 상태조회
result = API.status(b_no)
result
b_no | b_stt | b_stt_cd | tax_type | tax_type_cd | end_dt | utcc_yn | tax_type_change_dt | invoice_apply_dt | |
---|---|---|---|---|---|---|---|---|---|
0 | 0000000000 | 국세청에 등록되지 않은 사업자등록번호입니다. | |||||||
1 | 1111111111 | 국세청에 등록되지 않은 사업자등록번호입니다. |
댓글남기기