서버 연동

에러 코드

point3가 반환하는 코드를 출처별로 정리했습니다. 처리 기준은 HTTP 상태 코드와 응답 본문의 코드를 함께 보고 판단하세요. 사용자 안내 문구는 message 원문 대신 코드별로 가맹점이 정한 문구를 사용하는 것을 권장합니다.

결과가 불확실하면 성공·실패로 추정하지 마세요

5xx, 타임아웃, 네트워크 오류, 응답 유실은 결과가 확정되지 않은 상태입니다. 같은 요청을 무조건 반복하거나 실패로 처리하지 말고 상태 조회 API로 확인하세요.

HTTP 상태 코드 공통 기준

상태 코드의미재시도처리
200정상 응답-응답 본문의 status로 결과 판단
202처리 중조회잠시 기다렸다가 상태 조회
400요청 형식 오류안 함요청값 수정
401인증 실패안 함API 키 확인
404리소스 없음안 함sessionId 확인
409현재 상태에서 처리 불가 (결제 취소 API)코드별본문의 result.code 확인
422요청 거절안 함결제 승인: 승인 기한 만료. 결제 취소: 거절로 처리하고 코드 기록
500서버 오류조회결과 미확정. 상태 조회로 확인
503일시 사용 불가조회결제 세션 API: error.eob가 있으면 EOB 점검. 결제 취소 API: 결과 미확정이므로 상태 조회

결제 세션·결제 승인 API

결제 세션 API와 결제 승인 API의 오류 응답은 error.type과 error.code를 포함합니다.

JSON오류 응답 형식
{ "error": { "type": "authenticationError", "code": "authenticationRequired", "message": "인증에 실패했습니다." } }
HTTPerror.typeerror.code처리
400invalidRequestErrorinvalidRequest요청 형식과 필수 필드 확인
401authenticationErrorauthenticationRequiredAuthorization 헤더와 API 키 확인
404notFoundErrorresourceMissingsessionId 확인
422invalidRequestErrorpaymentCaptureExpired결제 승인 기한 만료. 새 결제 세션으로 다시 시작
500apiErrorinternalError결과 미확정. 결제 세션 조회
503serviceUnavailableErrortemporarilyUnavailableerror.eob가 있으면 endsAt 이후 재요청, 없으면 잠시 후 결제 세션 조회

error.eob는 결제 세션 API에서만 반환되며 startsAt, endsAt, timeZone을 포함합니다. EOB 점검 중 응답 예시는 EOB 점검 시간을 참고하세요.

결제 승인 결과 코드

결제 승인 API가 200으로 응답하면 outcome.code로 결과를 구분합니다.

statusoutcome.typeoutcome.code의미처리
capturedsucceededPAYMENT_CAPTURED결제 성공주문 완료
faileddeclinedPAYMENT_METHOD_DECLINED결제 수단 승인 거절다른 결제 수단 안내
failedpaymentMethodUnavailablePAYMENT_METHOD_UNAVAILABLE결제 수단 사용 불가다른 결제 수단 안내
failedserviceUnavailablePAYMENT_SERVICE_UNAVAILABLE_HOURS은행·기관 점검 또는 운영시간 외다른 계좌 선택 또는 점검 종료 후 새 결제
failedrejectedPAYMENT_CAPTURE_REJECTED승인 요청 거절실패 안내
failedfailedPAYMENT_METHOD_LIMIT_EXCEEDED결제 수단의 이체 한도 초과다른 결제 수단 또는 금액 안내
failedfailedPAYMENT_CAPTURE_ALREADY_FAILED이미 실패한 결제실패로 처리하고 새 결제

failed의 outcome.message에는 은행이 반환한 사유가 담길 수 있습니다. 화면 분기는 outcome.code로 하세요.

202 응답은 PAYMENT_CAPTURE_PROCESSING이며, 잠시 기다렸다가 결제 세션을 조회합니다.

결제 취소 API

결제 취소 API의 오류 응답은 result.code를 포함합니다.

JSON오류 응답 형식
{ "status": 409, "timestamp": "2026-08-21T00:00:00.000Z", "result": { "code": "REFUND_DUPLICATE_REQUEST", "message": "동일한 Idempotency-Key로 요청이 이미 접수되었습니다" } }

409 응답

result.code의미처리
REFUND_TEMPORARY_UNAVAILABLE외부 처리 결과 미확정. 일시 장애 시에는 503으로 반환원래 키와 응답 식별값을 보존하고 상태 조회 후 처리 중인 항목만 재개
REFUND_DUPLICATE_REQUEST동일 Idempotency-Key를 24시간 안에 재사용상태 조회로 기존 요청 결과를 확인하고 새 취소를 만들지 않음
REFUND_ACTIVE_REQUEST_EXISTS현재 처리 중인 취소 존재새 취소를 만들지 않고 상태 조회 후 기존 처리를 재개
REFUND_NOT_IN_REFUNDABLE_STATE취소 가능한 상태가 아님결제·취소 상태를 확인하고 요청 종료
EOB_WINDOW_BLOCKED23:30 이상 00:30 미만(KST) 요청00:30 이후 새 취소 요청

그 외 오류 코드

HTTPresult.code의미
400REFUND_VALIDATION_FAILED요청 형식 오류
400NON_POSITIVE_REFUND_AMOUNT취소 금액이 0 이하
400REFUND_TAX_BREAKDOWN_INVALID면세 금액·부가세 구성이 올바르지 않음
404REFUND_NOT_FOUND취소할 결제를 찾을 수 없음
422AMOUNT_EXCEEDS_REFUNDABLE취소 금액이 취소 가능 금액을 초과
422TAX_FREE_AMOUNT_EXCEEDS_REFUNDABLE면세 금액이 취소 가능 면세 금액을 초과
422VAT_EXCEEDS_REFUNDABLE부가세가 취소 가능 부가세를 초과

취소 실패 코드

취소 상태 조회 결과에서 failed인 취소 항목은 실패 사유 코드를 포함합니다.

코드의미
refundMethodDeclined환불 수단 승인 거절
refundMethodUnavailable환불 수단 사용 불가
refundServiceUnavailable은행 서비스 운영시간 외
refundRejected환불 요청 거절
refundFailed환불을 완료할 수 없음

취소 처리 흐름은 결제 취소를 참고하세요.

위임 인증 API

위임 인증 생성 API의 오류 응답은 result.code를 포함합니다. 어떤 오류든 위임 인증 없이 결제창을 열면 결제를 계속할 수 있습니다.

HTTPresult.code처리
400HTTP_ERRORpayer_id 형식과 추가 필드 확인
401HTTP_ERRORAuthorization 헤더와 API 키 확인
404PAYER_NOT_FOUND저장된 payerId를 사용할 수 없음. 위임 인증 없이 결제창을 열고, 결제 후 새로 받은 payerId 저장
503일시적 장애. 위임 인증 없이 결제창 열기

자세한 내용은 위임 인증 생성을 참고하세요.

결제창 코드

JavaScript SDK 결제

failUrl의 code 쿼리 파라미터로 전달됩니다. 결제 승인 API를 호출하지 않습니다.

코드의미안내 문구 예시
PAYMENT_WINDOW_CLOSED사용자가 결제창을 닫음결제창이 닫혔습니다.
PAYER_DEACTIVATED구매자 탈퇴 완료탈퇴가 완료되어 결제가 종료되었습니다.
SESSION_EXPIRED결제 세션 만료결제 세션이 만료되었습니다. 결제를 다시 시도해 주세요.
INVALID_SESSION결제 세션 확인 불가결제 세션 정보를 확인할 수 없습니다. 결제를 다시 시작하세요.
PAYMENT_FAILED결제 요청 거절 (예: 금액이 수수료 이하)결제 요청이 거절되었습니다.

JavaScript SDK 등록

failUrl의 code 쿼리 파라미터로 전달됩니다.

코드의미
REGISTRATION_CANCELLED사용자가 등록을 취소함
AUTHENTICATION_EXPIRED인증 만료. 본인인증부터 다시 시작
REGISTRATION_FAILED등록 실패
REGISTRATION_RESULT_UNAVAILABLE등록 결과 확인 불가

SDK 초기화·호출 오류

failUrl로 전달되지 않고 SDK 호출에서 발생하는 오류 객체의 code로 확인합니다. try/catch로 처리하세요.

코드원인
INVALID_CLIENT_KEYclient_id가 client-... 형식이 아님
INVALID_PAYMENT_REQUEST요청값 누락 또는 SDK 호출 순서 오류. 위임 인증의 authorization_url을 가공했거나 등록 전용 위젯에 전달한 경우 포함
PAYMENT_REQUEST_IN_PROGRESS결제나 등록이 진행 중인 상태에서 다시 요청
BROWSER_NOT_READY문서 준비 상태, 보안 컨텍스트 또는 crypto.randomUUID() 미지원 (등록)
마지막 수정: