×
뎁스노트
로그인
홈
언어
프레임워크
개발도구
네크워크와 서버
데이터베이스
프로젝트 관리
데이터 사이언스
이야기
모집 · 홍보
뎁스_3237의 블로그
뎁스_3237의 블로그
로그인
회원가입
글쓰기
글 올리기
개발 노트, 이야기를 작성해보세요.
질문하기
부담없이 무엇이든 질문하세요.
Python
세금계산서 발행 API와 함께한 ERP 개발 성공기
뎁스_3237
29일 전
팔로우
팔로잉
최근 ERP 개발 프로젝트를 진행하게 되면서, 전자세금계산서 발급 기능을 추가할 일이 있었다. 국세청 홈택스 API를 직접 사용하려고 했지만, 인증 절차가 꽤나 복잡하고 기능적으로도 제한사항이 너무 많았다. 이러다가는 마감 시간을 맞추지 못할 수도 있겠다.. 는 생각이 들었을 때쯤 바로빌 API를 발견하게 되었다. # 바로빌 API란? 바로빌은 전자세금계산서 발급 및 국세청 전송 서비스를 전문으로 제공하는 API 플랫폼이다. 전자세금계산서 발급 외에도, 사업자 휴폐업 조회, 홈택스 매입매출 조회, 전자문서 발급, FAX/카카오톡 등 메시징 서비스 등 다양한 기능을 제공한다. 예컨대 세금계산서 발급 전 거래처 폐업 여부를 실시간으로 확인할 수 있다거나, 세금계산서를 국세청에 간편히 자동으로 전송할 수 있는 기능을 제공한다. 가격 정책도 매우 매력적이다. 바로빌 API는 사용한 만큼만 비용을 지불하는 종량제 시스템을 채택하고 있다. 내부 ERP를 개발하는 입장에서 초기 비용 부담 없이 필요한 기능만 선택적으로 사용할 수 있다는 점이 크게 와닿았던 부분이다. # 세금계산서 발행 API의 주요 기능 세금계산서 발행 API는 ERP 시스템에 전자세금계산서 기능을 통합하여 세금계산서의 작성, 발행, 전송, 조회 등을 자동화할 수 있는 기능을 제공한다. 내가 개발해야 할 기능 리스트는 대략 아래와 같았다. 각 기능들을 API 형태로 제공하며, 개발자문서 및 예시 스크립트 파일이 잘 작성되어 있기 때문에, 간편하게 기능개발을 진행할 수 있었다. [세금계산서 발급 API 가이드 | 바로빌 개발자센터](http://dev.barobill.co.kr/docs/references/세금계산서-API?src=text&kw=000260) 1. **전자세금계산서 발행 및 전송** * **정발행**: 공급자가 세금계산서를 작성하고 전자서명하여 발행하는 방식이다.(default) * **역발행**: 공급받는 자가 세금계산서를 작성하여 공급자에게 전달하고, 공급자가 확인 후 전자서명하여 발행하는 방식이다. * **위수탁발행**: 공급자를 대신하여 수탁자가 세금계산서를 작성하고 전자서명하여 발행하는 방식이다. 2. **수정세금계산서 발행** * 이미 발행된 세금계산서의 내용에 오류가 있을 경우, 수정세금계산서를 발행하여 정정할 수 있다. 3. **세금계산서 조회 및 상태 확인** * 발행된 세금계산서의 상태(발행, 전송, 수신 등)를 실시간으로 조회하고 관리할 수 있다. 4. **국세청 전송 및 수신 확인** * 발행된 전자세금계산서를 국세청에 자동으로 전송하며, 수신자의 확인 여부를 추적할 수 있다. 5. **인증서 관리** * 전자세금계산서 발행 시 필요한 공인인증서의 등록 및 관리를 지원하여 보안성을 높인다. 6. **다양한 부가기능** * 거래처의 휴폐업 상태 조회, 세금계산서 보기/인쇄, 알림 메시지 전송 등 다양한 부가 기능을 제공한다. # 세금계산서 발행 API 사용해보기 💡 바로빌 개발자 센터에는 각 컴포넌트 단위로 예제 코드가 잘 작성되어 있기 때문에, 각 컴포넌트를 잘 엮어주는 것에만 주안점을 두면 된다. ## 간편발급 ![img](https://hosoft-bucket001.s3.ap-northeast-2.amazonaws.com/assets/data/ck_upload/_upload_e9652b1dc24b2598f69ad0dd9060fb0a.png) ### 세금계산서 발행 ```python from zeep import Client # SOAP 클라이언트 라이브러리 client = Client("https://testws.baroservice.com/TI.asmx?WSDL") # 테스트 서버 URL # 인증 키 및 세금계산서 정보 설정 certKey = '<인증 키>' taxInvoice = client.get_type('ns0:TaxInvoice')( IssueDirection=1, # 발행 방향: 1 (정발행) TaxInvoiceType=1, # 세금계산서 유형: 1 (일반) TaxType=1, # 과세 유형: 1 (과세) WriteDate='20241222', # 작성일자 AmountTotal='100000', # 공급가액 TaxTotal='10000', # 세액 TotalAmount='110000', # 합계금액 InvoicerParty=client.get_type('ns0:InvoiceParty')( CorpNum='<공급자 사업자번호>', CorpName='공급자 상호', CEOName='공급자 대표자', Addr='공급자 주소', Email='공급자 이메일', ), InvoiceeParty=client.get_type('ns0:InvoiceParty')( CorpNum='<공급받는자 사업자번호>', CorpName='공급받는자 상호', CEOName='공급받는자 대표자', Addr='공급받는자 주소', Email='공급받는자 이메일', ), ) # 세금계산서 발급 요청 result = client.service.RegistAndIssueTaxInvoice( CERTKEY=certKey, CorpNum=taxInvoice.InvoicerParty.CorpNum, Invoice=taxInvoice, SendSMS=True, ForceIssue=False, MailTitle='세금계산서 발급 안내', ) if result < 0: raise ValueError(f"발급 실패: {result}") else: print(f"발급 성공: {result}") ``` ### 국세청 전송상태 확인 ```python certKey = '<인증 키>' corpNum = '<공급자 사업자번호>' mgtKey = '<관리번호>' procType = '1' # 1: 국세청 전송 memo = '국세청 전송 요청' result = client.service.ProcTaxInvoice( CERTKEY=certKey, CorpNum=corpNum, MgtKey=mgtKey, ProcType=procType, Memo=memo, ) if result < 0: raise ValueError(f"발급 실패: {result}") else: print(f"전송 성공: {result}") ``` ### 세금계산서 발급 취소 ```python certKey = '<인증 키>' corpNum = '<공급자 사업자번호>' mgtKey = '<관리번호>' result = client.service.DeleteTaxInvoice( CERTKEY=certKey, CorpNum=corpNum, MgtKey=mgtKey, ) if result < 0: raise ValueError(f"발급 실패: {result}") else: print(f"취소 성공: {result}") ``` 위 코드 예시를 보고 눈치챘을 수도 있지만, 바로빌 개발자 센터의 예시 코드를 거의 그대로 사용하고 있다. 그럴 수밖에 없는 것이 개발자 센터의 예시 코드가 매우 자세하게 작성되어있다. 각 예시 코드에서 변수만 조금 수정하고 함수화하면 곧바로 서비스에 붙일 수 있는 간편한 구조이다. API 인터페이스도 매우 간결하고 직관적이라서 세금계산서 발행 API 연동이 매우 수월했다. # 후기 이런 외부 API를 사용하려고 할 때의 가장 중요하게 고려하는 부분은 아무래도 ‘이거를 사용해서 나의 일이 얼마나 줄어들 수 있는데?’ 라는 점이다. 세금계산서 발행 업무는 내가 진행해본 경험이 없었기 때문에, 이를 이해하는 것부터가 큰 난관이었다. 바로빌 세금계산서 발행 API 를 사용하여 EPR 프로젝트를 진행하며 가장 좋았던 것은 세금계산서 발행과 같이 복잡한 작업을 간단히 처리할 수 있다는 점이었다. 이를 통해 시간을 절약해서, ‘우리 서비스’의 핵십 로직과 사용자 경험 개선에 보다 많은 신경을 쓸 수 있었다. 단순히 개발 기간을 단축하기 위한, 유지보수의 편리함을 위한 선택이 아니라 우리 서비스를 보다 더 나은 방향으로 나아갈 수 있게끔 돕는 파트너였다. 세금 계산서 외에도 다양한 기능들을 제공해주는데, 추후에 다른 기능들도 사용해볼 기회가 있으면 사용해보면 좋을 것 같다. ### 참고 자료 및 바로가기 * 바로빌 개발자 센터: [https://dev.barobill.co.kr](https://dev.barobill.co.kr/) * 바로빌 세금계산서 API 문서: [http://dev.barobill.co.kr/docs/references/세금계산서-API?src=text&kw=000260](http://dev.barobill.co.kr/docs/references/세금계산서-API?src=text&kw=000260)
바로빌
세금계산서
세금계산서API
ERP개발
ERP
1
1
1
106
신고하기
사용자 차단하기
뎁스_3237
29일 전
팔로우
팔로잉
댓글
1
올리기
답변 작성
답변 모드로 쓰기
이미지 첨부
올리기
뎁스_2940
도입비없이 종량제만 사용하면 된다니 합리적이네요, 감사합니다.
27일 전
∙
0
∙
답글 달기
∙
공유
∙
신고
∙
차단
1
1
1
1
신고하기
사용자 차단하기