Version 2
새로 나온토스페이먼츠 결제 장애를 실시간으로 인지하고 빠르게 대응하는 방법을 알려드릴게요. Status Page 웹훅을 구독하면 결제 장애와 복구 시점을 알림으로 받을 수 있어요. 이걸 활용해서 아래와 같은 대응을 자동화할 수 있어요.
- 구매자 안내 — 결제 오류 시 "일시적 장애" 안내 메시지를 보여주고 재시도를 유도해요.
- 내부 알림 — Slack, PagerDuty 등으로 운영팀에 즉시 알림을 보내요.
- 빌링 배치 시간 변경 — 장애 중 자동결제(빌링) 배치 실행을 지연하거나 일시 중단해요.
결제 실패 에러 코드(REJECT_CARD_PAYMENT, PROVIDER_ERROR 등)는 카드 한도초과·비밀번호 오류 등 장애와 무관한 원인이 대부분이에요. 토스페이먼츠 시스템 장애 시에도 동일한 코드가 반환되거나 요청 자체가 실패하는 경우가 있어서, 가맹점에서 운영하는 거래 성공률 모니터링과 함께 Status Page 웹훅을 활용하면 장애를 더 정확하게 인지할 수 있어요.
status.tosspayments.com에 접속해서 아래 순서로 구독해요.
- Subscribe to Updates 클릭
- 전달 방식에서 Webhook 선택
- 수신 URL 입력 후 완료
수신 엔드포인트는 30초 안에 2xx 응답 코드를 반환해야 해요. 테스트 웹훅이 자동 발송되지 않으니, 4. Payload 예시 샘플로 직접 검증하세요.
토스페이먼츠 Status Page 웹훅은 서명·인증 헤더를 제공하지 않고, 발송 IP도 고정돼 있지 않아요. 수신 엔드포인트를 안전하게 운영하려면 HTTPS만 허용하고, 추측하기 어려운 경로(예: /webhooks/status/<random-token>)로 URL을 구성하세요. 결제 차단처럼 영향이 큰 자동화를 실행하기 전에는 component.id·new_status가 예상 값 안에 있는지 자체 검증하세요.
Component 상태가 바뀌면 아래 종류 웹훅이 모두 발송돼요. 자세한 명세는 Atlassian Statuspage 웹훅 문서, 전체 Payload는 4. Payload 예시에서 확인할 수 있어요.
Component Update— 각 서비스별status변경 알림. 자동화 로직에 적합.Incident Update— 장애 제목·본문·진행 경과 등 사람이 읽는 텍스트. Slack·구매자 안내 메시지에 활용.
Component 종류 — Status Page는 토스페이먼츠 서비스별 상태를 Component 단위로 보여줘요. 상황별 자세한 감지 방법은 3. 장애를 감지하고 대응하세요를 참고하세요.
| Component ID | 이름 |
|---|---|
0xsnykf1zpq7 | 결제 | payment |
ckdj8w8bby5v | 원천사 이슈 | Upstream Issue |
vwbf98p17wl2 | 결제창 | payment-window |
5d5cs4llzxql | 결제위젯 | payment-widget |
3506k7lxngtc | 브랜드페이 | brandpay |
lr64d5vf3g8w | 링크페이 | linkpay |
6lj53ywh4616 | 지급대행 | payout |
xgrb1l8jphj2 | 상점관리자 | Admin Page |
smlx5bskhynp | 조회 API & Webhook |
zh1589tz95y1 | 테스트 환경 | Test Env. |
Payload는 아래 형태의 JSON이 HTTP POST로 전송돼요. 핵심 필드는 component.id, component_update.new_status·old_status예요.
Component status — 각 Component의 상태값이에요.
| status | 의미 |
|---|---|
operational | 정상 |
degraded_performance | 성능 저하(응답 지연) * 원천사 Component는 이슈 발생 시 이 상태만 가져요. |
partial_outage | 일부 결제 제품 장애 혹은 간헐적 실패 |
major_outage | 전체 결제 불가 |
Payload는 아래 형태로 전송돼요. 핵심 필드는 incident.status와 incident.incident_updates[].body예요.
Incident status — investigating으로 시작해서 resolved로 종료돼요. 중간 단계(identified, monitoring)와 사후 분석(postmortem)은 상황에 따라 생략돼요.
| status | 의미 |
|---|---|
investigating | 장애 원인 조사 중 |
identified | 원인 파악 완료, 조치 진행 중 |
monitoring | 조치 완료, 정상화 모니터링 중 |
resolved | 장애 완전 해소 |
postmortem | 사후 분석/보고서 게시(선택) |
웹훅의 component.id로 장애 종류를 구분하고, component_update.new_status로 상태 변화를 판단해요. 자주 마주치는 두 상황(원천사 장애, 결제 시스템 전체 장애)을 살펴볼게요.
원천사 이슈 Component(ckdj8w8bby5v)는 카드사, 은행, 간편결제사 등 외부 제휴사 장애를 별도로 분리해서 알려줘요. degraded_performance ↔ operational 두 상태로만 전환돼요.
어떤 원천사가 영향받았는지는 Incident Update의 incident.incident_updates 배열(display_at 기준 최신 항목)의 body로 확인하세요. 본문은 아래 형식이에요.
결제 Component(0xsnykf1zpq7)는 토스페이먼츠 결제 시스템 전체 상태를 반영해요. 전체 결제 불가(major_outage)를 감지할 때 사용하세요.
처음에는 원천사 이슈(ckdj8w8bby5v)로 공지되었다가, 영향 범위가 확대되면서 토스페이먼츠 전체 결제 장애(0xsnykf1zpq7)로 전환되는 경우가 있어요. 두 장애는 권장 대응(특정 결제수단 안내 vs. 전체 결제 차단)이 다르기 때문에, 반드시 component.id를 기준으로 장애 종류를 분기 처리하고 두 Component를 모두 구독하세요.
원천사 Component(ckdj8w8bby5v)에서 토스카드 장애가 발생했다가 해소되는 시나리오예요. 한 건의 이벤트마다 Component Update와 Incident Update 두 종류가 모두 발송돼요.
Component Update
Incident Update — incident.incident_updates[0].body에 사람이 읽을 수 있는 장애 안내 문구가 담겨요.
Component Update
Incident Update — incident.status가 resolved로 변경되고, incident_updates에는 그동안의 모든 업데이트 이력이 누적돼요.
토스페이먼츠 Status Page는 점검(Maintenance) 시작 시점에 별도 웹훅을 발송하지 않아요. 사전 인지가 필요하면 아래 엔드포인트를 주기적으로 폴링하세요. 점검은 사전에 등록되기 때문에 일 단위 배치 폴링으로도 충분해요.
예정된 점검의 시작/종료 시각과 영향 Component를 확인해서 빌링 배치 시간 조정, 가맹점 운영팀 사전 공지 등에 활용하세요.
* Status Page에는 토스페이먼츠 제품 레벨에 영향이 있는 점검만 등록돼요. 특정 원천사(카드사·은행 등) 자체 점검은 등록되지 않아요.
partial_outage는 일부 결제 제품 장애나 간헐적 실패 때 발생해요. 전체 결제 차단(major_outage) 같은 강한 대응 대신 가맹점이 운영하는 자체 에러율 모니터링으로 보완하세요.