파이썬으로 사업자등록정보 진위확인 및 상태조회하기

PNG

파이썬 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 국세청에 등록되지 않은 사업자등록번호입니다.


참고

댓글남기기