Skip to Content

Refunds

주문 환불

전액 또는 부분 환불을 요청해요.
Idempotency-Key를 24시간 기억하며 같은 키에 다른 본문을 보내면 409 응답을 돌려줘요.

권한 refunds:write·Idempotency-Key 헤더 필수

알아둘 점

  • 단건 주문을 전액 환불하면 그 주문의 라이선스가 revoked가 돼요.
  • 구독은 가장 최근 결제 주문(최초 또는 갱신)을 전액 환불할 때만 끝나고, 라이선스가 revoked가 되며 subscription.ended(endReason: refunded)가 와요. 지난 회차 주문이나 차액 결제 주문을 환불해도 구독과 라이선스는 그대로예요.
  • test 주문의 환불 동작은 test 모드에서 확인해요.

경로 파라미터

idstring필수

환불할 주문 식별자예요.

예 ord_123

헤더

Idempotency-Keystring필수

POST 요청의 중복 실행을 막는 키예요. 24시간 보관하며 본문이 다른 요청에는 같은 키를 쓸 수 없어요.

제약 1~255자

요청 본문

amountnumber

부분 환불 금액을 원 단위로 지정해요.

제약 1 이상·예 5000
reasonstring

환불 사유예요.

예 고객 요청

응답

성공하면 HTTP 201과 주문 객체를 돌려줘요.

오류

코드HTTP의미
ORDER_NOT_FOUND404주문이 없거나 키의 상품 범위 밖이에요.
REFUND_NOT_PAID409주문 상태가 결제 완료가 아니에요.
REFUND_REQUEST_PENDING409활성 환불 요청이 있어 주문을 환불할 수 없어요.
REFUND_SETTLED409정산 회차에 포함된 주문은 환불할 수 없어요.
REFUND_NONE_LEFT409남은 환불 가능 금액이 없어요.
REFUND_AMOUNT_INVALID400환불 금액은 0보다 커야 해요.
REFUND_EXCEEDS400환불 금액이 남은 환불 가능액보다 커요.
REFUND_IN_PROGRESS409이 주문과 관련한 환불이 처리 중이에요.
PG_REFUND_FAILED502결제 대행사가 환불 요청을 처리하지 못했어요.
PG_REFUND_AMBIGUOUS502결제 대행사의 환불 결과를 확인하지 못했어요. 실제 환불됐을 수 있으니 상태를 확인한 뒤 다시 처리해 주세요.

표에 없는 공통 오류(인증·권한, 호출 한도, 입력 검증, 멱등 키, 서버 오류)는 에러 코드에서 확인해요.

환불 요청 목록

API 키의 test 또는 live 환경에 속한 환불 요청을 페이지 단위로 조회해요.

권한 refunds:read

알아둘 점

  • 구매자는 단건 주문 환불을 https://payri.kr/orders/lookup(이메일·주문번호)에서 신청하고, 구독은 포털의 즉시 해지로 환불해요.
  • requested, on_hold, processing은 처리 중인 상태이며, 주문·구독마다 하나만 처리 중일 수 있어요.
  • 보류 중에는 자동 승인이 멈춰요.

쿼리 파라미터

pagenumber

조회할 페이지 번호예요.

제약 1 이상·예 1
limitnumber

페이지마다 조회할 항목 수예요.

제약 1~100·예 20
statusstring

환불 요청 상태로 결과를 좁혀요.

허용 값 requested, on_hold, processing, approved, rejected, withdrawn
orderIdstring

주문 식별자로 환불 요청을 좁혀요.

예 ord_123

응답

성공하면 HTTP 200과 환불 요청 객체 목록을 돌려줘요.
형식은 { data, total, page, limit }예요.

오류

표에 없는 공통 오류(인증·권한, 호출 한도, 입력 검증, 서버 오류)는 에러 코드에서 확인해요.

환불 요청 단건

환불 요청 식별자로 요청, 결정과 환불 계산 정보를 조회해요.

권한 refunds:read

경로 파라미터

idstring필수

조회할 환불 요청 식별자예요.

예 rfr_123

응답

성공하면 HTTP 200과 환불 요청 객체를 돌려줘요.

오류

코드HTTP의미
REFUND_REQUEST_NOT_FOUND404환불 요청이 없거나 키의 상품 범위 밖이에요.

표에 없는 공통 오류(인증·권한, 호출 한도, 서버 오류)는 에러 코드에서 확인해요.

환불 요청 승인

환불 요청을 승인해요.
Idempotency-Key는 24시간 보관해요.

권한 refunds:write·Idempotency-Key 헤더 필수

알아둘 점

  • 요청 금액과 다르게 승인하려면 계산 안내 확인값 acknowledgeMismatch: true가 필요해요.
  • statutory: true인 요청은 감액 승인·거절·보류할 수 없어요.
  • 환불 완료 이벤트는 웹훅 이벤트에서 확인해요.

경로 파라미터

idstring필수

승인할 환불 요청 식별자예요.

예 rfr_123

헤더

Idempotency-Keystring필수

POST 요청의 중복 실행을 막는 키예요. 24시간 보관하며 본문이 다른 요청에는 같은 키를 쓸 수 없어요.

제약 1~255자

요청 본문

acknowledgeMismatchboolean

환불 계산 안내를 확인했는지 표시해요.

예 true
amountnumber

승인할 환불 금액을 원 단위로 지정해요.

제약 1 이상·예 5000

응답

성공하면 HTTP 201과 환불 요청 처리 결과를 돌려줘요.

오류

코드HTTP의미
REFUND_REQUEST_NOT_FOUND404환불 요청이 없거나 키의 상품 범위 밖이에요.
REFUND_REQUEST_NOT_ACTIONABLE409환불 요청의 현재 상태에서는 승인·거절·보류할 수 없어요.
REFUND_STATUTORY_LOCKED409법정 청약철회 기간에는 현재 작업자의 처리가 제한돼요.
REFUND_AMOUNT_INVALID400환불 금액은 0보다 커야 해요.
REFUND_AMOUNT_EXCEEDS400요청한 환불 금액이 현재 환불 가능액보다 커요.
REFUND_AMOUNT_MISMATCH409승인 금액이 요청 금액과 달라요. 금액을 확인하고 차이를 명시적으로 승인해 주세요.
ORDER_NOT_FOUND404주문이 없거나 키의 상품 범위 밖이에요.
REFUND_NOT_PAID409주문 상태가 결제 완료가 아니에요.
REFUND_SETTLED409정산 회차에 포함된 주문은 환불할 수 없어요.
REFUND_NONE_LEFT409남은 환불 가능 금액이 없어요.
REFUND_EXCEEDS400환불 금액이 남은 환불 가능액보다 커요.
REFUND_IN_PROGRESS409이 주문과 관련한 환불이 처리 중이에요.
PG_REFUND_FAILED502결제 대행사가 환불 요청을 처리하지 못했어요.
PG_REFUND_AMBIGUOUS502결제 대행사의 환불 결과를 확인하지 못했어요. 실제 환불됐을 수 있으니 상태를 확인한 뒤 다시 처리해 주세요.
SUBSCRIPTION_REFUND_AMOUNT_INVALID400승인한 구독 환불 금액이 유효하지 않아요.
SUBSCRIPTION_REFUND_NONE_LEFT409구독 주문에 남은 환불 가능 금액이 없어요.
SUBSCRIPTION_REFUND_SETTLED409즉시 해지 환불 대상 주문이 정산 회차에 포함됐어요.

표에 없는 공통 오류(인증·권한, 호출 한도, 입력 검증, 멱등 키, 서버 오류)는 에러 코드에서 확인해요.

환불 요청 거절

환불 요청을 거절하고 사유를 기록해요.
Idempotency-Key는 24시간 보관해요.

권한 refunds:write·Idempotency-Key 헤더 필수

경로 파라미터

idstring필수

거절할 환불 요청 식별자예요.

예 rfr_123

헤더

Idempotency-Keystring필수

POST 요청의 중복 실행을 막는 키예요. 24시간 보관하며 본문이 다른 요청에는 같은 키를 쓸 수 없어요.

제약 1~255자

요청 본문

reasonstring필수

환불 요청을 거절하는 이유예요.

제약 최소 1자·예 환불 정책상 처리할 수 없어요.

응답

성공하면 HTTP 201과 환불 요청 처리 결과를 돌려줘요.

오류

코드HTTP의미
REFUND_REQUEST_NOT_FOUND404환불 요청이 없거나 키의 상품 범위 밖이에요.
REFUND_REQUEST_NOT_ACTIONABLE409환불 요청의 현재 상태에서는 승인·거절·보류할 수 없어요.
REFUND_STATUTORY_LOCKED409법정 청약철회 기간에는 현재 작업자의 처리가 제한돼요.
REFUND_REASON_REQUIRED400환불 요청을 보류하거나 거절하는 사유를 입력해 주세요.

표에 없는 공통 오류(인증·권한, 호출 한도, 입력 검증, 멱등 키, 서버 오류)는 에러 코드에서 확인해요.

환불 요청 보류

추가 확인이 필요한 환불 요청을 보류해요.
Idempotency-Key는 24시간 보관해요.

권한 refunds:write·Idempotency-Key 헤더 필수

경로 파라미터

idstring필수

보류할 환불 요청 식별자예요.

예 rfr_123

헤더

Idempotency-Keystring필수

POST 요청의 중복 실행을 막는 키예요. 24시간 보관하며 본문이 다른 요청에는 같은 키를 쓸 수 없어요.

제약 1~255자

요청 본문

reasonstring필수

보류 사유예요.

제약 최소 1자·예 추가 확인이 필요해요.
typestring필수

보류 유형이에요.

허용 값 in_review, disputed

응답

성공하면 HTTP 201과 환불 요청 처리 결과를 돌려줘요.

오류

코드HTTP의미
REFUND_REQUEST_NOT_FOUND404환불 요청이 없거나 키의 상품 범위 밖이에요.
REFUND_REQUEST_NOT_ACTIONABLE409환불 요청의 현재 상태에서는 승인·거절·보류할 수 없어요.
REFUND_STATUTORY_LOCKED409법정 청약철회 기간에는 현재 작업자의 처리가 제한돼요.
REFUND_REASON_REQUIRED400환불 요청을 보류하거나 거절하는 사유를 입력해 주세요.

표에 없는 공통 오류(인증·권한, 호출 한도, 입력 검증, 멱등 키, 서버 오류)는 에러 코드에서 확인해요.

환불 요청 객체

필드

approvedAmountnumbernull 가능

승인한 환불 금액을 원 단위로 알려줘요.

autoApproveAtstringnull 가능

요청 후 72시간 안에 결정되지 않으면 자동 승인되는 시각이에요.

breakdownobject

주문별 환불 금액 내역이에요.

하위 필드 1개
ordersarray of object

환불 대상 주문별 금액이에요.

하위 필드 3개
amountnumber

대상 주문의 환불 금액이에요.

currencystring

금액 통화를 알려줘요.

허용 값 KRW
orderIdstring

환불 대상 주문 식별자예요.

buyerEmailstring

구매자 이메일 주소예요.

buyerReasonstringnull 가능

구매자가 남긴 환불 사유예요.

createdAtstring

환불 요청이 생성된 시각이에요.

currencystring

금액 통화를 알려줘요.

허용 값 KRW
decidedAtstringnull 가능

요청이 결정된 시각이에요.

decidedBystringnull 가능

요청을 결정한 사용자 식별자예요.

holdobjectnull 가능

보류 처리 정보예요.

하위 필드 3개
heldAtstring

보류 처리 시각이에요.

reasonstringnull 가능

보류 사유예요.

typestring

보류 유형이에요.

허용 값 in_review, disputed
idstring

환불 요청 식별자예요.

kindstring

환불 요청 유형이에요.

허용 값 order, subscription_cancel
modestring

test 또는 live 환불 환경을 알려줘요.

허용 값 live, test
orderIdstring

환불 요청의 주문 식별자예요.

productIdstring

환불 요청의 상품 식별자예요.

rejectReasonstringnull 가능

거절 사유예요.

requestedAmountnumber

요청한 환불 금액을 원 단위로 알려줘요.

statusstring

환불 요청 상태예요.

허용 값 requested, on_hold, processing, approved, rejected, withdrawn
statutoryboolean

법정 청약 철회 요청인지 알려줘요.

subscriptionIdstringnull 가능

환불 요청의 구독 식별자예요.

updatedAtstring

환불 요청이 수정된 시각이에요.

refundableAmountnumber

현재 환불 가능한 금액을 원 단위로 알려줘요.

warningsarray of object

환불 처리 전에 확인할 안내 목록이에요.

하위 필드 2개
codestring

환불 안내를 구분하는 코드예요.

허용 값 STATUTORY_LOCKED, SUBSCRIPTION_CANCEL_REFUND_RIGHT, POLICY_DECISION
messagestring

환불 처리 시 참고할 안내예요.

환불 요청 처리 결과

필드

refundRequestobjectnull 가능

환불 요청 처리 후의 정보예요.

하위 필드 23개
approvedAmountnumbernull 가능

승인한 환불 금액을 원 단위로 알려줘요.

autoApproveAtstringnull 가능

요청 후 72시간 안에 결정되지 않으면 자동 승인되는 시각이에요.

breakdownobject

주문별 환불 금액 내역이에요.

하위 필드 1개
ordersarray of object

환불 대상 주문별 금액이에요.

하위 필드 3개
amountnumber

대상 주문의 환불 금액이에요.

currencystring

금액 통화를 알려줘요.

허용 값 KRW
orderIdstring

환불 대상 주문 식별자예요.

buyerEmailstring

구매자 이메일 주소예요.

buyerReasonstringnull 가능

구매자가 남긴 환불 사유예요.

createdAtstring

환불 요청이 생성된 시각이에요.

currencystring

금액 통화를 알려줘요.

허용 값 KRW
decidedAtstringnull 가능

요청이 결정된 시각이에요.

decidedBystringnull 가능

요청을 결정한 사용자 식별자예요.

holdobjectnull 가능

보류 처리 정보예요.

하위 필드 3개
heldAtstring

보류 처리 시각이에요.

reasonstringnull 가능

보류 사유예요.

typestring

보류 유형이에요.

허용 값 in_review, disputed
idstring

환불 요청 식별자예요.

kindstring

환불 요청 유형이에요.

허용 값 order, subscription_cancel
modestring

test 또는 live 환불 환경을 알려줘요.

허용 값 live, test
orderIdstring

환불 요청의 주문 식별자예요.

productIdstring

환불 요청의 상품 식별자예요.

rejectReasonstringnull 가능

거절 사유예요.

requestedAmountnumber

요청한 환불 금액을 원 단위로 알려줘요.

statusstring

환불 요청 상태예요.

허용 값 requested, on_hold, processing, approved, rejected, withdrawn
statutoryboolean

법정 청약 철회 요청인지 알려줘요.

subscriptionIdstringnull 가능

환불 요청의 구독 식별자예요.

updatedAtstring

환불 요청이 수정된 시각이에요.

refundableAmountnumber

현재 환불 가능한 금액을 원 단위로 알려줘요.

warningsarray of object

환불 처리 전에 확인할 안내 목록이에요.

하위 필드 2개
codestring

환불 안내를 구분하는 코드예요.

허용 값 STATUTORY_LOCKED, SUBSCRIPTION_CANCEL_REFUND_RIGHT, POLICY_DECISION
messagestring

환불 처리 시 참고할 안내예요.

warningsarray of object

처리 결과와 함께 전달하는 안내 목록이에요.

하위 필드 2개
codestring

환불 안내를 구분하는 코드예요.

허용 값 STATUTORY_LOCKED, SUBSCRIPTION_CANCEL_REFUND_RIGHT, POLICY_DECISION
messagestring

환불 처리 시 참고할 안내예요.

Last updated on