- 전자세금계산서 API 전체 커버 (29개 툴) - 인증서 관리, 계산서 발행(단건/묶음/대량), 상태조회, 회원관리 - 홈택스 연동 (세금계산서/현금영수증 일별/월별 매출/매입) - 휴폐업 조회, 추가메일 전송 - 에러코드표 내장 (Excel 기반) - 코드표 참조 툴 (billtype, taxrate, billstat 등) - 인증: SENDBILL_SBKEY 환경변수 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
149 lines
5.9 KiB
TypeScript
149 lines
5.9 KiB
TypeScript
// 센드빌 API 에러코드 참조표
|
|
// 출처: https://www.sendbill.co.kr/SendbillAPI_Error_Code.xls
|
|
|
|
export const ERROR_CODES: Record<string, string> = {
|
|
// SBKEY 관련
|
|
"-10001": "SBKEY Header 데이터가 없습니다.",
|
|
"-10002": "SBKEY의 데이터가 옳바르지 않습니다.",
|
|
"-10003": "폐기 처리된 SBKEY 입니다.",
|
|
"-10004": "SBKEY의 사용 기간이 만료되었습니다.",
|
|
|
|
// 인증서 관련
|
|
"-11001": "실패",
|
|
"-11002": "등록된 인증서가 없습니다.",
|
|
"-11003": "기타오류, 고객센터로 문의 바랍니다.",
|
|
"-11004": "파일 업로드 중 오류가 발생하였습니다.",
|
|
"-11101": "올바른 파일을 선택해 주세요.",
|
|
"-11102": "[venderno] 필수 항목입니다.",
|
|
"-11103": "[venderno] 최대 길이는 10 bytes 입니다.",
|
|
"-11104": "[venderno] 숫자만 입력 가능합니다.",
|
|
"-11105": "[venderno] 올바른 형태의 사업자번호가 아닙니다.",
|
|
"-11106": "[password] 필수 항목입니다.",
|
|
"-11107": "[certderfile] 필수 항목입니다.",
|
|
"-11108": "[certkeyfile] 필수 항목입니다.",
|
|
"-11401": "등록된 인증서의 발급 정보와 사업자 번호가 일치하지 않습니다.",
|
|
"-11402": "인증서의 발급 정보와 인증서 비밀번호가 일치하지 않습니다.",
|
|
"-11403": "인증서의 사용기간이 만료되었습니다.",
|
|
"-11509": "등록된 인증서의 데이터가 옳바르지 않습니다. 인증서 신규 등록 후 다시 시도해주세요.",
|
|
"-11701": "URL 유효 시간이 만료되었습니다.",
|
|
"-11702": "token 오류, token 재발행 후 재시도해주세요.",
|
|
"-11703": "올바르지 않은 토큰입니다.",
|
|
|
|
// 계산서 발행 관련
|
|
"-12001": "실패",
|
|
"-12002": "조회된 데이터가 없습니다.",
|
|
"-12003": "기타오류, 고객센터로 문의 바랍니다.",
|
|
"-66666": "/api/agent/document/registDirect 긴급점검중 입니다.",
|
|
"-12501": "충전된 요금이 부족합니다.",
|
|
"-12502": "우대권 잔여 건 수 및 충전된 요금이 부족합니다.",
|
|
"-12503": "[대납] 충전된 요금이 부족합니다.",
|
|
"-12504": "[대납] 우대권 잔여 건 수 및 충전된 요금이 부족합니다.",
|
|
"-12631": "[A] 공급자 사업자번호에 해당하는 회원 ID가 없습니다.",
|
|
"-12633": "[A] 공급받는자 사업자번호에 해당하는 회원 ID가 없습니다.",
|
|
"-12641": "[A] 관리자가 마감하여 전송할 수 없습니다.",
|
|
"-12651": "[A] 품목의 합계 금액이 총 금액과 맞지 않습니다.",
|
|
"-12654": "[A] 과세기간(반기)이 지난 세금계산서는 발행이 불가능 합니다.",
|
|
"-12701": "발행자의 인증서가 등록되어 있지 않습니다.",
|
|
"-12703": "발행자의 등록된 인증서 사용기간이 만료되었습니다.",
|
|
"-12101": "[Billseq] 데이터가 중복되었습니다.",
|
|
"-12102": "[Item(Array)] 필수 항목입니다.",
|
|
|
|
// 회원 등록 관련
|
|
"-13001": "실패",
|
|
"-13002": "조회된 데이터가 없습니다.",
|
|
"-13003": "기타오류, 고객센터로 문의 바랍니다.",
|
|
"-13101": "이미 등록된 아이디 입니다.",
|
|
|
|
// 계산서 관리 관련
|
|
"-14001": "실패",
|
|
"-14002": "조회된 데이터가 없습니다.",
|
|
"-14003": "기타오류, 고객센터로 문의 바랍니다.",
|
|
"-14101": "[Orderseq] 데이터 중복 입니다.",
|
|
"-14102": "[Billseq] 필수 항목 입니다.",
|
|
"-14104": "[cmd_div] 필수 항목 입니다.",
|
|
"-14110": "[cmd_div] 올바른 코드 값을 입력 해주세요. [ 6, E ]",
|
|
|
|
// 계산서 상태조회 관련
|
|
"-15001": "실패",
|
|
"-15002": "조회된 데이터가 없습니다.",
|
|
"-15101": "[Billseq] 필수 항목 입니다.",
|
|
|
|
// 홈택스 연동 관련
|
|
"-18001": "실패",
|
|
"-18002": "조회된 데이터가 없습니다.",
|
|
"-18004": "홈택스에서 조회된 데이터가 없습니다.",
|
|
"-18101": "요청 사업자번호의 인증서가 등록되어 있지 않습니다.",
|
|
"-18403": "센드빌에 등록된 홈택스 계정 또는 인증서 정보가 없습니다.",
|
|
"-18401": "홈택스연동 사용 사업자가 아닙니다. 고객센터에 문의 바랍니다.",
|
|
};
|
|
|
|
export function getErrorMessage(code: number | string): string {
|
|
const key = String(Math.round(Number(code)));
|
|
return ERROR_CODES[key] ?? `알 수 없는 오류 코드: ${code}`;
|
|
}
|
|
|
|
// 코드표
|
|
export const CODE_TABLES = {
|
|
billtype: {
|
|
"10": "세금계산서",
|
|
"11": "비회원 세금계산서",
|
|
"20": "(면세)계산서",
|
|
"21": "비회원(면세)계산서",
|
|
"30": "거래명세서",
|
|
"31": "비회원 거래명세서",
|
|
"40": "위수탁 세금계산서",
|
|
"41": "비회원 위수탁 세금계산서",
|
|
"50": "위수탁 (면세)계산서",
|
|
"51": "비회원 위수탁 (면세)계산서",
|
|
"61": "개인 매출 세금계산서",
|
|
"62": "개인 매출 계산서",
|
|
"Y1": "외부 매출 세금계산서",
|
|
"Z1": "외부 매입 세금계산서",
|
|
},
|
|
cmd_div: {
|
|
"6": "삭제요청",
|
|
"E": "EMAIL 전송",
|
|
},
|
|
taxrate: {
|
|
"0": "과세율",
|
|
"1": "영세율",
|
|
"2": "면세율",
|
|
"3": "매입세액불공제",
|
|
"4": "의제매입",
|
|
},
|
|
report_stat: {
|
|
"N": "미신고",
|
|
"A": "접수대기",
|
|
"B": "접수완료",
|
|
"R": "신고상태",
|
|
"F": "신고실패",
|
|
},
|
|
report_amend_cd: {
|
|
"1": "기재사항 착오/정정",
|
|
"2": "공급가액 변동",
|
|
"3": "환입",
|
|
"4": "계약의 해제",
|
|
"5": "내국신용장 사후 개설",
|
|
"6": "착오에 의한 이중발행",
|
|
},
|
|
billstat: {
|
|
"5": "미전송",
|
|
"0": "미개봉",
|
|
"3": "개봉",
|
|
"1": "승인",
|
|
"2": "반려",
|
|
"4": "승인취소",
|
|
"9": "종이문서저장",
|
|
"6": "삭제",
|
|
},
|
|
gubun: {
|
|
"1": "영수",
|
|
"2": "청구",
|
|
},
|
|
etc01: {
|
|
"S": "SENDID: 센드빌 ID / RECVID: 센드빌 ID",
|
|
"I": "SENDID: 센드빌 ID / RECVID: 거래처 ID",
|
|
"X": "SENDID: 거래처 ID / RECVID: 거래처 ID",
|
|
},
|
|
};
|