# 장바구니/주문결제 에러코드 안내

업데이트 일자: 2023. 1.17

```
[FAQ] 샵바이프리미엄 1:1문의를 통해 문의가 자주 들어오는 공통질문을 모아서 답변하는 콘텐츠입니다.  
```

<br>

❓질문

장바구니 및 주문결제 API 요청 시, 응답될 수 있는 에러코드 및 메시지가 궁금합니다.

<br>

❗답변

아래 장바구니/결제 관련 에러 코드 참고 부탁드립니다.\
상황에 따라 아래 에러 코드 외에 다른 에러도 발생할 수 있으며, 모든 에러에 대한 코드 정보를 다 취합할 수 없는 부분 참고 부탁드립니다.

(1/17 업데이트) 더불어, 결제 시 발생하는 에러메시지를 커스터마이징 할 수 있도록 아래 안내드립니다.<br>

1. **장바구니**\
   1-1. 에러코드

{% code overflow="wrap" %}

```java
INVALID_OPTION("PPVE0001", "payProduct.payProductValidationErrorCode.invalidOption"),
UNUSABLE_CART_PRODUCT("PPVE0002", "payProduct.payProductValidationErrorCode.unusableCartProduct"),
MINOR_PURCHASE_IS_NOT_POSSIBLE(
    "PPVE0003",
    "payProduct.payProductValidationErrorCode.minorPurchaseIsNotPossible"
),
NONMEMBER_PURCHASE_IS_NOT_POSSIBLE(
    "PPVE0004",
    "payProduct.payProductValidationErrorCode.nonmemberPurchaseIsNotPossible"
),
CANNOT_BE_SOLD("PPVE0005", "payProduct.payProductValidationErrorCode.cannotBeSold"),
INVALID_PAYMENT_TYPE("PPVE0006", "payProduct.payProductValidationErrorCode.invalidPaymentType"),
MEMBER_GRADE_NOT_AVAILABLE_FOR_PURCHASE(
    "PPVE0007",
    "payProduct.payProductValidationErrorCode.memberGradeNotAvailableForPurchase"
),
MEMBER_GROUP_NOT_AVAILABLE_FOR_PURCHASE(
    "PPVE0008",
    "payProduct.payProductValidationErrorCode.memberGroupNotAvailableForPurchase"
),
PURCHASE_QUANTITY_LIMIT("PPVE0009", "payProduct.payProductValidationErrorCode.purchaseQuantityLimit"),
ERROR_ONLY_MEMBER_PURCHASE_ALLOWED_FOR_ADULT(
    "PPVE0010",
    "payProduct.payProductValidationErrorCode.onlyMemberPurchaseAllowedForAdult"
),
OUT_OF_STOCK("PPVE0011", "payProduct.payProductValidationErrorCode.outOfStock"),
OUT_OF_STOCK_NO_OPTION("PPVE0020", "payProduct.payProductValidationErrorCode.cannotBeSold"),

PRODUCT_IS_DELETED("PPVE0012", "payProduct.payProductValidationErrorCode.productIsDeleted"),
PRODUCT_SALE_STATUS_STOP("PPVE0013", "payProduct.payProductValidationErrorCode.productSaleStatusStop"),
PRODUCT_SALE_STATUS_READY("PPVE0014", "payProduct.payProductValidationErrorCode.productSaleStatusReady"),
PRODUCT_SALE_STATUS_FINISHED("PPVE0015", "payProduct.payProductValidationErrorCode.productSaleStatusFinished"),
PRODUCT_SALE_STATUS_PROHIBITION(
    "PPVE0016",
    "payProduct.payProductValidationErrorCode.productSaleStatusProhibition"
),
PRODUCT_SALE_STATUS_RESERVATION_READY(
    "PPVE0017",
    "payProduct.payProductValidationErrorCode.productSaleStatusReservationReady"
),
PRODUCT_SALE_STATUS_RESERVATION_FINISHED(
    "PPVE0018",
    "payProduct.payProductValidationErrorCode.productSaleStatusReservationFinished"
),
FRONT_DISPLAY_NONE("PPVE0019", "payProduct.payProductValidationErrorCode.frontDisplayNone"),
UNABLE_TO_DELIVER("PPVE0020", "payProduct.payProductValidationErrorCode.unableToDeliver")
```

{% endcode %}

***

&#x20;     1-2. 에러메시지

{% code overflow="wrap" %}

```java
payProduct.payProductValidationErrorCode.invalidOption=구매불가한 옵션이 포함되어 있습니다.
payProduct.payProductValidationErrorCode.unusableCartProduct=장바구니 담기 불가능한 상품입니다.
payProduct.payProductValidationErrorCode.minorPurchaseIsNotPossible=미성년자 구매불가 상품입니다.
payProduct.payProductValidationErrorCode.nonmemberPurchaseIsNotPossible=비회원 구매불가 상품입니다.
payProduct.payProductValidationErrorCode.cannotBeSold=구매불가한 상품입니다.
payProduct.payProductValidationErrorCode.invalidPaymentType=해당 결제수단으로 결제가 불가능한 상품이 포함되어 있습니다.
payProduct.payProductValidationErrorCode.memberGradeNotAvailableForPurchase=구매가능한 회원등급이 아닙니다.
payProduct.payProductValidationErrorCode.memberGroupNotAvailableForPurchase=구매가능한 회원그룹이 아닙니다.
payProduct.payProductValidationErrorCode.purchaseQuantityLimit=구매수량이 제한되었습니다.
payProduct.payProductValidationErrorCode.onlyMemberPurchaseAllowedForAdult=본인인증된 회원만 구매 가능한 상품입니다. 로그인해 주세요.
payProduct.payProductValidationErrorCode.outOfStock=구매불가한 옵션이 포함되어 있습니다.
payProduct.payProductValidationErrorCode.productIsDeleted=삭제된 상품입니다.
payProduct.payProductValidationErrorCode.productSaleStatusStop=판매중지된 상품입니다.
payProduct.payProductValidationErrorCode.productSaleStatusReady=판매대기중인 상품입니다.
payProduct.payProductValidationErrorCode.productSaleStatusFinished=판매종료된 상품입니다.
payProduct.payProductValidationErrorCode.productSaleStatusProhibition=판매금지된 상품입니다.
payProduct.payProductValidationErrorCode.productSaleStatusReservationReady=예약판매대기중인 상품입니다.
payProduct.payProductValidationErrorCode.productSaleStatusReservationFinished=예약판매종료된 상품입니다.
payProduct.payProductValidationErrorCode.frontDisplayNone=구매불가한 상품입니다.
payProduct.payProductValidationErrorCode.unableToDeliver=요청일에 배송이 불가능합니다.
payProduct.payProductValidationErrorCode.unknownError=구매불가한 옵션이 포함되어 있습니다.
```

{% endcode %}

***

2. **결제**\
   2-1. 에러코드

{% code overflow="wrap" %}

```java
NOT_FOUND("ODSH0001", "error.orderSheet.notFound"),
INVALID_PARAMETER_PRODUCT("ODSH0002", "error.orderSheet.invalidParameterProduct"),
INVALID_PARAMETER_PRODUCT_COUPON("ODSH0003", "error.orderSheet.invalidParameterProductCoupon"),
MEMBER_HAVE_TO_BE_CERTIFIED_WITH_PHONE("O3336", "error.orderSheet.memberHaveToBeCertified"),
MEMBER_HAVE_TO_BE_CERTIFIED_WITH_SMS("O3338", "error.orderSheet.memberHaveToBeCertified"),
MEMBER_HAVE_TO_BE_CERTIFIED("O3336", "error.orderSheet.memberHaveToBeCertified"),
EXPIRED_ORDER_SHEET("ODSH0005", "error.orderSheet.expiredOrderSheet"),
NOT_FOUND_BRAND("ODSH0006", "error.orderSheet.notFoundBrand"),
NOT_FOUND_DELIVERY_PRODUCT("ODSH0007", "error.orderSheet.notFoundDeliveryProduct"),
NOT_FOUND_STOCK("ODSH0008", "error.orderSheet.notFoundStock"),
INVALID_ORDER_SHEET_ID("ODSH0009", "error.orderSheet.invalidOrderSheetId"),
EXCEEDED_USABLE_ACCUMULATION_AMOUNT("ODSH0010", "error.orderSheet.exceededUsableAccumulationAmount"),
USED_MIN_ACCUMULATION_AMOUNT("ODSH0011", "error.orderSheet.usedMinAccumulationAmount"),
NOT_FOUND_ORDER_NO("ODSH0012", "error.orderSheet.notFoundOrderNo"),
NOT_ALLOW_USE_COUPON("ODSH0013", "error.orderSheet.notAllowUseCoupon"),
INVALID_PG_OR_PAY_TYPE("ODSH0014", "error.orderSheet.invalidPgOrPayType"),
RENTAL_PRODUCT_BUY_LIMITED_OVER("ODSH0015", "error.orderSheet.rentalProductLimited"),
INVALID_ORDER_SHEET_NO("O3003", "error.payment.invalidOrderSheetNo"),
COMMUNICATE_FAIL_RESERVE("O3004", "error.payment.communicateFailReserve"),
COMMUNICATE_FAIL_CONFIRM("O3005", "error.payment.communicateFailConfirm"),
CONFIRM_REDIRECT_FAIL("O3006", "error.payment.confirmRedirectFail"),
NOT_FOUND("O3010", "error.payment.notFound"),
RESERVE_ORDER_ERROR("O3015", "error.payment.reserveOrderError"),
NO_ACCOUNT_PAY_CONFIRM_ERROR("O3017", "error.payment.noAccountPayConfirmError"),
INVALID_PRODUCT_PARAM("O3019", "error.payment.invalidProductParam"), // 주문서정보 생성시에 상품정보가 올바르지 않음.
EMPTY_ORDER_TEMP_PASSWORD("O3026", "error.payment.emptyOrderTempPassword"),
REQUIRE_CUSTOMS_ID_NO("O3028", "error.payment.requireCustomsIdNo"),
NOT_PERMIT_MULTIPLE_DELIVERY_TEMPLATE("O3030", "error.payment.notPermitMultipleDeliveryTemplate"),
GUEST_USE_COUPON_ERROR("O3032", "error.payment.guestUseCouponError"),
INVALID_PRODUCT_COUPON_PARAM("O3035", "error.payment.invalidProductCouponParam"),
GUEST_USE_SUB_PAYMENT("O3036", "error.payment.guestUseSubPayamt"),
PAY_AMT_VERIFICATION_ERROR("O3038", "error.payment.payAmtVerificationError"),
DUPLICATED_REQUEST("O3039", "error.payment.duplicatedRequest"),
EMPTY_ORDERER_NAME("O3050", "error.payment.emptyOrdererName"),
EMPTY_ORDERER_CONTACT("O3051", "error.payment.emptyOrdererContact"),
EMPTY_ORDERER_EMAIL("O3052", "error.payment.emptyOrdererEmail"),
ADMIN_CONFIRM_ONLY_ACCOUNT("O3061", "error.payment.adminConfirmOnlyAccount"),
EXCESS_ACCUMULATION("03062", "error.payment.excessAccumulation"),
LOWER_ACCUMULATION_DETAIL("O3064", "error.payment.lowerAccumulationDetail"),
EMPTY_ORDER_NOS("O3065", "error.payment.emptyOrderNos"),
NOT_FOUND_ADDRESS("O3066", "error.payment.notFoundAddress"),
NO_ACCUMULATION("O3067", "error.payment.noAccumulation"),
FAIL_CONFIRM("O3068", "error.payment.failConfirm"),
REQUIRE_ACCOUNT_INFO("O8001", "error.payment.requireAccountInfo"),

NOT_FOUND_MEMBER("10001", "error.payment.notFoundMember"),
NEED_CERTIFIED("10002", "error.payment.needCertified"),
NEED_PAYMENT_KEY("10003", "error.payment.needPaymentKey"),
ESCROW_MUST_HAVE_ONE_DELIVERY("10004", "error.payment.escrowMustHaveOneDelivery"),
NOT_FOUND_CASH_RECEIPT_PG("10005", "error.payment.notFoundCashReceiptPg"),
NOT_FOUND_CASH_RECEIPT_REISSUE("10006", "error.payment.notFoundCashReceiptReissue"),
NOT_FOUND_CASH_RECEIPT_REISSUE_PURPOSE_TPYE("10007", "error.payment.notFoundCashReceiptReissuePurposeType"),
NOT_FOUND_CASH_RECEIPT_REISSUE_KEY("10008", "error.payment.notFoundCashReceiptReissueKey"),
INVALID_CASH_RECEIPT_CANCEL_AMOUNT("10009", "error.payment.invalidCashReceiptCancelAmt"),
NOT_ACTIVE_MEMBER("10010", "error.payment.notActiveMember"),
ESCROW_REQUIRE_DELIVERY("10011", "error.payment.escrowRequireDelivery"),
```

{% endcode %}

***

&#x20;   2-2. 에러 메시지

{% code overflow="wrap" %}

```java
error.orderSheet.notFound=주문서 {0} 가 존재하지 않습니다.
error.orderSheet.invalidParameterProduct=주문서에 담긴 상품 정보가 올바르지 않습니다.
error.orderSheet.invalidParameterProductCoupon=쿠폰정보가 올바르지 않습니다.
error.orderSheet.memberHaveToBeCertified=인증이 먼저 진행되어야 합니다
error.orderSheet.expiredOrderSheet=주문서의 유효기간이 만료하여 결제를 진행할 수 없습니다. 다시 주문해 주세요.
error.orderSheet.notFoundBrand=브랜드{0} 정보를 찾을 수 없습니다.
error.orderSheet.notFoundDeliveryProduct=배송그룹 정보에서 상품{0}을 찾을 수 없습니다.
error.orderSheet.notFoundStock=상품{0} 재고 정보를 찾을 수 없습니다.
error.orderSheet.invalidOrderSheetId=잘못된 주문서 아이디 {0} 입니다.
error.orderSheet.exceededUsableAccumulationAmount=사용 가능한 적립금{0}을 초과 하였습니다.
error.orderSheet.usedMinAccumulationAmount=최소 사용 가능 적립금은 {0} 입니다.
error.orderSheet.notFoundOrderNo=주문서 {0} 의 주문번호를 찾을 수 없습니다.
error.orderSheet.notAllowUseCoupon=비회원 주문서 쿠폰을 사용할 수 없습니다.
error.orderSheet.invalidPgOrPayType=PG사 또는 결제수단이 올바르지 않습니다.
error.payment.invalidOrderSheetNo=주문서번호가 올바르지 않습니다.
error.payment.communicateFailReserve=PG사 결제 예약에 실패하였습니다.
error.payment.communicateFailConfirm=PG사 결제 완료에 실패하였습니다.
error.payment.confirmRedirectFail=[{0}] PG사 결제 실패하였습니다: {1}
error.payment.notFound=결제 데이터를 찾을 수 없습니다.
error.payment.reserveOrderError=결제예약에 실패하였습니다.
error.payment.noAccountPayConfirmError=주문예약 정보가 올바르지 않습니다.
error.payment.invalidProductParam=상품정보가 올바르지 않습니다.
error.payment.emptyOrderTempPassword=비회원 주문은 주문임시암호가 필수 입니다.
error.payment.requireCustomsIdNo=해외 직배송 상품 구매 시 개인통관고유부호는 필수로 입력해야 합니다.
error.payment.notPermitMultipleDeliveryTemplate=동일한 배송 설정이 세팅된 상품만 같이 배송될 수 있습니다.
error.payment.onlyAdditionalProductError=추가상품만 주문 할 수 없습니다.
error.payment.emptyOrdererContact=비회원 주문은 핸드폰 번호가 필수 입니다.
error.payment.emptyOrdererEmail=비회원 주문은 이메일 주소가 필수 입니다.
error.payment.adminConfirmOnlyAccount=가상계좌는 수동 입금확인이 불가합니다. PG를 통해 처리해 주세요. 
error.payment.excessAccumulation=사용 적립금이 사용가능한 적립금보다 큽니다.
error.payment.noAccumulation=적립금 사용이 가능한 상품이 없습니다.
error.payment.lowerAccumulationDetail={0} {1}{2} 이상 사용 가능합니다.
error.payment.emptyOrdererName=비회원 주문은 주문자 이름이 필수 입니다.
error.payment.guestUseCouponError=비회원은 쿠폰을 사용 할 수 없습니다.
error.payment.invalidProductCouponParam=쿠폰정보가 올바르지 않습니다.
error.payment.guestUseSubPayamt=비회원은 적립금을 사용 할 수 없습니다.
error.payment.payAmtVerificationError=상품 가격 또는 할인금액이 변경되었습니다. 다시 확인하시고 구매해 주세요.
error.payment.duplicatedRequest=중복된 결제 요청입니다.
error.payment.notFoundMember=회원이 존재하지 않습니다.
error.payment.needCertified=본인인증이 필요합니다.
error.payment.needPaymentKey={0} 결제키 정보가 필요합니다.
error.payment.escrowMustHaveOneDelivery=에스크로 결제는 배송 그룹이 여러 개일 경우 사용할 수 없습니다.
error.payment.escrowRequireDelivery=배송안함 주문은 에스크로 결제가 불가능 합니다.
error.payment.emptyOrderNos=orderNos가 한개 이상 포함되어야 합니다.
error.payment.notFoundAddress=주소지를 찾지 못했습니다.
error.payment.notFoundCashReceiptPg=현금영수증 발급이 가능한 PG사 설정이 없습니다.
error.payment.notFoundCashReceiptReissue=현금영수증 재발급에 필요한 기존 현금영수증 정보가 없습니다.
error.payment.notFoundCashReceiptReissuePurposeType=현금영수증 재발급에 필요한 기존 현금영수증 증빙타입이 없습니다.
error.payment.notFoundCashReceiptReissueKey=현금영수증 재발급에 필요한 기존 현금영수증 발급값이 없습니다.
error.payment.invalidCashReceiptCancelAmt=현금영수증 취소 금액이 유효하지 않습니다.
error.payment.requireAccountInfo=무통장 입금 시 거래할 계좌의 정보(은행코드, 계좌번호, 예금주명)가 필요합니다.
error.payment.tossPaymentsCallbackError=입금 완료 후 처리에 실패하였습니다.
error.payment.tossPaymentsEscrowCallbackError=에스크로 입금 완료 후 처리에 실패하였습니다.
error.payment.notActiveMember=이용불가 상태의 회원입니다.
error.payment.tossPaymentsRedirectCallbackError={0}
error.payment.failConfirm=결제 완료에 실패하였습니다.
```

{% endcode %}

***

3. **결제 시 발생하는 에러메시지 커스터마이징 방법**

step 1) 아래 코드 참고하여 failCallback 함수 작성

step 2) 쇼핑몰에서 결제시 NCPPay.reservation() 함수의 3번째 인자에 failCallback, 4번째 인자(disableDefaultAlert)에 true 전달

{% code overflow="wrap" %}

```java
const failCallback = function (response) {
  switch (response.status) {
    case 400:
      switch (response.code) {
        case 'PPVE0001':
          alert('구매불가한 옵션이 포함되어 있습니다.');
          throw new Error('구매불가한 옵션이 포함되어 있습니다.');
        case 'PPVE0002':
          alert('장바구니 담기 불가능한 상품입니다.');
          throw new Error('장바구니 담기 불가능한 상품입니다.');
        case 'PPVE0011':
          alert('선택하신 옵션의 재고가 부족합니다. 수량을 조절해주세요.');
          throw new Error('선택하신 옵션의 재고가 부족합니다. 수량을 조절해주세요.');
        default:
          alert(response.message);
          throw new Error(response.message);
      }
    case 401:
      alert('로그인이 필요합니다.');
      throw new Error('로그인이 필요합니다.');
    case 405:
      alert('METHOD_NOT_ALLOWED');
      throw new Error('METHOD_NOT_ALLOWED');
    case 403:
      console.log(`code: ${response.code}`);
      console.log(`data: ${response.data}`);
      console.log(`message: ${response.message}`);
      throw new Error(response.message);
    default:
      alert('서버접속이 원할하지 않습니다. 잠시 후 재시도 해주세요.');
      throw new Error('서버접속이 원할하지 않습니다. 잠시 후 재시도 해주세요.');
  }
};

window.NCPPay.reservation(requestBody, null, failCallback, true);
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://workspace-help.nhn-commerce.com/contents/faq/error_ordersheet.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
