---
title: "Read Checkout Status"
method: POST
path: "/v1/subscriptions/payup-standard/status"
tags: ["Billing Standard Checkout"]
---

# Read Checkout Status

`POST /v1/subscriptions/payup-standard/status`

## Request

- Base URL: `https://api.xdata.kr` (the document declares no server; this is the origin it was published from)
- URL: `https://api.xdata.kr/v1/subscriptions/payup-standard/status`
- Auth: one of:
  - HTTP basic
  - OAuth 2 (authorization code, authorization URL `https://api.xdata.kr/oauth/authorize`, token URL `https://api.xdata.kr/oauth/token`)

우리 DB 에 적힌 결제 상태 조회 (결제대행사 호출 0건).

POST 인 이유: 입력에 체크아웃 토큰이 들어가고, 토큰을 URL 에 실으면 접근 로그·리퍼러에
남는다.

## Query parameters

- `env_scope` 'production' | 'real_test' | 'sandbox', nullable: 환경을 고릅니다. 값은 production · real_test · sandbox 중 하나입니다. 경로 접두(/v1/sandbox/... · /v1/test/... · /v1/production/...) · X-Env-Scope 헤더 · env_scope 쿼리 가운데 한 통로로 반드시 보내야 합니다. 빼면 자동으로 채우지 않고 거절하며, 두 통로에 서로 다른 값을 담아도 거절합니다. 거절은 HTTP 422 이고 오류 코드는 VALIDATION_ENV_SCOPE_MISMATCH 입니다.

## Headers

- `Authorization` string, nullable
- `X-Env-Scope` 'production' | 'real_test' | 'sandbox', nullable: 환경을 고릅니다. 값은 production · real_test · sandbox 중 하나입니다. 경로 접두(/v1/sandbox/... · /v1/test/... · /v1/production/...) · X-Env-Scope 헤더 · env_scope 쿼리 가운데 한 통로로 반드시 보내야 합니다. 빼면 자동으로 채우지 않고 거절하며, 두 통로에 서로 다른 값을 담아도 거절합니다. 거절은 HTTP 422 이고 오류 코드는 VALIDATION_ENV_SCOPE_MISMATCH 입니다.

## Request body

- StandardCheckoutApproveRequest: 결제창 인증이 끝난 뒤 승인/조회에 쓰는 입력 (두 라우트 공용). `transaction_id` 상한 20 은 결제대행사 규격값이다. 계약과 다른 길이는 **전송 전에** 거부한다.
  - `transaction_id` string, required
  - `checkout_token` string, required

## Response `200`

Successful Response

- StandardCheckoutStatusResponse: 우리 DB 에 적힌 결제 상태 조회 (외부 통신 0건). 결제대행사에 거래조회 API 가 없어서 이 조회는 **우리가 아는 것만** 돌려준다. 모르는 거래는 빈 응답이다 — 남의 거래번호를 넣어 본 사람에게 "그런 거래가 있다" 는 사실조차 알려 주지 않는다. `retry_available` 이 여기 있는 이유: 결제가 실패한 고객에게 다음 행동을 알려 주는 자리가 이 응답이다. 화면이 `payment_status` 로 추론하면 안 된다 — **실패한 결제라고 해서 항상 다시 시도할 수 있는 것이 아니다**(결과를 모르는 승인이 남아 있으면 재시도는 이중 청구가 된다). 그래서 버튼을 여는 판정과 실제로 문을 여는 판정을 **같은 함수 하나**로 묶는다.
  - `payment_id` integer, nullable
  - `payment_status` 'INITIATED' | 'PENDING' | 'SUCCEEDED' | 'FAILED' | 'CANCELED' | 'EXPIRED', nullable
  - `retry_available` boolean: 지금 이 구독의 결제를 다시 시도할 수 있는지. false 면 결과를 확인하는 중이거나 이미 처리가 끝난 결제다.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/xdata/apis/xboss-api.md) · [All operations](https://skmtc.dev/xdata/apis/xboss-api/llms.txt) · [OpenAPI document](https://skmtc.dev/xdata/apis/xboss-api/revisions/816de78950db?raw)
