참고

오류 코드

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

이 문서는 결제 요청·승인·취소 과정에서 발생하는 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 요청 금액과 승인 금액 불일치

흔한 원인​: 프론트엔드에서 보낸 금액과 서버 DB의 금액이 달라요. 할인·쿠폰 적용 후 금액 동기화를 빠뜨린 경우가 가장 많아요.

// 잘못된 예 — 프론트엔드 금액을 그대로 신뢰
const price = req.body.price

// 올바른 예 — 서버 DB에서 직접 계산한 금액과 결제 금액 비교
const order = await db.orders.findByPk(orderId)
if (receipt.price !== order.total_amount) {
    // 금액 불일치 → 결제 취소 또는 승인 거절
}javascript

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

5AUTHENTICITY_TOKEN_EXPIRE 인증 오류

흔한 원인​: 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를 그대로 검색하면 원인과 대처 방법을 찾을 수 있어요.

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

코드 메시지 대처 방법
AUTHENTICITY_TOKEN_EXPIRE 인증 정보가 올바르지 않다 Client Key 또는 Secret Key 를 관리자 > 개발자 설정 에서 다시 확인해요
APP_KEY_NOT_FOUND Client Key 를 찾지 못했다 관리자 > 개발자 설정 > API 연동키 에서 키를 확인해요
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_SK_NOT_MATCHED Secret Key 가 올바르지 않다 관리자 > 개발자 설정 에서 Secret Key 를 다시 확인해요
APP_AT_AUTHORIZE_TYPE_INVALID Authorization 인증 타입이 올바르지 않다 Authorization: Basic {base64} 형식인지 확인해요
APP_AT_AUTHORIZE_HEADER_BLANK Authorization 헤더가 비어 있다 Authorization: Basic {base64(client_key:secret_key)} 형식으로 헤더를 추가해요
APP_API_SCOPE_NOT_MATCHED 현재 사용 중인 API 키에 필요한 권한이 없다 관리자 > 개발자 설정 > API 연동키 에서 API Scope 권한을 추가해요
ONLY_INTERNAL_SERVER 부트페이 내부용 API다. 외부에서는 사용할 수 없다 외부에서 호출 가능한 API 엔드포인트를 사용해요
SESSION_RESULT_BLANK 세션 정보가 비어 있다 다시 로그인하거나 API 인증 정보를 확인해요
SERVICE_WALLET_REQUIRED 서비스 이용료 결제 등록이 필요하다 관리자 > 이용요금 > 결제수단 관리 에서 지갑을 추가해요
CURRENCY_DATA_INVALIDATE 통화·시간 데이터 형식이 잘못되었다 ISO 8601 표준시 포맷으로 보낸다
DB_ERROR 데이터베이스 오류가 발생했다 잠시 후 재시도하거나 관리자에 문의해요
REST_API_ERROR REST API 처리 중 오류가 발생했다 요청 파라미터를 확인하고 재시도해요

공통 에러

코드 메시지 대처 방법
DB_ERROR 데이터베이스 오류가 발생했다 잠시 후 재시도하거나 관리자에 문의해요
EX_UID_DUPLICATED 이미 존재하는 ex_uid 이다 다른 ex_uid 를 사용해요
PROCESS_DUPLICATED 이미 처리된 요청이다 (중복 요청) 중복 요청인지 확인해요

결제 관련 에러

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

코드 메시지 대처 방법
RC_NOT_FOUND 영수증 정보를 찾지 못했다 receipt_id 를 확인해요
RC_PG_NOT_FOUND PG 정보를 찾지 못했다 PG 설정을 확인해요
RC_PM_NOT_FOUND 결제수단 정보를 찾지 못했다 결제수단 설정을 확인해요
RC_NAME_BLANK 상품명을 입력한다 name 파라미터를 입력해요
RC_PRICE_LEAST_LT 100원보다 큰 금액을 결제해야 한다 price 를 100원 이상으로 설정해요
RC_O_ID_BLANK order_id 값을 입력한다 order_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 는 부트페이에서 구현되지 않았다 다른 PG 를 선택한다
RC_REQUEST_ERROR 결제 요청 중 오류가 발생했다 결제 정보를 확인 후 재시도해요
RC_PROCESS_CANCELLED 결제창이 닫혔다 사용자가 결제를 취소한 경우이다
RC_NOT_CONFIRM_READY 결제 승인 대기 상태가 아니다 결제 상태를 확인해요
RC_CONFIRM_NOT_PERMIT application_id 가 결제 요청과 불일치한다 application_id 를 확인해요
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_UNABLE 웹훅 전송 가능 상태가 아니다 결제완료/취소 상태인지 확인해요
RC_CANCEL_FAILED 결제취소 실패 재시도하거나 관리자에 문의해요
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 최초 요청 금액과 승인된 금액이 다르다 price 값을 확인해요
RC_CONFIRM_PRICE_INVALID 최초 요청 금액과 승인 완료 금액이 다르다 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 요청 금액과 승인 금액이 일치하지 않는다 금액을 다시 확인해요
RC_WIDGET_BLANK 위젯 정보가 필요하다 위젯에서 시작된 결제인지 확인해요

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

코드 메시지 대처 방법
SUBSCRIBE_NEED_PG_METHOD 정기결제 요청에는 pg 와 method 정보가 필수이다 pg, method 파라미터를 추가해요
SUBSCRIBE_REQUEST_FAILED 빌링키 발급 요청이 실패했다 결제 정보를 확인 후 재시도해요
SUBSCRIBE_PUBLISH_READY_FAILED 빌링키 발급 승인 전 요청이 실패했다 결제 정보를 확인해요
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_PHONE_BLANK 휴대폰 번호를 입력한다 phone 파라미터를 입력해요
SUBSCRIBE_AT_BANK_CODE_BLANK 은행코드가 올바르지 않거나 비어있다 bank_code 를 확인해요

본인인증 관련 에러

코드 메시지 대처 방법
AUTH_NEED_PG_METHOD 본인인증 요청에는 pg 와 method 정보가 필수이다 pg, method 파라미터를 추가해요
AUTH_REQUEST_FAILED 본인인증 요청이 실패했다 결제 정보를 확인 후 재시도해요
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_ESCROW_LOGIS_CODE_INVALID 택배회사 코드가 올바르지 않다 3자리 택배사 코드를 확인해요
RC_TRACKING_NUMBER_BLANK 운송장 번호를 입력한다 tracking_number 를 입력해요
RC_DELIVERY_CORP_BLANK 택배회사를 입력한다 delivery_corp 를 입력해요

현금영수증 관련 에러

코드 메시지 대처 방법
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_WINDOW_CLOSE 결제창이 닫혔다 사용자가 결제를 중단
RC_PROCESS_CANCELLED 결제가 취소되었다 사용자가 취소 버튼 클릭
RC_TIMEOUT 결제 유효시간이 지났다 결제 시간 초과

서버 에러 코드

코드 메시지 대처 방법
BOOTPAY_CANT_ACCESS Bootpay 서버에 접근할 수 없다 잠시 후 재시도해요
BOOTPAY_PAYMENT_REQUEST_FAILED Bootpay 결제 요청이 실패했다 결제 정보 확인 후 재시도해요
BOOTPAY_CANCEL_REQUEST_FAILED 결제 취소 요청이 서버 오류로 실패했다 관리자에 문의해요

코드표 (Enum)

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

결제연동 Enum