결제취소 웹훅 문의
안녕하세요!
결제취소 요청 api 호출 후 실제 결제취소 (카드사취소까지 완료) 되는 정확한 시점을 알기 위해
웹훅을 이용하려고 하는데요.
그런데 카드결제건에 대해 결제당일이 아닌 이후에 결제취소를 요청하는 경우
요청을 batch 로 모아두었다가 자정에 한번에 카드사에 요청을 한다고 들었습니다. 맞는지요?
제가 확인하고 싶은 점은
먼저 결제취소요청 api 를 호출하면 그 즉시 웹훅을 통하여 결제 상태가 "CANCELED" 로 통보가 되는지요?
아니면 batch 로 자정에 카드사에 요청 후 실제로 정상 취소가 되었을 경우 이 시점에 "CANCELED" 통보가 되는것인지 정확한 시점이 궁금합니다!
카드사에서 확인 후 "취소 실패" 가 될 수도 있어서 이 부분에 대한 통보는 어떻게 받아야 하는지도 문의 드립니다. (PAYMENT_STATUS_CHANGED 웹훅 순서도에 취소 실패 부분이 없어 여쭙습니다.)
감사합니다!

27 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
웹훅 이벤트 등록해두면, 취소 성공 응답 시 웹훅도 바로 발송됩니다.
취소 응답 드리는 시점이 이미 카드사 취소 성공 응답을 받은 이후에 해당하고,
말씀하신 배치는 카드승인, 카드취소 가 아니라 자정 넘어서 승인매입, 취소매입 에 해당합니다.
카드 매입 관련 상태는 acquireStatus 를 확인하시면 됩니다.
답변 감사드립니다!
카드 승인/카드 취소와 승인매입/취소매입은 무슨 차이인지요? 제가 잘 몰라 여쭙습니다!
그럼 카드 결제당일 취소가 아니더라도 결제취소api 호출을 하는 즉시 => 실제 카드사 취소 완료 => 웹훅으로 CANCELED 통보가 수 초 내로 진행이 되는건지요?
승인 매입된 결제건에 대해서도 마찬가지로
결제취소 api 호출 -> 실제카드사 취소완료 -> 웹훅 CANCELED 통보
위 프로세스가 즉시 수 초내로 이루어지는것이 맞나요?
위 과정에서 카드사에서 카드 만료, 일시적 정지 상태 등 이유로 취소를 반려한다면 이 또한 제가 웹훅으로 통보를 받을 수 있는지요?
마지막으로 웹훅 CANCELED 통보를 받은 후 카드사에서 이미 취소처리한 결제건에대해 "취소 실패" 또는 "취소 반려" 로 상태값을 재변경하는 경우도 있는지 궁금합니다!
없습니다 .
답변 감사드립니다. "취소 실패" "취소 반려" 등으로 재변경 없다는 말씀이시지요? 그리고 길게 질문드려 죄송하지만 위에 질문도 확인 부탁드립니다!
그럼 카드 결제당일 취소가 아니더라도 결제취소api 호출을 하는 즉시 => 실제 카드사 취소 완료 => 웹훅으로 CANCELED 통보가 수 초 내로 진행이 되는건지요? 승인 매입된 결제건에 대해서도 마찬가지로 결제취소 api 호출 -> 실제카드사 취소완료 -> 웹훅 CANCELED 통보 위 프로세스가 즉시 수 초내로 이루어지는것이 맞나요?모두 네입니다.
위 과정에서 카드사에서 카드 만료, 일시적 정지 상태 등 이유로 취소를 반려한다면 이 또한 제가 웹훅으로 통보를 받을 수 있는지요?취소 실패가 뜨기 때문에 웹흑이 안나갑니다.
감사합니다!! 그럼 취소 실패일때는 저희가 고객에게 환불 실패 안내를 드려야 하는데 어떻게 취소실패를 감지할 수 있을까요?
혹시 웹훅까지 기다리지 않고 결제취소 API 호출 후 응답받는 즉시 카드사 취소 완료되었는지 알 수 있는 구조일까요?
저희 대표님이 Toss 기술지원팀과 메일로 소통했을때는
"카드사에서는 매입으로 처리된 결제건에 대해선 이를 결제 취소하기 위해 환불 요청 접수 후 다음날 심사를 합니다. 이 때 만약 결제를 했던 카드의 유효성에 문제가 생긴다면 (예컨대, 카드가 만료되었거나, 카드가 일시 정지 되었거나, 카드가 해지된 경우), 환불이 불가능하기 때문에 환불 반려를 결정하면서 Toss 측 상점관리자에는 '취소 실패'라는 결제상태가 변경된다고 합니다 (즉, 원래는 Toss에서 '취소'로 처리했으나 매입 후 취소건에 대해선 이런 결제카드의 유효성에 문제가 생길 경우 드물게 '취소 실패'로 변경되어 처리될 수도 있다고 함)."
이렇게 안내 받으셨다고 하는데
내용이 좀 길지만 저희에게 중요한 사안이라 한번 확인해주실 수 있으실까요?
저희 대표님이 안내받으신 내용과 제가 이해하는 내용이 조금 달라 확실히 하고자 재문의 드립니다.
1. "매입처리된 결제건"을 결제취소 api 호출 "즉시" "실제로 카드사 결제취소" 까지 승인하는하고 api 응답을 주는지?
2. 아니면 저희 대표님이 안내받으신대로 "다음날 심사" 를 한 후 상태값이 변경되는지?
위 질문이 핵심 질문 입니다. 감사합니다!
참고로 어떤 상황이냐면 고객이 카드결제 이후 몇일 후에 환불을 요청했을때 처리해야 하는 상황입니다! 고객이 환불요청 후 저희가 어느시점에 환불완료 안내 또는 환불 실패 안내를 해드려야 하는지 정확한 시점이 필요해 문의 드리는것입니다.
1. 네 맞습니다. 즉시 실패를 줍니다.
2. 해당 케이스는 취소매입이 실패하는 건이라 별도로 email 로 연락을 받으실 거라서 실패했다는 걸 아실수 있을거에요. 다만 해당 케이스는 거의 없을겁니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
감사합니다! 그럼 취소 응답을 받아서 고객에게 환불 완료 안내를 드렸는데 취소매입 실패로 인해 나중에 해당메일 받는 경우도 있다는걸까요? 케이스가 거의 없다해도 예외처리가 필요하여 여쭙습니다!
네 해당 케이스가 있을수는 있습니다.
네 감사합니다 그렇다면 저희는 취소매입까지 안전하게 확인된 후 고객에게 환불안내 메일을 드리고자 하는데 그럼 취소 api 호출 후 자정 취소매입 배치 기다렸다가 이후 오전시간에 결제 상태체크하는 api 호출하여 최종 취소매입처리 확인하는 방식이 제일 최종적이고 안전한지요? 그리고 결제상태체크 api 호출시 상태값이 취소 실패라면 실패사유도 알 수 있는지 궁금합니다!
아 그리고 이메일로 취소매입에 실패 알람이 간다고 하셨는데 이건 결제를 한 고객의 이메일로 카드사에서 메일을 주신다는 말씀이 맞는지요?
취소 요청 응답을 받으시면 그냥 취소 완료 되었다고 봐주시면 됩니다.
취소 응답 자체가 카드사와 통신 이후에 응답 내역을 드리는 것입니다.
이후에 취소 매입이 들어갈 때 정말 극히 드물게 취소매입이 반송되는 경우가 있지만 해당 경우에는 앞서 말씀드린바와 같이 메일을 드리고,
이는 사용자에게 메일을 드리는게 아니라 정산팀에서 가맹점 담당자에게 메일을 드리게 될겁니다.
취소 API 요청 응답에 status 에 CANCELED 로 내려갈꺼라 취소 성공으로 확인하시면 됩니다. PAYMENT_STATUS_CHANGED 웹훅을 등록하셨다면 취소 웹훅도 수신하실거고요.
취소 요청에 실패하면 API 응답에 실페가 되는거라 웹훅은 안나갑니다. 처음 첨부해주신 웹훅 상태 이미지 보시면 상태가 바뀐게 아니니까요.
그리고 취소 이후에 매입취소 상태까지 꼭 확인하셔야 한다면, 나중에 결제조회 API 호출하셔서 acquireStatus 로 매입취소까지 확인하시면 됩니다.
자세한 답변 감사드립니다!! 네 저희가 환불성공으로 고객에게 안내드렸다가 극히 드물기는 하지만 취소매입이 이후 실패하는 경우 결과 번복하는 메일드릴일이 없도록 하고 싶어서 자세히 여쭙게 되었습니다.
그렇다면 취소 api 요청 응답에 CANCELED 가 내려오긴 하지만 아직 취소매입 처리가 안되었으니 고객에게 즉시 환불 안내를 하면 안되겠네요!
실제 카드사 매입취소반송이 발생하게 되면, 그 때 확인하셔도 될겁니다. 취소매입이 왜 반송되었는지는 저희도 카드사에 확인해야만 알 수 있는거라서 그 부분은 고객에게 나중에 카드사 사유로 설명 드리면 될꺼라서요.
카드 취소 성공 응답 받으시면 취소로 설명해주셔도 됩니다.
예로.. 승인매입이 들어갔다고 하더라도 구매자가 실제 바로 청구가 되지는 않으니까요.
취소매입도 동일합니다.
네네 저희가 운영인력이 적어서 매입취소반송을 확인해서 처리하기가 어려울거 같아서 최대한 자동화 하려고 합니다..!
혹시 안전하게 취소매입이 확정될때까지 24시간 기다렸다가 acquireStatus 로 매입취소를 확인하면 될까요?
네 그렇게해주세요..

아! 네네 알겠습니다 꼭 확실하게 처리가 되었을때 고객안내가 필요해서 여쭤보았습니다ㅠ acquireStatus 에 대한 처리는 웹훅으로 받을 수 없는것이지요?
네 없습니다.
네네 자세하게 알려주셔서 정말 감사합니다!!!
한번만 확인드리겠습니다ㅠ 24시면 정말 확실하게 취소매입 처리 완료된걸까요?ㅠ
모자라면 48시간으로 해야 할지요?
예를들어 오후 3시 결제취소 요청했다면 다음날 오후 3시에 acquireStatus 확인해보면 문제 없을지요?
정말 죄송합니다 하나더 궁금해서요ㅠ 그렇다면 만약 24시 후 acquireStatus 확인해 보아서 이 값이 매입취소로 CANCELED 가 아닌 상태라면 결제취소가 최종 실패가 된걸로 보면 될거 같은데, 이 시점에 결제에 대한 status 는 그대로 CANCELED 상태를 유지하는건가요?

24시간 이후에 카드사에서 취소매입 실패처리 하는 경우도 있는건지 위 질문들만 확인하면 될거 같습니다! 너무 많이 여쭤 죄송합니다
24시간은 어디서 들으신건가요? 24시간이라고 말씀드린적이 없거든요.
다음날 00시 이후 승인매입, 취소매입이 배치로 돌고 이에 대한 카드사 결과가 내려옵니다.
당일 승인건에 대해서 당일 취소를 하면, 매입 절차가 필요 없기 때문에 아예 승인매입, 취소매입이 필요 없구요.
네! 24시간은 저희 대표님이 따로 메일로 기술지원팀에서 들으셨다고 합니다. 24시간 내로 처리된다고 들으셨다고 합니다.
그럼 예를들어 10일 오후 9시에 결제취소를 한 경우 11일 자정 00시에 취소매입이 배치로 돌고 그 결과가 acquireStatus 상태값으로 저장되니, 저희는 11일 오전 쯤 api 로 acquireStatus 값이 CANCELED 인지 확인하면 되는 것으로 이해하면 될까요? 이후에는 더이상 acquireStatus 에 대해 변경은 없는거구요!
그리고 결제취소 api 승인되어 status 는 CANCELED 이나, 최종 취소매입이 실패하여 acquireStatus 는 CANCELED 이 아닐 수 있는 것이구요!
이렇게 이해하였는데 맞는지요?
당일취소건은 취소매입절차 없이 즉시 취소인것도 이해하였습니다!
네 맞습니다.
넵 감사합니다!