참고

오류 코드

오류 코드로 원인을 찾고 대처법을 좁혀봐요.

이 문서는 결제 요청·승인·취소 과정에서 발생하는 PG 연동 에러 코드를 분류별로 정리해요. API 호출이 실패하면 응답의 error_code 를 먼저 보고, 이 표에서 원인과 대처법을 찾아요.

커머스 오류 코드는 별도

고객·상품·주문·구독 커머스 API 에러 코드는 커머스 오류코드 에서 봐요.

자주 만나는 에러 TOP 6

연동 중 가장 많이 마주치는 에러와 해결법이에요.

1APP_AT_AUTHORIZE_HEADER_BLANK Authorization 헤더 누락/오류

흔한 원인​: Basic Auth 헤더가 없거나 형식이 올바르지 않아요.

// 올바른 예 — SDK 사용 시 자동 처리
Bootpay.setConfiguration({
    client_key: 'YOUR_CLIENT_KEY',
    secret_key: 'YOUR_SECRET_KEY'
})
const receipt = await Bootpay.receiptPayment(receiptId)

// 직접 호출 시 — Basic Auth 헤더 추가
const BASIC_AUTH = 'Basic ' + btoa(`${CLIENT_KEY}:${SECRET_KEY}`)javascript

2RC_PRICE_MISMATCH PG 승인 금액과 부트페이 기록 금액 불일치

흔한 원인​: 가맹점 DB와의 비교에서 나는 에러가 아니에요. 부트페이가 PG(토스·라이트페이)에 결제 건을 조회했을 때 PG가 알려준 승인 금액​​과 부트페이에 기록된 결제 금액​​이 다를 때 발생해요. 가맹점 코드로 고칠 수 있는 상황이 아니니 receipt_id와 함께 관리자에 문의해요.

승인 요청 금액이 최초 요청 금액과 다른 경우는 별도 코드로 내려와요.

상황 코드
승인 직전 검증에서 금액이 다름 RC_CONFIRM_READY_PRICE_INVALID
승인 완료 후 검증에서 금액이 다름 RC_CONFIRM_PRICE_INVALID

가맹점 주문 금액과의 대조는 부트페이가 대신해 주지 않아요. 서버에서 직접 비교해요.

// 서버 DB에서 계산한 금액과 결제 조회 결과를 비교
const receipt = await Bootpay.receiptPayment(receiptId)
const order = await db.orders.findByPk(orderId)

if (receipt.price !== order.total_amount) {
    // 금액 불일치 → 결제 취소 또는 주문 보류
}javascript
부분취소된 건에는 이 비교가 그대로 통하지 않아요

응답의 price 는 원금이 아니라 남은 금액(원금 − 누적 취소금액) 이에요. 부분취소가 한 번이라도 있었다면 price !== total_amount 가 정상이고, 원금은 price + cancelled_price 로 복원해요.

3APP_SK_NOT_MATCHED Secret KEY 불일치

흔한 원인​: 테스트 키와 운영 키를 헷갈렸거나 .env 에 잘못된 키를 복사한 경우예요.

4RC_ALREADY_CANCELLED 이미 취소 처리됨

흔한 원인​: 웹훅과 프론트엔드에서 동시에 취소 요청을 보내거나 취소 전에 결제 상태를 확인하지 않는 경우예요.

// 올바른 예 — 취소 전 결제 상태와 가맹점 DB 상태 확인
const receipt = await Bootpay.receiptPayment(receiptId)
const order = await db.orders.findByPk(orderId)

if (receipt.status === 20 || order.status === 'refunded') {
    return res.json({ error: '이미 취소된 결제입니다' })
}
// 취소 진행...javascript

5APP_CLIENT_KEY_NOT_FOUND / APP_KEY_CHAIN_EXPIRED 연동키 오류

흔한 원인​: Client Key 로 연동키를 찾지 못했거나(APP_CLIENT_KEY_NOT_FOUND), Client Key 와 Secret Key 의 짝이 맞지 않거나(APP_SK_NOT_MATCHED), 발급받은 연동키의 유효기간이 지난 경우(APP_KEY_CHAIN_EXPIRED)예요.

  • 관리자 > 개발자 설정 > API 연동키 에서 Client Key·Private Key 와 만료일​​을 함께 확인해요.
  • Client Key 와 Secret Key 는 반드시 같은 연동키에서 발급된 짝으로 보내야 해요.

6RC_NOT_FOUND 영수증 정보 없음

흔한 원인​: receipt_id 오타, 다른 프로젝트의 결제 건 조회, 테스트·운영 환경 혼동 중 하나예요.


에러 응답 형식

HTTP/1.1 400 Bad Request
Content-Type: application/json
{
  "error_code": "RC_ALREADY_CANCELLED",
  "message": "요청하신 결제는 이미 취소처리가 되었습니다."
}json
필드 타입 설명
error_code String 에러 코드 텍스트
message String 에러 메시지 (한국어)
payload Object 추가 데이터 (에러에 따라 포함, 없으면 생략)
pg_error_code String PG사 에러 코드 (결제 관련 에러에서만 포함)
error_code 와 코드표의 관계

이 문서는 결제 API에서 확인해야 하는 텍스트형 에러 코드를 기준으로 정리해요. 응답의 error_code를 그대로 검색하면 원인과 대처 방법을 찾을 수 있어요.

HTTP 상태 코드만으로 성공·실패를 판정하지 않아요

2xx 라고 해서 항상 정상 응답은 아니에요. 아래 두 코드는 2xx 상태 코드와 함께 에러 응답 본문(error_code 포함) 으로 내려와요.

HTTP error_code 의미
201 RC_CONFIRM_ALREADY_COMPLETE 이미 승인이 끝난 건에 대한 재승인 요청(승인 직후 10초 이내). 성공으로 간주​​하고 결제 조회로 최종 상태를 확인해요
202 RC_CONFIRM_PENDING 승인 처리가 지연 중이에요. 결과는 웹훅 또는 결제 조회로 확인해요

응답 본문에 error_code 가 있는지로 분기하고, 위 두 코드는 실패로 처리하지 않아요.

아래 표의 '메시지' 컬럼은 설명문이에요

표의 메시지 컬럼은 코드의 의미를 풀어 쓴 설명문​​이지, 응답으로 내려오는 문자열 원문이 아니에요. 사용자 화면에 그대로 옮기거나 문자열 비교로 분기하지 말고 error_code 로 분기​​해요.

메시지가 서버에 정의되지 않은 코드는 messageTranslation missing: ko.error.code.XXXX 형태로 내려올 수 있어요. 이때도 error_code 는 정상적으로 내려오니 그 값을 기준으로 처리해요.

인증 관련 에러 {#인증-관련-에러}

코드 메시지 대처 방법
APP_KEY_CHAIN_NOT_FOUND Basic Auth 헤더에서 Client Key 또는 Secret Key 를 읽지 못했다 Authorization: Basic {base64(client_key:secret_key)} 로 두 값이 모두 들어갔는지 확인해요
APP_CLIENT_KEY_NOT_FOUND Client Key 로 연동키를 찾지 못했다 관리자 > 개발자 설정 > API 연동키 에서 Client Key 를 다시 복사해요
APP_SK_NOT_MATCHED Client Key 와 짝이 맞는 Secret Key 가 아니다 같은 연동키에서 발급된 Client Key·Private Key 쌍인지 확인해요
APP_KEY_CHAIN_EXPIRED 연동키의 유효기간이 지났다 관리자에서 연동키 만료일을 확인하고 새 키를 발급받아요
APP_KEY_NOT_FOUND Application ID 를 찾지 못했다 레거시 Application ID(Bearer 토큰) 경로에서만 발생해요. 현행 Basic Auth 로 전환하거나 Application ID 를 확인해요
APP_KEY_PLATFORM_NOT_MATCH 요청한 Platform Type 과 SDK Platform Type 이 일치하지 않는다 Client Key 의 플랫폼 타입(Web/Android/iOS)을 확인해요
APP_KEY_NOT_REST 요청한 Client Key가 REST API 키가 아니다 REST API용 Client Key 를 사용해요
APP_FIREWALL_BLOCKED 접근이 허가된 IP 가 아니다 관리자 > 개발자 설정 > 보안 정책 에서 IP 보안 설정을 확인해요
APP_AT_AUTHORIZE_TYPE_INVALID Authorization 헤더가 BasicBearer 도 아니다 Authorization: Basic {base64} 형식인지 확인해요
APP_AT_AUTHORIZE_HEADER_BLANK Authorization 헤더가 비어 있다 Authorization: Basic {base64(client_key:secret_key)} 형식으로 헤더를 추가해요
API_SCOPE_INVALID 사용 중인 연동키에 이 API 의 Scope 가 설정되지 않았다 관리자 > 개발자 설정 > API 연동키 에서 해당 Scope 를 추가해요
API_ROLE_NOT_SUPPORT 요청한 API 에 대응하는 Scope 정의를 찾지 못했다 API 경로를 확인하고, 계속 발생하면 관리자에 문의해요
APP_API_SCOPE_NOT_MATCHED 연동키를 만들거나 수정할 때 지정한 Scope 값이 올바르지 않다 관리자에서 연동키 Scope 를 다시 설정해요. API 호출 시 권한 부족은 API_SCOPE_INVALID 로 내려와요
APP_LEAVED 삭제된 프로젝트이거나 탈퇴한 가맹점이다 프로젝트 상태를 확인해요
PROVIDER_NOT_ALLOW 이미 탈퇴했거나 결제가 허용된 가맹점이 아니다 관리자에 문의해요
API_ONLY_SELLER 판매점 계정만 사용할 수 있는 API 다 판매점 계정의 연동키로 호출해요
ONLY_INTERNAL_SERVER 부트페이 내부용 API다. 외부에서는 사용할 수 없다 외부에서 호출 가능한 API 엔드포인트를 사용해요
SESSION_RESULT_BLANK 세션 정보가 비어 있다 다시 로그인하거나 API 인증 정보를 확인해요
SERVICE_WALLET_REQUIRED 서비스 이용료 결제 등록이 필요하다 관리자 > 이용요금 > 결제수단 관리 에서 지갑을 추가해요
REST_API_ERROR REST API 처리 중 오류가 발생했다 요청 파라미터를 확인하고 재시도해요

공통 에러

코드 메시지 대처 방법
PROCESS_DUPLICATED 이미 처리된 요청이다 (중복 요청) 중복 요청인지 확인해요
CURRENCY_DATA_INVALIDATE 부트페이 내부 환율 데이터 검증에 실패했다 (500) 요청 값과 무관한 서버 측 오류예요. 잠시 후 재시도하고 계속되면 관리자에 문의해요

결제 관련 에러

결제 요청, 승인, 취소 과정에서 발생하는 에러예요.

코드 메시지 대처 방법
RC_NOT_FOUND 영수증 정보를 찾지 못했다 receipt_id 를 확인해요
RC_PG_NOT_FOUND PG 정보를 찾지 못했다 PG 설정을 확인해요
RC_PM_NOT_FOUND 결제수단 정보를 찾지 못했다 결제수단 설정을 확인해요
RC_NAME_BLANK 상품명을 입력한다 name 파라미터를 입력해요
RC_PRICE_LEAST_LT 최소 결제금액 미만이다 (KRW 100원 미만, USD 0.01 미만) 100원 자체는 허용돼요. extra.minimum_price_limit: false 로 이 검증을 끌 수 있어요
RC_O_ID_BLANK order_id 값을 입력한다 order_id 파라미터를 입력해요. 빌링키 발급에서는 subscription_id, 본인인증에서는 authentication_id 를 안내하는 메시지로 바뀌어요
RC_UUID_BLANK UUID 값이 비어있다 UUID 를 확인해요
RC_SK_BLANK SK 값이 비어있다 Secret Key 를 확인해요
RC_ITEM_NAME_BLANK 세부 상품명이 비어 있다 상품명을 입력해요
RC_ITEM_QTY_INVALID 세부 상품 구매 qty 가 0보다 커야 한다 qty 를 1 이상으로 설정해요
RC_ITEM_ID_BLANK 세부 상품 고유 ID 값이 비어있다 item_id 를 입력해요
RC_ITEM_PRICE_INVALID 세부 상품 금액이 0보다 작을 수 없다 가격을 확인해요
RC_ITEM_TOTAL_PRICE_INVALID 세부 상품 총 구매합이 결제 요청 금액과 불일치한다 아이템 합계를 확인해요
RC_NOT_READY 결제 시작 대기 상태가 아니다 결제를 다시 요청해요
RC_PG_NOT_SELECTED PG 가 선택되지 않았다 PG 를 선택한다
RC_PM_NOT_SELECTED 결제 수단이 선택되지 않았다 결제수단을 선택한다
RC_RESOURCE_NOT_CONFIG 결제수단이 허가/설정되지 않았다 관리자에서 결제수단을 설정해요
RC_WINDOW_CLOSE 선택한 PG 는 부트페이에서 구현되지 않았다 (현재 사용되지 않는 코드) 실제로 발생하지 않아요. 결제창 닫힘은 RC_PROCESS_CANCELLED 로 내려와요
RC_REQUEST_ERROR 결제 요청 중 오류가 발생했다 결제 정보를 확인 후 재시도해요
RC_REQUEST_FAILED PG 결제 요청 자체가 실패했다 PG 응답 메시지와 pg_error_code 를 확인해요
RC_PROCESS_CANCELLED 결제창이 닫혔다 사용자가 결제를 중단한 경우예요. 실제 메시지는 gateway 가 내려주는 "결제창이 닫혔습니다." 또는 PG 가 전달한 문구예요
RC_NOT_DOING 결제 진행 상태가 아니다 이미 종료되었거나 시작되지 않은 결제예요. 결제를 다시 요청해요
RC_METHOD_INVALID PG 가 돌려준 결제수단을 부트페이가 해석하지 못했다 사용 중인 PG·결제수단 조합을 확인하고 관리자에 문의해요
RC_NOT_CONFIRM_READY 결제 승인 대기 상태가 아니다 결제 상태를 확인해요
RC_CONFIRM_READY_SERVER_ERROR 승인 대기 처리 중 서버 오류가 발생했다 결제 상태를 조회해 실제 처리 여부를 확인한 뒤 재시도해요
RC_CONFIRM_ONLY_REST_API REST API 로만 승인할 수 있는 결제다 extra.confirm_only_rest_api: true 로 클라이언트 승인이 차단된 건이에요. 서버에서 승인 API 를 호출해요
RC_CONFIRM_ALREADY_COMPLETE 이미 승인이 끝난 건에 대한 재승인 요청이다 (HTTP 201) 승인 직후 10초 이내 재요청 시 발생해요. 성공으로 간주​​하고 결제 조회로 최종 상태를 확인해요
RC_CONFIRM_PENDING 승인 처리가 지연 중이다 (HTTP 202) 실패가 아니에요. 웹훅 또는 결제 조회로 결과를 확인해요
RC_CONFIRM_NOT_PERMIT Client Key가 결제 요청과 불일치한다 결제 요청에 사용한 Client Key가 승인 요청의 인증 키와 같은 프로젝트인지 확인해요
RC_CONFIRM_METHOD_NOT_FOUND 결제 승인 함수가 구현되지 않았다 관리자에 문의해요
RC_CONFIRM_FAILED 결제 승인에 실패했다 결제 정보를 확인 후 재시도해요
RC_ALREADY_CANCELLED 이미 취소 처리된 결제이다 주문 상태를 확인해요
RC_NOT_ABLE_CANCEL 결제 완료 상태가 아니라 취소할 수 없다 결제 상태를 확인해요
RC_CANCEL_ID_ALREADY_EXIST 동일한 cancel_id 로 이미 취소 요청되었다 cancel_id 를 확인해요
RC_PM_CANCEL_NOT_SUPPORT 해당 PG 결제수단은 취소 API를 지원하지 않는다 PG 취소 지원 여부를 확인해요
RC_PM_P_CANCEL_NOT_SUPPORT 해당 PG 결제수단은 부분취소를 지원하지 않는다 전액취소를 진행해요
RC_CANCEL_SERVER_ERROR 결제 취소 오류이다 재시도하거나 관리자에 문의해요
RC_CANCEL_METHOD_NOT_FOUND 취소 구현이 되지 않은 PG 이다 관리자에 문의해요
RC_APP_NOT_FOUND 결제에 저장된 프로젝트 정보를 찾을 수 없다 프로젝트 설정을 확인해요
RC_PROVIDER_NOT_FOUND 결제에 저장된 가맹점 정보를 찾을 수 없다 가맹점 정보를 확인해요
RC_NOT_ALLOW 해당 계정의 결제 정보가 아니다 인증 정보를 확인해요
RC_NOT_ISSUED 가상계좌 입금 대기 상태가 아니다 가상계좌 상태를 확인해요
RC_PERMISSION_LOW 결제에 대한 작업 진행 권한이 없다 API 인증 권한을 확인해요
RC_WEBHOOK_STATUS_INVALID 웹훅 재전송이 가능한 상태가 아니다 결제완료(1), 결제취소완료(20), 가상계좌발급완료(5), 본인인증완료(12) 상태에서만 재전송할 수 있어요
RC_CANCEL_PRICE_NOT_ZERO 취소금액이 0보다 커야 한다 cancel_price 를 확인해요
RC_CANCEL_PRICE_OVER 취소 요청 금액이 취소 가능 잔액​​을 초과한다 실제 메시지에는 남은 금액과 요청 금액이 함께 들어가요. 부분취소 이후에는 원금이 아니라 잔액이 기준이에요
RC_CANCEL_TAX_FREE_OVER 면세 취소 요청 금액이 취소 가능한 면세 잔액을 초과한다 실제 메시지에는 취소 가능 면세금액과 요청 금액이 함께 들어가요
RC_NOT_SUBSCRIBE 정기결제 요청 정보가 아니다 빌링키 결제를 사용해요
RC_ONLY_REST_API REST API 로만 요청 가능한 결제수단이다 REST API 로 요청해요
RC_USER_EMAIL_INVALID user 필드의 이메일 포맷이 잘못되었다 이메일 형식을 확인해요
RC_USER_PHONE_INVALID user 필드의 전화번호 포맷이 잘못되었다 전화번호 형식을 확인해요
RC_CONFIRM_READY_PRICE_INVALID 최초 요청 금액과 승인 요청 금액이 다르다 (승인 직전 검증) 승인 API 에 넘기는 price 값을 확인해요
RC_CONFIRM_PRICE_INVALID 최초 요청 금액과 승인 완료 금액이 다르다 (승인 이후 검증) 결제 상태가 -17(결제금액변조승인)로 전이돼요. 응답 payloadrequest_price(요청 금액)와 request_confirm_price(승인된 금액)를 비교하고 관리자에 문의해요
RC_REQUEST_OVER_ON_IP 동일 IP 에서 여러 번 결제 요청할 수 없다 잠시 후 다시 시도한다
RC_USER_TOKEN_INVALID UserToken 값이 잘못되었거나 다른 프로젝트에서 발급된 값이다 UserToken 을 다시 확인해요
RC_REDIRECT_URL_INVALID redirect 모드에서 redirect_url 이 필요하다 redirect_url 을 입력해요
RC_REQUIRE_LEAST_PRICE PG 최소 결제 금액 미만이다 최소 금액 이상으로 결제한다
RC_TIMEOUT 결제 유효시간이 지났다 다시 결제를 요청해요
RC_COMPLETED 이미 결제 진행이 완료된 건이다 주문 상태를 확인해요
RC_CONFIRM_CRITICAL_FAILED 복구 금액이 취소 금액을 초과하거나 0원 이하이다 금액을 확인해요
RC_CANCEL_CRITICAL_ERROR 결제 취소 중 치명적 오류가 발생했다 관리자에 문의해요
RC_PROVIDER_PAYMENT_NOT_ALLOW 서비스 이용료 미납으로 결제 진행 불가하다 관리자에 문의해요
RC_PROVIDER_NOT_ALLOW 가맹점이 탈퇴/차단 상태이다 관리자에 문의해요
RC_PRICE_MISMATCH PG 조회 결과의 승인 금액과 부트페이 기록 금액이 일치하지 않는다 가맹점 DB 와의 비교가 아니에요. receipt_id 와 함께 관리자에 문의해요
RC_NOT_AUTH receipt_id 가 본인인증 건이 아니다 본인인증 조회 API 에 결제 receipt_id 를 넣지 않았는지 확인해요
RC_NOT_PAYMENT receipt_id 가 결제 건이 아니다 결제 조회 API 에 본인인증·빌링키 receipt_id 를 넣지 않았는지 확인해요
RC_WIDGET_BLANK 위젯 정보가 필요하다 위젯에서 시작된 결제인지 확인해요

정기결제(빌링) 관련 에러

코드 메시지 대처 방법
SUBSCRIBE_NEED_PG_METHOD 정기결제 요청에는 pg 와 method 정보가 필수이다 pg, method 파라미터를 추가해요
SUBSCRIBE_REQUEST_FAILED 빌링키 발급 요청이 실패했다 결제 정보를 확인 후 재시도해요
SUBSCRIBE_PUBLISH_READY_FAILED 빌링키 발급 승인 전 요청이 실패했다 결제 정보를 확인해요
SUBSCRIBE_PUBLISH_FAILED PG 의 빌링키 발급 처리가 실패했다 PG 응답 메시지와 pg_error_code 를 확인하고 카드 정보를 다시 확인해요
SUBSCRIBE_PUBLISH_NOT_READY 빌링키 발급 대기 상태가 아니다 빌링키 상태를 확인해요
SUBSCRIBE_PUBLISH_M_NOT_FOUND 빌링키 발급 기능이 없는 PG 이다 다른 PG 를 사용해요
SUBSCRIBE_NOT_SUCCESS 빌링키 발급이 완료된 건이 아니다 빌링키 상태를 확인해요
SUBSCRIBE_BK_NOT_FOUND 빌링키 발급 내역을 찾지 못했다 billing_key 를 확인해요
SUBSCRIBE_BK_EXPIRED 빌링키 사용 유효기간이 지났다 새로운 빌링키를 발급받아요
SUBSCRIBE_CARD_NO_BLANK 카드 번호를 입력한다 card_no 파라미터를 입력해요
SUBSCRIBE_CARD_PW_BLANK 카드 비밀번호 앞 2자리를 입력한다 card_pw 파라미터를 입력해요
SUBSCRIBE_CARD_IDENTITY_BLANK 생년월일 또는 사업자등록번호를 입력한다 identity_no 파라미터를 입력해요
SUBSCRIBE_CARD_EX_YEAR_BLANK 카드 만료 년도를 입력한다 expire_year 를 입력해요
SUBSCRIBE_CARD_EX_MONTH_BLANK 카드 만료 월을 입력한다 expire_month 를 입력해요
SUBSCRIBE_ALREADY_PUBLISHED 이미 발급된 빌링키이다 기존 빌링키를 사용해요

계좌자동이체 관련 에러

코드 메시지 대처 방법
SUBSCRIBE_AT_BLANK_NOT_FOUND 은행 코드/은행명이 올바르지 않다 지원하는 은행 코드를 확인해요
SUBSCRIBE_AT_USERNAME_BLANK 은행 예금주명을 입력한다 username 파라미터를 입력해요
SUBSCRIBE_AT_BANK_ACCOUNT_BLANK 은행 계좌번호를 입력한다 bank_account 파라미터를 입력해요
SUBSCRIBE_AT_IDENTITY_NO_BLANK 생년월일 또는 사업자등록번호를 입력한다 identity_no 를 입력해요. 이 코드는 SUBSCRIBE_AT_AUTH_TYPE_INVALID 와 같은 번호(2353)를 쓰기 때문에 응답의 error_codeSUBSCRIBE_AT_AUTH_TYPE_INVALID 로 내려와요
SUBSCRIBE_AT_PHONE_BLANK 휴대폰 번호를 입력한다 phone 파라미터를 입력해요
SUBSCRIBE_AT_BANK_CODE_BLANK 은행코드가 올바르지 않거나 비어있다 bank_code 를 확인해요

본인인증 관련 에러

코드 메시지 대처 방법
AUTH_NEED_PG_METHOD 본인인증 요청에는 pg 와 method 정보가 필수이다 pg, method 파라미터를 추가해요
AUTH_REQUEST_FAILED 본인인증 요청이 실패했다 결제 정보를 확인 후 재시도해요
AUTH_CONFIRM_READY_FAILED 본인인증 승인 전 요청이 실패했다 PG 응답 메시지와 pg_error_code 를 확인하고 인증을 다시 요청해요
AUTH_ALREADY_AUTHENTICATED 이미 본인인증이 완료된 건이다 인증 상태를 확인해요
AUTH_NOT_READY 본인인증 준비 상태가 아니다 인증을 다시 요청해요
AUTH_CONFIRM_FAILED 본인인증 승인이 실패했다 재시도하거나 관리자에 문의해요
AUTH_NOT_FOUND 본인인증 정보를 찾지 못했다 receipt_id 를 확인해요
AUTH_NOT_CONFIRMED 아직 승인되지 않은 본인인증이다 인증을 완료해요
AUTH_EXPIRED 본인인증 확인 유효시간(30분)이 지났다 인증을 다시 요청해요

예약결제 관련 에러

코드 메시지 대처 방법
SR_RESERVE_TIME_PAST 예약 결제 시간이 과거이다 미래 시간으로 설정해요
SR_BK_RESERVE_OVER 빌링키당 예약건이 10건을 초과했다 기존 예약을 취소한다
SR_ON_BLANK 자동결제 예약 상품명을 입력한다 order_name 을 입력해요
BS_NOT_FOUND 예약결제 정보를 찾지 못했다 예약 ID 를 확인해요
BS_NOT_READY 예약결제 대기 상태가 아니다 예약 상태를 확인해요
SR_EXIST 동일 빌링키에 중복 order_id 가 있다 다른 order_id 를 사용해요
SR_PRICE_LT_100 예약 결제 금액은 100원 이상이어야 한다 price 를 100원 이상으로 설정해요
SR_WEBHOOK_URL_BLANK 웹훅 URL 을 입력하거나 관리자에서 등록한다 webhook_url 을 설정해요

에스크로 관련 에러

코드 메시지 대처 방법
RC_ESCROW_NOT_READY 에스크로 대기 상태가 아니면 배송 시작 불가하다 에스크로 상태를 확인해요
RC_ESCROW_SHIPPING_START_FAILED 배송시작 API 수행에 실패했다 재시도해요
RC_NOT_ESCROW 에스크로 결제건이 아니다 에스크로 결제인지 확인해요
RC_TRACKING_NUMBER_BLANK 운송장 번호를 입력한다 tracking_number 를 입력해요
RC_DELIVERY_CORP_BLANK 택배회사를 입력한다 delivery_corp 를 입력해요
delivery_corp 는 코드가 아니라 한글 택배사명이에요

delivery_corp 에는 CJ대한통운, 한진, 롯데 처럼 택배사 목록의 한글 이름을 넣어요. 목록에 없는 값을 보내면 코드 오류가 나는 대신 기타​(KCP ETC, 이니시스 9999)로 폴백돼요. 원하는 택배사로 전달되지 않으면 이름 표기를 먼저 확인해요.

현금영수증 관련 에러

코드 메시지 대처 방법
RC_CASH_RECEIPT_FAILED 현금영수증 발행에 실패했다 재시도하거나 관리자에 문의해요
RC_CASH_RECEIPT_METHOD_NOT_FOUND 해당 PG 는 현금영수증 발행을 지원하지 않는다 다른 PG 를 사용해요
RC_CASH_RECEIPT_ALREADY_CANCELLED 이미 취소 처리된 현금영수증이다 취소 상태를 확인해요
RC_NOT_CASH_RECEIPT 현금영수증 처리건이 아니다 receipt_id 를 확인해요
RC_CASH_RECEIPT_PUBLISHED 현금영수증이 이미 발행되었다 기존 발행 내역을 확인해요
RC_CASH_RECEIPT_NEED_USERNAME 구매자 명이 필요하다 username 을 입력해요
RC_CASH_RECEIPT_NEED_IDENTITY_NO 전화번호, 현금영수증 카드번호, 또는 사업자번호가 필요하다 identity_no 를 입력해요

프론트엔드 에러 코드

코드 메시지 원인
RC_PROCESS_CANCELLED 결제창이 닫혔다 사용자가 결제창을 닫거나 취소했어요. 결제창 닫힘은 모두 이 코드로 내려와요
RC_TIMEOUT 결제 유효시간이 지났다 결제 시간 초과

서버 오류 코드

부트페이 서버 처리 중 발생하는 오류예요.

코드 메시지 대처 방법
RC_CONFIRM_READY_SERVER_ERROR 승인 대기 처리 중 서버 오류가 발생했다 결제 조회로 실제 처리 여부를 확인한 뒤 재시도해요
RC_CANCEL_SERVER_ERROR 결제 취소 처리 중 오류가 발생했다 결제 상태를 조회해 취소 반영 여부를 확인하고 재시도해요
BS_BOOTPAY_SERVER_ERROR 예약결제 실행 중 부트페이 서버 오류가 발생했다 예약 상태를 확인하고 관리자에 문의해요

코드표 (Enum)

PG사·결제수단·카드사·은행·통화 등 코드값은 별도 페이지에서 봐요.

결제연동 Enum