콘텐츠로 이동

체크아웃 기능

  • Capability 이름: dev.ucp.shopping.checkout

개요

플랫폼이 체크아웃 세션을 중개할 수 있도록 합니다. AP2 Mandates 확장을 지원하지 않는 경우, 체크아웃은 신뢰 가능한 UI에서 사용자가 수동으로 최종 확정해야 합니다.

business는 Merchant of Record(MoR) 지위를 유지하며, 이 Capability를 통해 카드 결제를 수락하기 위해 별도로 PCI DSS 준수를 획득할 필요는 없습니다.

흐름 개요

High-level checkout flow sequence diagram

결제(Payments)

결제 핸들러는 business의 UCP 프로필 /.well-known/ucpcheckout.ucp.payment_handlers에서 탐색합니다. 핸들러는 결제 수단 수집을 위한 처리 명세(예: Google Pay, Shop Pay)를 정의합니다. 구매자가 결제를 제출하면, platform은 수집된 수단 데이터를 payment.instruments 배열에 채웁니다.

payment 객체는 체크아웃 생성 시 선택 사항이며, 결제 처리가 필요 없는 사용 사례(예: 견적 생성, 장바구니 관리)에서는 생략할 수 있습니다.

이행(Fulfillment)

이행은 다양한 사용 사례를 수용하기 위해 UCP에서 확장(extension)으로 모델링됩니다.

체크아웃 객체에서 이행은 선택 사항입니다. 이를 통해 플랫폼은 실물 상품에 주로 필요한 이행 세부정보 없이도 디지털 상품 체크아웃을 처리할 수 있습니다.

체크아웃 상태 라이프사이클

체크아웃 status 필드는 세션의 현재 단계를 나타내고, 다음에 필요한 동작을 결정합니다. 상태는 business가 설정하며, platform은 진행에 필요한 정보를 메시지 형태로 받습니다.

       +------------+                         +---------------------+
       | incomplete |<----------------------->| requires_escalation |
       +-----+------+                         |   (buyer handoff    |
             |                                |  via continue_url)  |
             | all info collected             +----------+----------+
             v                                           |
    +------------------+                                 |
    |ready_for_complete|                                 |
    |                  |                                 | continue_url
    | (platform can    |                                 |
    | call Complete    |                                 |
    |   Checkout)      |                                 |
    +--------+---------+                                 |
             |                                           |
             | Complete Checkout                         |
             v                                           |
   +--------------------+                                |
   |complete_in_progress|                                |
   +---------+----------+                                |
             |                                           |
             +-----------------------+-------------------+
                                     v
                               +-------------+
                               |  completed  |
                               +-------------+

                               +-------------+
                               |  canceled   |
                               +-------------+
          (session invalid/expired - can occur from any state)

상태 값

  • incomplete: 체크아웃 세션에 필수 정보가 누락되었거나 해결해야 할 문제가 있음. platform은 messages 배열을 확인해 맥락을 파악하고, Update Checkout으로 해결을 시도해야 합니다.

  • requires_escalation: API로 제공할 수 없는 정보가 필요하거나, 구매자 입력이 필요한 상태. platform은 messages로 필요한 사항을 파악해야 하며 (아래 오류 처리 참고), recoverable 오류가 있다면 먼저 해결한 뒤 continue_url로 구매자에게 핸드오프해야 합니다.

  • ready_for_complete: 체크아웃에 필요한 정보가 모두 준비되어 platform이 프로그래밍 방식으로 최종화할 수 있는 상태. Complete Checkout 호출 가능.

  • complete_in_progress: business가 Complete Checkout 요청을 처리 중인 상태.

  • completed: 주문이 성공적으로 접수된 상태.

  • canceled: 체크아웃 세션이 무효 또는 만료된 상태. 필요한 경우 platform은 새 체크아웃 세션을 시작해야 합니다.

오류 처리

messages 배열은 체크아웃 상태에 대한 오류/경고/정보 메시지를 담습니다. 오류 메시지에는 누가 해결해야 하는지를 나타내는 severity 필드가 포함됩니다.

Severity 의미 플랫폼 동작
recoverable 플랫폼이 API로 수정 가능 Update Checkout으로 해결
requires_buyer_input business가 API로 받을 수 없는 입력이 필요 continue_url로 핸드오프
requires_buyer_review 구매자 검토/승인이 필요 continue_url로 핸드오프

requires_* severity 오류는 status: requires_escalation에 기여합니다. 둘 다 구매자 핸드오프가 필요하지만 의미하는 체크아웃 상태가 다릅니다.

  • requires_buyer_input은 체크아웃이 불완전(incomplete) 함을 의미합니다. business API가 프로그래밍 방식으로 수집할 수 없는 정보가 필요합니다.
  • requires_buyer_review는 체크아웃이 완전(complete) 하지만, 정책/규제/권한 규칙상 주문 전 구매자 승인이 필요함을 의미합니다. (예: 고액 주문 승인, 첫 구매 정책)

오류 처리 알고리즘

상태가 incomplete 또는 requires_escalation일 때 플랫폼은 오류를 우선순위 스택으로 처리해야 합니다. 아래 예시는 세 가지 오류 유형(복구 가능 오류: 잘못된 전화번호, 구매자 입력 필요: 배송 일정, 구매자 검토 필요: 고액 주문)을 보여줍니다. 후자 둘은 핸드오프가 필요하며 플랫폼에 대한 명시적 신호로 동작합니다. business는 이런 메시지를 가능한 한 빨리 노출하는 것이 권장(SHOULD) 되며, platform은 핸드오프 전에 복구 가능한 오류를 우선 해결하는 것이 권장(SHOULD) 됩니다.

{
  "status": "requires_escalation",
  "messages": [
    {
      "type": "error",
      "code": "invalid_phone",
      "severity": "recoverable",
      "content": "Phone number format is invalid"
    },
    {
      "type": "error",
      "code": "schedule_delivery",
      "severity": "requires_buyer_input",
      "content": "Select delivery window for your purchase"
    },
    {
      "type": "error",
      "code": "high_value_order",
      "severity": "requires_buyer_review",
      "content": "Orders over $500 require additional verification"
    }
  ]
}

오류 처리 알고리즘 예시:

GIVEN checkout with messages array
FILTER errors FROM messages WHERE type = "error"

PARTITION errors INTO
  recoverable           WHERE severity = "recoverable"
  requires_buyer_input  WHERE severity = "requires_buyer_input"
  requires_buyer_review WHERE severity = "requires_buyer_review"

IF recoverable is not empty
  FOR EACH error IN recoverable
    ATTEMPT to fix error (e.g., reformat phone number)
  CALL Update Checkout
  RETURN and re-evaluate response

IF requires_buyer_input is not empty
  handoff_context = "incomplete, additional input from buyer is required"
ELSE IF requires_buyer_review is not empty
  handoff_context = "ready for final review by the buyer"

표준 오류

표준 오류는 플랫폼이 일반 오류 처리 대신 적절한 전용 UX로 다루어야 하는 표준화된 오류 코드입니다.

코드 설명
out_of_stock 특정 상품 또는 변형(variant)을 사용할 수 없음
item_unavailable 상품을 구매할 수 없음(예: 판매 중단)
address_undeliverable 제공된 주소로 배송 불가
payment_failed 결제 처리 실패

business는 표준 오류를 severity: recoverable로 표시하는 것이 권장(SHOULD) 됩니다. 이렇게 하면 플랫폼이 일반적인 오류 메시지 처리나 완료 단계 지연 대신, 재고 부족 안내/주소 검증 유도/결제수단 변경 같은 적절한 UX를 제공해야 함을 명확히 전달할 수 있습니다.

예: out_of_stock는 사전에 구체 UX가 필요하고, payment_required는 제출 시점에 일반적으로 처리할 수 있습니다.

연속 URL(Continue URL)

continue_url 필드는 플랫폼 UI에서 business UI로 체크아웃을 핸드오프하여, 구매자가 체크아웃 세션을 이어서 완료할 수 있게 합니다.

제공 여부

business는 statusrequires_escalation일 때 continue_url반드시(MUST) 제공해야 합니다. 그 외 비종료 상태(incomplete, ready_for_complete, complete_in_progress)에서는 continue_url 제공이 권장(SHOULD) 됩니다. 종료 상태(completed, canceled)에서는 continue_url을 생략하는 것이 권장(SHOULD) 됩니다.

형식

continue_url은 절대 HTTPS URL이어야 하며(MUST), 매끄러운 핸드오프를 위해 체크아웃 상태를 보존하는 것이 권장(SHOULD) 됩니다. business는 아래 두 방식 중 하나로 상태 보존을 구현할 수 있습니다(MAY).

서버 측 상태 (권장)

서버 측 체크아웃 상태에 연결된 opaque URL:

https://business.example.com/checkout-sessions/{checkout_id}
  • 서버가 checkout_id에 연결된 체크아웃 상태를 유지
  • 단순하고 안전하며 대부분 구현에 권장
  • URL 수명은 보통 expires_at에 연동

체크아웃 상태를 URL에 직접 인코딩해 서버 측 영속성 없이 재구성할 수 있는 stateless URL. business는 체크아웃 핸드오프 및 빠른 진입을 지원하기 위해 이 형식 구현을 권장(SHOULD) 합니다. 예를 들어 platform은 buy-now 흐름 시작 시 체크아웃 상태를 미리 채울 수 있습니다.

참고: Checkout permalink는 REST transport binding을 확장하는 REST 전용 구성입니다. permalink 접근 시 checkout UI로 리다이렉트되거나 checkout 페이지를 직접 렌더링합니다.

가이드라인

(상위 가이드라인에 더해)

플랫폼

  • MAY 에이전트를 활용해 체크아웃 세션을 보조할 수 있습니다. (예: 아이템 추가, 이행 주소 선택) 단, 에이전트는 사용자가 체크아웃 상세를 검토하고 주문을 확정할 수 있도록 신뢰 가능하고 결정적인 UI에 세션을 넘겨야 합니다.
  • MAY 신뢰 가능한 결정적 UI에서 사용자를 언제든 다시 에이전트로 보낼 수 있습니다. 예: 사용자가 체크아웃 화면을 나가 장바구니에 아이템을 더 추가하려는 경우.
  • 플랫폼이 요청이 에이전트에 의해 수행되었음을 표시한 경우, MAY 에이전트 컨텍스트를 제공할 수 있습니다.
  • 체크아웃 상태가 requires_escalation일 때 MUST continue_url을 사용해야 합니다.
  • 다른 상황에서도 MAY continue_url을 사용해 business UI로 핸드오프할 수 있습니다.
  • 핸드오프 수행 시, platform이 구성한 checkout permalink보다 business 제공 continue_url을 우선하는 것이 권장(SHOULD) 됩니다.

비즈니스

  • 체크아웃 완료 후 확인 이메일을 반드시(MUST) 발송해야 합니다.
  • 정확한 오류 메시지를 제공하는 것이 권장(SHOULD) 됩니다.
  • 체크아웃 세션 처리 로직은 반드시(MUST) 결정적이어야 합니다.
  • status = requires_escalation 반환 시 continue_url반드시(MUST) 제공해야 합니다.
  • status = requires_escalation 반환 시 severity: escalation 메시지를 최소 1개 이상 반드시(MUST) 포함해야 합니다.
  • 모든 비종료 체크아웃 응답에서 continue_url 제공이 권장(SHOULD) 됩니다.
  • 체크아웃 세션이 "completed" 상태에 도달하면 불변(immutable)으로 간주됩니다.

기능(Capability) 스키마 정의

Name Type Required Description
ucp UCP Response Checkout Schema Yes Protocol metadata for discovery profiles and responses. Uses slim schema pattern with context-specific required fields.
id string Yes Unique identifier of the checkout session.
line_items Array[Line Item Response] Yes List of line items being checked out.
buyer Buyer No Representation of the buyer.
status string Yes Checkout state indicating the current phase and required action. See Checkout Status lifecycle documentation for state transition details.
Enum: incomplete, requires_escalation, ready_for_complete, complete_in_progress, completed, canceled
currency string Yes ISO 4217 currency code reflecting the merchant's market determination. Derived from address, context, and geo IP—buyers provide signals, merchants determine currency.
totals Array[Total Response] Yes Different cart totals.
messages Array[Message] No List of messages with error and info about the checkout session state.
links Array[Link] Yes Links to be displayed by the platform (Privacy Policy, TOS). Mandatory for legal compliance.
expires_at string No RFC 3339 expiry timestamp. Default TTL is 6 hours from creation if not sent.
continue_url string No URL for checkout handoff and session recovery. MUST be provided when status is requires_escalation. See specification for format and availability requirements.
payment Payment No Payment configuration containing handlers.
order Order Confirmation No Details about an order created for this checkout session.

연산(Operations)

Checkout capability는 다음 논리 연산을 정의합니다.

연산 설명
Create Checkout 새 체크아웃 세션 시작. 사용자가 장바구니에 아이템을 담는 즉시 호출됨
Get Checkout 체크아웃 세션의 현재 상태 조회
Update Checkout 체크아웃 세션 갱신
Complete Checkout 체크아웃을 최종 확정하고 주문 접수
Cancel Checkout 체크아웃 세션 취소

체크아웃 생성

사용자가 구매 의사를 표현했을 때(예: Buy 클릭), 아이템 상세를 포함해 체크아웃 세션을 시작하기 위해 platform이 호출합니다.

권장 사항: 불일치를 줄이고 더 매끄러운 사용자 경험을 위해, business가 피드로 제공한 상품 데이터(가격/제목 등)는 응답에서 반환되는 실제 속성과 일치하는 것이 권장(SHOULD) 됩니다.

Inputs

Name Type Required Description
line_items Array[Line Item] Yes List of line items being checked out.
buyer Buyer No Representation of the buyer.
context Context No Provisional buyer signals for relevance and localization: product availability, pricing, currency, tax, shipping, payment methods, and eligibility (e.g., student or affiliation discounts). Businesses SHOULD use these values when authoritative data (e.g., address) is absent, and MAY ignore unsupported values without returning errors. Context SHOULD be non-identifying and can be disclosed progressively—coarse signals early, finer resolution as the session progresses. Higher-resolution data (shipping address, billing address) supersedes context. Platforms SHOULD progressively enhance context throughout the buyer journey.
payment Payment No Payment configuration containing handlers.

Output

Name Type Required Description
ucp UCP Response Checkout Schema Yes Protocol metadata for discovery profiles and responses. Uses slim schema pattern with context-specific required fields.
id string Yes Unique identifier of the checkout session.
line_items Array[Line Item Response] Yes List of line items being checked out.
buyer Buyer No Representation of the buyer.
status string Yes Checkout state indicating the current phase and required action. See Checkout Status lifecycle documentation for state transition details.
Enum: incomplete, requires_escalation, ready_for_complete, complete_in_progress, completed, canceled
currency string Yes ISO 4217 currency code reflecting the merchant's market determination. Derived from address, context, and geo IP—buyers provide signals, merchants determine currency.
totals Array[Total Response] Yes Different cart totals.
messages Array[Message] No List of messages with error and info about the checkout session state.
links Array[Link] Yes Links to be displayed by the platform (Privacy Policy, TOS). Mandatory for legal compliance.
expires_at string No RFC 3339 expiry timestamp. Default TTL is 6 hours from creation if not sent.
continue_url string No URL for checkout handoff and session recovery. MUST be provided when status is requires_escalation. See specification for format and availability requirements.
payment Payment No Payment configuration containing handlers.
order Order Confirmation No Details about an order created for this checkout session.

체크아웃 조회

체크아웃 리소스의 최신 상태를 제공합니다. 취소/완료 이후 무엇을 반환할지는 business 정책에 달려 있습니다(예: 장기간 상태 유지 또는 특정 TTL 후 만료되어 not found 오류 반환). platform 측에서는 checkout TTL에 대한 별도 강제 규칙이 없습니다.

platform은 체크아웃 세션 생성 시 business가 expires_at로 제공한 TTL을 따릅니다.

Inputs

Name Type Required Description
id string Yes The unique identifier of the checkout session.Defined in path.

Output

Name Type Required Description
ucp UCP Response Checkout Schema Yes Protocol metadata for discovery profiles and responses. Uses slim schema pattern with context-specific required fields.
id string Yes Unique identifier of the checkout session.
line_items Array[Line Item Response] Yes List of line items being checked out.
buyer Buyer No Representation of the buyer.
status string Yes Checkout state indicating the current phase and required action. See Checkout Status lifecycle documentation for state transition details.
Enum: incomplete, requires_escalation, ready_for_complete, complete_in_progress, completed, canceled
currency string Yes ISO 4217 currency code reflecting the merchant's market determination. Derived from address, context, and geo IP—buyers provide signals, merchants determine currency.
totals Array[Total Response] Yes Different cart totals.
messages Array[Message] No List of messages with error and info about the checkout session state.
links Array[Link] Yes Links to be displayed by the platform (Privacy Policy, TOS). Mandatory for legal compliance.
expires_at string No RFC 3339 expiry timestamp. Default TTL is 6 hours from creation if not sent.
continue_url string No URL for checkout handoff and session recovery. MUST be provided when status is requires_escalation. See specification for format and availability requirements.
payment Payment No Payment configuration containing handlers.
order Order Confirmation No Details about an order created for this checkout session.

체크아웃 업데이트

체크아웃 리소스를 전체 교체(full replacement)합니다. platform은 write-only 필드 업데이트를 포함한 전체 checkout 리소스를 반드시(REQUIRED) 전송해야 합니다. 요청에 담긴 리소스는 business 측 기존 체크아웃 세션 상태를 대체합니다.

Inputs

Name Type Required Description
id string Yes The unique identifier of the checkout session.Defined in path.
id string Yes Unique identifier of the checkout session.
line_items Array[Line Item] Yes List of line items being checked out.
buyer Buyer No Representation of the buyer.
context Context No Provisional buyer signals for relevance and localization: product availability, pricing, currency, tax, shipping, payment methods, and eligibility (e.g., student or affiliation discounts). Businesses SHOULD use these values when authoritative data (e.g., address) is absent, and MAY ignore unsupported values without returning errors. Context SHOULD be non-identifying and can be disclosed progressively—coarse signals early, finer resolution as the session progresses. Higher-resolution data (shipping address, billing address) supersedes context. Platforms SHOULD progressively enhance context throughout the buyer journey.
payment Payment No Payment configuration containing handlers.

Output

Name Type Required Description
ucp UCP Response Checkout Schema Yes Protocol metadata for discovery profiles and responses. Uses slim schema pattern with context-specific required fields.
id string Yes Unique identifier of the checkout session.
line_items Array[Line Item Response] Yes List of line items being checked out.
buyer Buyer No Representation of the buyer.
status string Yes Checkout state indicating the current phase and required action. See Checkout Status lifecycle documentation for state transition details.
Enum: incomplete, requires_escalation, ready_for_complete, complete_in_progress, completed, canceled
currency string Yes ISO 4217 currency code reflecting the merchant's market determination. Derived from address, context, and geo IP—buyers provide signals, merchants determine currency.
totals Array[Total Response] Yes Different cart totals.
messages Array[Message] No List of messages with error and info about the checkout session state.
links Array[Link] Yes Links to be displayed by the platform (Privacy Policy, TOS). Mandatory for legal compliance.
expires_at string No RFC 3339 expiry timestamp. Default TTL is 6 hours from creation if not sent.
continue_url string No URL for checkout handoff and session recovery. MUST be provided when status is requires_escalation. See specification for format and availability requirements.
payment Payment No Payment configuration containing handlers.
order Order Confirmation No Details about an order created for this checkout session.

체크아웃 완료

최종 주문 확정 호출입니다. 사용자가 선택한 아이템에 대해 결제 및 주문 확정을 의사결정했을 때 호출합니다. 응답은 order 필드가 채워진 checkout 객체이며, 반환된 order에는 배치된 주문의 전체 상태를 참조할 수 있는 id, permalink_url 등 필수 식별자가 포함됩니다. 주문 영속화 시점에는 Checkout의 필드를 사용해(line_items, fulfillment 등) 초기 주문 표현을 구성할 수 있습니다(MAY).

이 호출 이후 상세 상태는 주문과 연관 아이템이 공급망을 따라 이동함에 따라, 후속 이벤트를 통해 갱신됩니다.

Inputs

Name Type Required Description
id string Yes The unique identifier of the checkout session.Defined in path.
payment Payment Yes Payment configuration containing handlers.
risk_signals object No Key-value pairs of risk signals.

Output

Name Type Required Description
ucp UCP Response Checkout Schema Yes Protocol metadata for discovery profiles and responses. Uses slim schema pattern with context-specific required fields.
id string Yes Unique identifier of the checkout session.
line_items Array[Line Item Response] Yes List of line items being checked out.
buyer Buyer No Representation of the buyer.
status string Yes Checkout state indicating the current phase and required action. See Checkout Status lifecycle documentation for state transition details.
Enum: incomplete, requires_escalation, ready_for_complete, complete_in_progress, completed, canceled
currency string Yes ISO 4217 currency code reflecting the merchant's market determination. Derived from address, context, and geo IP—buyers provide signals, merchants determine currency.
totals Array[Total Response] Yes Different cart totals.
messages Array[Message] No List of messages with error and info about the checkout session state.
links Array[Link] Yes Links to be displayed by the platform (Privacy Policy, TOS). Mandatory for legal compliance.
expires_at string No RFC 3339 expiry timestamp. Default TTL is 6 hours from creation if not sent.
continue_url string No URL for checkout handoff and session recovery. MUST be provided when status is requires_escalation. See specification for format and availability requirements.
payment Payment No Payment configuration containing handlers.
order Order Confirmation No Details about an order created for this checkout session.

체크아웃 취소

취소 가능한 경우 체크아웃 세션 취소에 사용합니다. 체크아웃 세션을 취소할 수 없는 경우(예: 이미 canceled 또는 completed), business는 작업이 허용되지 않음을 나타내는 오류를 반환하는 것이 권장(SHOULD) 됩니다. completed/canceled가 아닌 상태의 체크아웃 세션은 취소 가능해야 하며(SHOULD), 가능하도록 설계하는 것이 바람직합니다.

Inputs

Name Type Required Description
id string Yes The unique identifier of the checkout session.Defined in path.

Output

Name Type Required Description
ucp UCP Response Checkout Schema Yes Protocol metadata for discovery profiles and responses. Uses slim schema pattern with context-specific required fields.
id string Yes Unique identifier of the checkout session.
line_items Array[Line Item Response] Yes List of line items being checked out.
buyer Buyer No Representation of the buyer.
status string Yes Checkout state indicating the current phase and required action. See Checkout Status lifecycle documentation for state transition details.
Enum: incomplete, requires_escalation, ready_for_complete, complete_in_progress, completed, canceled
currency string Yes ISO 4217 currency code reflecting the merchant's market determination. Derived from address, context, and geo IP—buyers provide signals, merchants determine currency.
totals Array[Total Response] Yes Different cart totals.
messages Array[Message] No List of messages with error and info about the checkout session state.
links Array[Link] Yes Links to be displayed by the platform (Privacy Policy, TOS). Mandatory for legal compliance.
expires_at string No RFC 3339 expiry timestamp. Default TTL is 6 hours from creation if not sent.
continue_url string No URL for checkout handoff and session recovery. MUST be provided when status is requires_escalation. See specification for format and availability requirements.
payment Payment No Payment configuration containing handlers.
order Order Confirmation No Details about an order created for this checkout session.

전송 바인딩(Transport Bindings)

위 추상 연산은 아래와 같이 특정 전송 프로토콜에 바인딩됩니다.

  • REST Binding: 표준 HTTP 메서드와 JSON payload를 사용하는 REST API 매핑
  • MCP Binding: 에이전트 상호작용을 위한 Model Context Protocol 매핑
  • A2A Binding: 에이전트 상호작용을 위한 Agent-to-Agent Protocol 매핑
  • Embedded Checkout Binding: 임베디드 체크아웃 구현을 위한 JSON-RPC

엔터티

구매자(Buyer)

Name Type Required Description
first_name string No First name of the buyer.
last_name string No Last name of the buyer.
email string No Email of the buyer.
phone_number string No E.164 standard.

컨텍스트(Context)

Context 신호는 잠정적 힌트입니다. business는 권위 있는 데이터(예: 주소)가 없을 때 이 값을 활용하는 것이 권장(SHOULD) 되며, 지원하지 않는 값은 오류 없이 무시할 수 있습니다(MAY). 이는 명시적 검증과 오류 피드백이 필요한 authoritative selection과 다릅니다.

Name Type Required Description
address_country string No The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example "US". For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as "SGP" or a full country name such as "Singapore" can also be used. Optional hint for market context (currency, availability, pricing)—higher-resolution data (e.g., shipping address) supersedes this value.
address_region string No The region in which the locality is, and which is in the country. For example, California or another appropriate first-level Administrative division. Optional hint for progressive localization—higher-resolution data (e.g., shipping address) supersedes this value.
postal_code string No The postal code. For example, 94043. Optional hint for regional refinement—higher-resolution data (e.g., shipping address) supersedes this value.
intent string No Background context describing buyer's intent (e.g., 'looking for a gift under $50', 'need something durable for outdoor use'). Informs relevance, recommendations, and personalization.

이행 옵션(Fulfillment Option)

Name Type Required Description
id string Yes Unique fulfillment option identifier.
title string Yes Short label (e.g., 'Express Shipping', 'Curbside Pickup').
description string No Complete context for buyer decision (e.g., 'Arrives Dec 12-15 via FedEx').
carrier string No Carrier name (for shipping).
earliest_fulfillment_time string No Earliest fulfillment date.
latest_fulfillment_time string No Latest fulfillment date.
totals Array[object] Yes Fulfillment option totals breakdown.

항목(Item)

항목 생성 요청

Name Type Required Description
id string Yes The product identifier, often the SKU, required to resolve the product details associated with this line item. Should be recognized by both the Platform, and the Business.

항목 업데이트 요청

Name Type Required Description
id string Yes The product identifier, often the SKU, required to resolve the product details associated with this line item. Should be recognized by both the Platform, and the Business.

항목 응답

Name Type Required Description
id string Yes The product identifier, often the SKU, required to resolve the product details associated with this line item. Should be recognized by both the Platform, and the Business.
title string Yes Product title.
price integer Yes Unit price in minor (cents) currency units.
image_url string No Product image URI.

라인 아이템(Line Item)

라인 아이템 생성 요청

Name Type Required Description
item Item Yes
quantity integer Yes Quantity of the item being purchased.

라인 아이템 업데이트 요청

Name Type Required Description
id string No
item Item Yes
quantity integer Yes Quantity of the item being purchased.
parent_id string No Parent line item identifier for any nested structures.

라인 아이템 응답

Name Type Required Description
id string Yes
item Item Yes
quantity integer Yes Quantity of the item being purchased.
totals Array[Total] Yes Line item totals breakdown.
parent_id string No Parent line item identifier for any nested structures.
Name Type Required Description
type string Yes Type of link. Well-known values: privacy_policy, terms_of_service, refund_policy, shipping_policy, faq. Consumers SHOULD handle unknown values gracefully by displaying them using the title field or omitting the link.
url string Yes The actual URL pointing to the content to be displayed.
title string No Optional display text for the link. When provided, use this instead of generating from type.

Well-Known URI 링크 타입

business는 거래와 관련된 링크를 가능한 한 모두 제공하는 것이 권장(SHOULD) 됩니다. 아래는 권장 well-known 타입입니다.

타입 설명
privacy_policy business 개인정보 처리방침 링크
terms_of_service business 이용약관 링크
refund_policy business 환불 정책 링크
shipping_policy business 배송 정책 링크
faq business 자주 묻는 질문 링크

business는 도메인별 요구를 위해 사용자 정의 타입을 정의할 수 있습니다(MAY). platform은 알 수 없는 타입을 title 필드로 표시하거나 생략하는 방식으로 유연하게 처리하는 것이 권장(SHOULD) 됩니다.

메시지(Message)

This object MUST be one of the following types: Message Error, Message Warning, Message Info.

메시지 오류

Name Type Required Description
type string Yes Constant = error. Message type discriminator.
code Error Code Yes Error code identifying the type of error. Standard errors are defined in specification (see examples), and have standardized semantics; freeform codes are permitted.
path string No RFC 9535 JSONPath to the component the message refers to (e.g., $.items[1]).
content_type string No Content format, default = plain.
Enum: plain, markdown
content string Yes Human-readable message.
severity string Yes Declares who resolves this error. 'recoverable': agent can fix via API. 'requires_buyer_input': merchant requires information their API doesn't support collecting programmatically (checkout incomplete). 'requires_buyer_review': buyer must authorize before order placement due to policy, regulatory, or entitlement rules (checkout complete). Errors with 'requires_' severity contribute to 'status: requires_escalation'.
Enum:* recoverable, requires_buyer_input, requires_buyer_review

메시지 정보

Name Type Required Description
type string Yes Constant = info. Message type discriminator.
path string No RFC 9535 JSONPath to the component the message refers to.
code string No Info code for programmatic handling.
content_type string No Content format, default = plain.
Enum: plain, markdown
content string Yes Human-readable message.

메시지 경고

Name Type Required Description
type string Yes Constant = warning. Message type discriminator.
path string No JSONPath (RFC 9535) to related field (e.g., $.line_items[0]).
code string Yes Warning code. Machine-readable identifier for the warning type (e.g., final_sale, prop65, fulfillment_changed, age_restricted, etc.).
content string Yes Human-readable warning message that MUST be displayed.
content_type string No Content format, default = plain.
Enum: plain, markdown

결제(Payment)

Name Type Required Description
instruments Array[Selected Payment Instrument] No The payment instruments available for this payment. Each instrument is associated with a specific handler via the handler_id field. Handlers can extend the base payment_instrument schema to add handler-specific fields.

결제 수단(Payment Instrument)

Name Type Required Description
id string Yes A unique identifier for this instrument instance, assigned by the platform.
handler_id string Yes The unique identifier for the handler instance that produced this instrument. This corresponds to the 'id' field in the Payment Handler definition.
type string Yes The broad category of the instrument (e.g., 'card', 'tokenized_card'). Specific schemas will constrain this to a constant value.
billing_address Postal Address No The billing address associated with this payment method.
credential Payment Credential No The base definition for any payment credential. Handlers define specific credential types.
display object No Display information for this payment instrument. Each payment instrument schema defines its specific display properties, as outlined by the payment handler.

결제 자격증명(Payment Credential)

Name Type Required Description
type string Yes The credential type discriminator. Specific schemas will constrain this to a constant value.

우편 주소(Postal Address)

Name Type Required Description
extended_address string No An address extension such as an apartment number, C/O or alternative name.
street_address string No The street address.
address_locality string No The locality in which the street address is, and which is in the region. For example, Mountain View.
address_region string No The region in which the locality is, and which is in the country. Required for applicable countries (i.e. state in US, province in CA). For example, California or another appropriate first-level Administrative division.
address_country string No The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example "US". For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as "SGP" or a full country name such as "Singapore" can also be used.
postal_code string No The postal code. For example, 94043.
first_name string No Optional. First name of the contact associated with the address.
last_name string No Optional. Last name of the contact associated with the address.
phone_number string No Optional. Phone number of the contact associated with the address.

응답(Response)

Name Type Required Description
version string Yes Entity version in YYYY-MM-DD format.
spec string No URL to human-readable specification document.
schema string No URL to JSON Schema defining this entity's structure and payloads.
id string No Unique identifier for this entity instance. Used to disambiguate when multiple instances exist.
config object No Entity-specific configuration. Structure defined by each entity's schema.
extends OneOf[] No Parent capability(s) this extends. Present for extensions, absent for root capabilities. Use array for multi-parent extensions.

합계(Total)

합계 응답

Name Type Required Description
type string Yes Type of total categorization.
Enum: items_discount, subtotal, discount, fulfillment, tax, fee, total
display_text string No Text to display against the amount. Should reflect appropriate method (e.g., 'Shipping', 'Delivery').
amount integer Yes If type == total, sums subtotal - discount + fulfillment + tax + fee. Should be >= 0. Amount in minor (cents) currency units.

UCP 응답 체크아웃

Name Type Required Description
version string Yes UCP version in YYYY-MM-DD format.
services object No Service registry keyed by reverse-domain name.
capabilities object No Capability registry keyed by reverse-domain name.
payment_handlers object No Payment handler registry keyed by reverse-domain name.
services any No
capabilities any No
payment_handlers any Yes

주문 확인

Name Type Required Description
id string Yes Unique order identifier.
permalink_url string Yes Permalink to access the order on merchant site.