똑순이의 똑똑한 이야기
아직도 팩스 기계 앞에 서 계신가요? 전자팩스 API로 업무 자동화하는 법 (feat. 비용 절감) 본문

3줄 요약
전자팩스 API는 기계 없이 우리 회사 시스템(ERP)에서 바로 팩스를 보내는 기술입니다.
바로빌은 도입비와 월 기본료가 '0원'인 업계 유일의 포인트 차감형(종량제) 방식을 제공합니다.
개발자를 위한 다양한 언어 지원과 무료 테스트베드로 쉽고 빠르게 연동할 수 있습니다.
Q1. 전자팩스 API(팩스 전송 API)란 무엇인가요?
쉽게 말해, 우리가 이메일을 보내듯 '파일을 첨부하고 전송 버튼을 누르면, 상대방 팩스 기계로 출력되게 만드는 기술'이라고 이해하면 쉽습니다.
[왜 필요한가? : 업무 효율성의 차이]
- 시간 절약: 출력 → 이동 → 전송 → 확인의 과정을 **'클릭 한 번'**으로 단축
- 비용 절감: 종이, 토너, 팩스 기계 유지보수 비용 0원
- 데이터 관리: 누가, 언제, 무엇을 보냈는지 전산상에 기록이 남음
거래처에 견적서를 120장을 보내야하는데, 오류가 나서 갔는지 안갔는지 확인도 어렵고, 하나하나 어떻게 확인도 어려운 상황,,,
심지어 전송실패까지 뜬다면 처음부터 다시 보내야하는데,,,,,, 이러한 상황이라면 어떻게 하실 겁니까??
Q2. 왜 바로빌 전자팩스 API가 비용 면에서 유리한가요?
대부분의 API 서비스는 쓰지 않아도 매달 내야 하는 '기본료'가 있거나, 비싼 '초기 도입비'를 요구합니다.
하지만 팩스 사용량은 매달 들쑥날쑥하기 마련입니다. 팩스를 한 건도 안 보낸 달에도 요금을 내야 한다면 억울하겠죠?
| 구분 | 타사(일반적인 월정액) | 바로빌(Barobill) | 비고 |
| 초기 도입비 | 10만 원 ~ 100만 원 | 0원 | 부담 없는 시작 |
| 월 기본료 | 매월 5만 원 ~ 10만 원 | 0원 | 고정비 삭제 |
| 요금 방식 | 기본료 + 건당 요금 | 포인트 차감(종량제) | 쓴 만큼만 지불 |
| 비용 효과 | 사용량 적어도 비용 발생 | 사용량 없으면 0원 | 합리적 소비 |
바로빌은 미리 포인트를 충전해두고, 팩스를 보낼 때마다 건당 요금만 차감되는 방식입니다.
따라서 스타트업이나 팩스 사용량이 불규칙한 기업에게 가장 합리적인 선택지가 될 수 있습니다.
Q3. 개발자가 바로빌 API를 선호하는 기술적 이유는 무엇인가요?
기획자나 경영진이 비용을 본다면, 개발자는 '연동의 편의성'을 봅니다.
아무리 저렴해도 연동하기 어렵다면 개발팀의 리소스 낭비가 심해집니다. 바로빌은 개발자가 겪을 시행착오를 최소화하기 위해 다음과 같은 환경을 제공합니다.
- 다양한 언어 지원 (SDK): Java, .NET, PHP, ASP, Delphi, VB 등 주요 언어에 대한 예제 소스를 제공하여 복사/붙여넣기 수준으로 개발이 가능합니다.
- 테스트베드(Sandbox) 운영: 실제 팩스를 보내지 않아도, 가상의 환경에서 전송 성공/실패 시나리오를 테스트해 볼 수 있습니다. 실수로 실제 요금이 차감되거나 오발송될 걱정이 없습니다.
개발방법
1단계, 파일업로드
먼저, 전송하려는 파일을 FTP의 root에 업로드 해주셔야 합니다.
개발환경에 맞는 FTP 파일업로드 라이브러리를 사용하여 파일업로드 기능을 개발해주셔야 합니다.
2단계, 팩스전송 API 호출
전송하려는 파일의 수, 수신자의 수에 맞는 API를 호출해주세요.
- 1개의 파일을 1명에게 : SendFaxFromFTP
- N개의 파일을 1명에게 : SendFaxFromFTPEx
- 1개의 파일을 N명에게 : SendFaxesFromFTP
- N개의 파일을 N명에게 : SendFaxesFromFTPEx
최대 10개의 파일과, 1000개의 수신번호까지 가능합니다.
팩스전송 API의 파라메터 중 파일명(FileName) 에는 FTP에 업로드한 파일명 만 입력해주세요. (D:/fax/팩스파일.pdf 와 같은 로컬 파일의 경로를 입력하지 않도록 주의해주세요.)
이 API 들은 호출 성공 시 리턴값으로 접수번호(SendKey)를 반환해드리며, 접수번호는 추후 팩스전송 상태를 조회하거나, 예약취소(예약전송인 경우) 등에 사용됩니다.
호출에 성공한 경우 FTP 에 업로드 된 파일은 삭제됩니다.
1명의 수신자에게 전송하는 샘플코드
String sendKey = barobill.SendFaxFromFTP("연동인증키", "사업자번호", "아이디", ... ); // 1개의 파일을 1명에게
// String sendKey = barobill.SendFaxFromFTPEx("연동인증키", "사업자번호", "아이디", ... ); // N개의 파일을 1명에게
if (sendKey 의 값이 음수로 된 다섯자리 숫자형식이라면?) { // API 호출 실패
// 오류코드 내용에 따라 파라메터를 수정하여 다시 실행해주세요.
String errMessage = barobill.GetErrString("연동인증키", (int) sendKey);
} else { // 성공
// 파트너의 프로그램에 sendKey 저장
}
N명의 수신자에게 전송하는 샘플코드
String[] sendKeys = barobill.SendFaxesFromFTP("연동인증키", "사업자번호", "아이디", ... ); // 1개의 파일을 N명에게
// String[] sendKeys = barobill.SendFaxesFromFTPEx("연동인증키", "사업자번호", "아이디", ... ); // N개의 파일을 N명에게
if (sendKey[0] 의 값이 음수로 된 다섯자리 숫자형식이라면?) { // API 호출 실패
// 오류코드 내용에 따라 파라메터를 수정하여 다시 실행해주세요.
String errMessage = barobill.GetErrString("연동인증키", (int) sendKeys[0]);
} else { // 성공
for (int i = 0; i < sendKeys.length; i++) {
// 파트너의 프로그램에 sendKeys[i] 저장
}
}
전송상태 조회
팩스전송 시 반환받은 접수번호를 이용하여 GetFaxMessageEx2 API 로 팩스전송 내용 및 상태를 조회하는 샘플코드입니다.
전송실패의 경우 SendResult 값에 해당하는 사유를 팩스 전송결과 테이블에서 확인할 수 있습니다.
FaxMessageEx2 message = barobill.GetFaxMessageEx2("연동인증키", "사업자번호", "접수번호");
if (message.SendState < 0) { // API 호출 실패
// 오류코드 내용에 따라 파라메터를 수정하여 다시 실행해주세요.
String errMessage = barobill.GetErrString("연동인증키", message.SendState);
} else if (message.SendState == 0) { // 전송중 (파일 변환 대기중)
} else if (message.SendState == 1) { // 전송중 (파일 변환중)
} else if (message.SendState == 2) { // 전송중 (파일 변환완료)
} else if (message.SendState == 3) {
if (message.SendResult == "802") { // 전송성공
} else { // 전송실패
// message.SendResult 값에 해당하는 사유 확인
}
} else if (message.SendState == 4) { // 전송오류 (DB항목 오류)
} else if (message.SendState == 5) { // 전송오류 (파일 변환중 오류)
}
여러건의 상태를 동시에 조회하시려면 GetFaxSendMessagesEx API를 사용할 수 있습니다.
FaxMessageEx2[] messages = barobill.GetFaxSendMessagesEx2("연동인증키", "사업자번호", ["접수번호", "접수번호", ... ]);
if (messages[0].SendState < 0) {// API 호출 실패
// 오류코드 내용에 따라 파라메터를 수정하여 다시 실행해주세요.
String errMessage = barobill.GetErrString("연동인증키", messages[0].SendState);
} else {
for (int i = 0; i < messages.length; i++) {
.
.
.
}
}
예약전송 및 취소방법
팩스전송 API의 파라메터 중 전송일시(SendDT) 항목이 있습니다. 이 값을 미래로 입력한 경우에 예약전송으로 처리됩니다.
예약전송 후, 접수번호를 이용하여 CancelReservedFaxMessage API 로 예약취소가 가능합니다.
전송 5분전까지만 취소할 수 있습니다.
int result = barobill.CancelReservedFaxMessage("연동인증키", "사업자번호", "접수번호");
if (result < 0) { // API 호출 실패
// 오류코드 내용에 따라 파라메터를 수정하여 다시 실행해주세요.
String errMessage = barobill.GetErrString("연동인증키", result);
} else { // 성공
}
팩스전송 목록 개발하기
파트너의 프로그램에 팩스전송 리스트 기능을 구현할 계획이시라면, 팩스전송 상태 를 보여주는 방법에 대한 고민이 필요합니다.
보통, 주기적으로 상태를 조회하여 DB에 기록하는 스케줄링 방식을 사용하거나, 사용자가 리스트를 조회할 때 실시간으로 상태조회 하는 방식을 사용하게 됩니다.
두 방법외에 다른 방법을 사용하시더라도, 개발 공수가 소요된다는 단점이 있습니다.
사용자에게 팩스전송 내역을 보여주는 정도의 기능만 필요한 경우라면, 직접 개발하는 것 보다 GetFaxHistoryURL API를 이용하여 제공하는 방법을 권장합니다.
String url = barobill.GetFaxHistoryURL("연동인증키", "사업자번호", "아이디", ... );
if (url 의 값이 음수로 된 다섯자리 숫자형식이라면?) { // API 호출 실패
// 오류코드 내용에 따라 파라메터를 수정하여 다시 실행해주세요.
String errMessage = barobill.GetErrString("연동인증키", (int) url);
} else { // 성공
// 브라우저 popup 으로 url 열기
}
이렇게 바로 테스트해 볼 수 있어 오류를 미리 잡을 수 있죠

Q4. 팩스 외에 다른 기능으로도 확장이 가능한가요?
단순히 팩스만 보내는 것이 아니라, 팩스를 보낸 거래처가 현재 영업 중인지 확인하는 '사업자상태조회'나,
거래명세서를 보낸 후 세금계산서를 발행하는 '전자세금계산서' 기능까지 유기적으로 연결할 수 있습니다.
- 전자세금계산서 API: 국세청 전송까지 자동화
- 사업자 상태조회 API: 거래처의 상태 실시간 확인 (부실 거래 방지)
- 문자/카카오톡 전송 API: 팩스 전송 후 알림 메시지 발송 가능
이 모든 것을 따로 계약할 필요 없이, 바로빌 포인트 하나로 모두 사용할 수 있다는 것이 가장 큰 장점입니다.
마무리하며 초기 도입비 0원, 월 기본료 0원.