PageSourceSearch

https://ucp.dev/documentation/core-concepts/

html ucp.dev collected 2026-10-01 07:55:03 UTC 90,595 bytes, 2,096 lines download raw bytes

1
2<!doctype html>
3<html lang="en" class="no-js">
4  <head>
5    
6      <meta charset="utf-8">
7      <meta name="viewport" content="width=device-width,initial-scale=1">
8      
9        <meta name="description" content="The Universal Commerce Protocol (UCP) is a solution for enabling gen AI agents to make payments on behalf of users, safely, securely, and in a decentralized and privacy protecting manner. This protocol is a part of the broader ecosystem, which includes agentic protocols like A2A and MCP, and encompasses the global nature of payments.
10">
11      
12      
13      
14        <link rel="canonical" href="http://ucp.dev/documentation/core-concepts/">
15      
16      
17        <link rel="prev" href="../..">
18      
19      
20        <link rel="next" href="../ucp-and-ap2/">
21      
22      
23        
24      
25      
26      <link rel="icon" href="../../assets/favicon.png">
27      <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
28    
29    
30      
31        <title>Core Concepts - Universal Commerce Protocol (UCP)</title>
32      
33    
34    
35      <link rel="stylesheet" href="../../assets/stylesheets/main.ec1eaa64.min.css">
36      
37        
38        <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
39      
40      
41  
42  
43    
44      
45      
46    
47  
48    
49      
50      
51    
52  
53    
54      
55      
56    
57  
58    
59      
60      
61    
62  
63    
64      
65      
66    
67  
68    
69      
70      
71    
72  
73    
74      
75      
76    
77  
78    
79      
80      
81    
82  
83    
84      
85      
86    
87  
88    
89      
90      
91    
92  
93    
94      
95      
96    
97  
98    
99      
100      
101    
102  
103  
104  <style>:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M64%20480c-35.3%200-64-28.7-64-64V96c0-35.3%2028.7-64%2064-64h320c35.3%200%2064%2028.7%2064%2064v213.5c0%2017-6.7%2033.3-18.7%2045.3L322.7%20461.3c-12%2012-28.3%2018.7-45.3%2018.7zm325.5-176H296c-13.3%200-24%2010.7-24%2024v93.5z%22/%3E%3C/svg%3E');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M384%20512H96c-53%200-96-43-96-96V96C0%2043%2043%200%2096%200h304c26.5%200%2048%2021.5%2048%2048v288c0%2020.9-13.4%2038.7-32%2045.3V448c17.7%200%2032%2014.3%2032%2032s-14.3%2032-32%2032zM96%20384c-17.7%200-32%2014.3-32%2032s14.3%2032%2032%2032h256v-64zm32-232c0%2013.3%2010.7%2024%2024%2024h176c13.3%200%2024-10.7%2024-24s-10.7-24-24-24H152c-13.3%200-24%2010.7-24%2024m24%2072c-13.3%200-24%2010.7-24%2024s10.7%2024%2024%2024h176c13.3%200%2024-10.7%2024-24s-10.7-24-24-24z%22/%3E%3C/svg%3E');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M256%20512a256%20256%200%201%200%200-512%20256%20256%200%201%200%200%20512m-32-352a32%2032%200%201%201%2064%200%2032%2032%200%201%201-64%200m-8%2064h48c13.3%200%2024%2010.7%2024%2024v88h8c13.3%200%2024%2010.7%2024%2024s-10.7%2024-24%2024h-80c-13.3%200-24-10.7-24-24s10.7-24%2024-24h24v-64h-24c-13.3%200-24-10.7-24-24s10.7-24%2024-24%22/%3E%3C/svg%3E');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%2
10407.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M461.2%2018.9C472.7%2024%20480%2035.4%20480%2048v416c0%2012.6-7.3%2024-18.8%2029.1s-24.8%203.2-34.3-5.1l-46.6-40.7c-43.6-38.1-98.7-60.3-156.4-63V480c0%2017.7-14.3%2032-32%2032h-32c-17.7%200-32-14.3-32-32v-96C57.3%20384%200%20326.7%200%20256s57.3-128%20128-128h84.5c61.8-.2%20121.4-22.7%20167.9-63.3L427%2024c9.4-8.3%2022.9-10.2%2034.3-5.1zM224%20320v.2c70.3%202.7%20137.8%2028.5%20192%2073.4V118.3c-54.2%2044.9-121.7%2070.7-192%2073.4z%22/%3E%3C/svg%3E');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M434.8%2070.1c14.3%2010.4%2017.5%2030.4%207.1%2044.7l-256%20352c-5.5%207.6-14%2012.3-23.4%2013.1s-18.5-2.7-25.1-9.3l-128-128c-12.5-12.5-12.5-32.8%200-45.3s32.8-12.5%2045.3%200l101.5%20101.5%20234-321.7c10.4-14.3%2030.4-17.5%2044.7-7.1z%22/%3E%3C/svg%3E');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M256%20512a256%20256%200%201%200%200-512%20256%20256%200%201%200%200%20512m0-336c-17.7%200-32%2014.3-32%2032%200%2013.3-10.7%2024-24%2024s-24-10.7-24-24c0-44.2%2035.8-80%2080-80s80%2035.8%2080%2080c0%2047.2-36%2067.2-56%2074.5v3.8c0%2013.3-10.7%2024-24%2024s-24-10.7-24-24v-8.1c0-20.5%2014.8-35.2%2030.1-40.2%206.4-2.1%2013.2-5.5%2018.2-10.3%204.3-4.2%207.7-10%207.7-19.6%200-17.7-14.3-32-32-32zm-32%20192a32%2032%200%201%201%2064%200%2032%2032%200%201%201-64%200%22/%3E%3C/svg%3E');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M256%200c14.7%200%2028.2%208.1%2035.2%2021l216%20400c6.7%2012.4%206.4%2027.4-.8%2039.5S486.1%20480%20472%20480H40c-14.1%200-27.2-7.4-34.4-19.5s-7.5-27.1-.8-39.5l216-400c7-12.9%2020.5-21%2035.2-21m0%20352a32%2032%200%201%200%200%2064%2032%2032%200%201%200%200-64m0-192c-18.2%200-32.7%2015.5-31.4%2033.7l7.4%20104c.9%2012.5%2011.4%2022.3%2023.9%2022.3%2012.6%200%2023-9.7%2023.9-22.3l7.4-104c1.3-18.2-13.1-33.7-31.4-33.7z%22/%3E%3C/svg%3E');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20576%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M480-16c6.9%200%2013%204.4%2015.2%2010.9l13.5%2040.4%2040.4%2013.5C555.6%2051%20560%2057.1%20560%2064s-4.4%2013-10.9%2015.2l-40.4%2013.5-13.5%2040.4c-2.2%206.5-8.3%2010.9-15.2%2010.9s-13-4.4-15.2-10.9l-13.5-40.4-40.4-13.5C404.4%2077%20400%2070.9%20400%2064s4.4-13%2010.9-15.2l40.4-13.5%2013.5-40.4C467-11.6%20473.1-16%20480-16M321.4%2097.4c12.5-12.5%2032.8-12.5%2045.3%200l80%2080c12.5%2012.5%2012.5%2032.8%200%2045.3l-10.9%2010.9c7.9%2022%2012.2%2045.7%2012.2%2070.5%200%20114.9-93.1%20208-208%20208S32%20418.9%2032%20304%20125.
1041%2096%20240%2096c24.7%200%2048.5%204.3%2070.5%2012.3zM144%20304c0-53%2043-96%2096-96%2013.3%200%2024-10.7%2024-24s-10.7-24-24-24c-79.5%200-144%2064.5-144%20144%200%2013.3%2010.7%2024%2024%2024s24-10.7%2024-24%22/%3E%3C/svg%3E');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M416%20427.4c58.5-44%2096-111.6%2096-187.4C512%20107.5%20397.4%200%20256%200S0%20107.5%200%20240c0%2075.8%2037.5%20143.4%2096%20187.4V464c0%2026.5%2021.5%2048%2048%2048h32v-40c0-13.3%2010.7-24%2024-24s24%2010.7%2024%2024v40h64v-40c0-13.3%2010.7-24%2024-24s24%2010.7%2024%2024v40h32c26.5%200%2048-21.5%2048-48zM96%20256a64%2064%200%201%201%20128%200%2064%2064%200%201%201-128%200m256-64a64%2064%200%201%201%200%20128%2064%2064%200%201%201%200-128%22/%3E%3C/svg%3E');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M352%200c0-17.7-14.3-32-32-32s-32%2014.3-32%2032v64h-96c-53%200-96%2043-96%2096v224c0%2053%2043%2096%2096%2096h256c53%200%2096-43%2096-96V160c0-53-43-96-96-96h-96zM160%20368c0-13.3%2010.7-24%2024-24h32c13.3%200%2024%2010.7%2024%2024s-10.7%2024-24%2024h-32c-13.3%200-24-10.7-24-24m120%200c0-13.3%2010.7-24%2024-24h32c13.3%200%2024%2010.7%2024%2024s-10.7%2024-24%2024h-32c-13.3%200-24-10.7-24-24m120%200c0-13.3%2010.7-24%2024-24h32c13.3%200%2024%2010.7%2024%2024s-10.7%2024-24%2024h-32c-13.3%200-24-10.7-24-24M224%20176a48%2048%200%201%201%200%2096%2048%2048%200%201%201%200-96m144%2048a48%2048%200%201%201%2096%200%2048%2048%200%201%201-96%200m-304%200c0-17.7-14.3-32-32-32S0%20206.3%200%20224v96c0%2017.7%2014.3%2032%2032%2032s32-14.3%2032-32zm544-32c-17.7%200-32%2014.3-32%2032v96c0%2017.7%2014.3%2032%2032%2032s32-14.3%2032-32v-96c0-17.7-14.3-32-32-32%22/%3E%3C/svg%3E');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M288%200H128c-17.7%200-32%2014.3-32%2032s14.3%2032%2032%2032v151.5L7.5%20426.3C2.6%20435%200%20444.7%200%20454.7%200%20486.4%2025.6%20512%2057.3%20512h333.4c31.6%200%2057.3-25.6%2057.3-57.3%200-10-2.6-19.8-7.5-28.4L320%20215.5V64c17.7%200%2032-14.3%2032-32S337.7%200%20320%200zm-96%20215.5V64h64v151.5c0%2011.1%202.9%2022.1%208.4%2031.8L306%20320H142l41.6-72.7c5.5-9.7%208.4-2
1040.6%208.4-31.8%22/%3E%3C/svg%3E');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M0%20216C0%20149.7%2053.7%2096%20120%2096h8c17.7%200%2032%2014.3%2032%2032s-14.3%2032-32%2032h-8c-30.9%200-56%2025.1-56%2056v8h64c35.3%200%2064%2028.7%2064%2064v64c0%2035.3-28.7%2064-64%2064H64c-35.3%200-64-28.7-64-64zm256%200c0-66.3%2053.7-120%20120-120h8c17.7%200%2032%2014.3%2032%2032s-14.3%2032-32%2032h-8c-30.9%200-56%2025.1-56%2056v8h64c35.3%200%2064%2028.7%2064%2064v64c0%2035.3-28.7%2064-64%2064h-64c-35.3%200-64-28.7-64-64z%22/%3E%3C/svg%3E');}</style>
105
106
107
108    
109    
110      
111    
112    
113      
114        
115        
116        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
117        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Google+Sans:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
118        <style>:root{--md-text-font:"Google Sans";--md-code-font:"Roboto Mono"}</style>
119      
120    
121    
122      <link rel="stylesheet" href="../../stylesheets/custom.css">
123    
124    
124<script>__md_scope=new URL("/",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
124
125    
126      
127  
128
129
130  
131  
132
133<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","G-ZEGTBCTMJ9"),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","G-ZEGTBCTMJ9",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=G-ZEGTBCTMJ9",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
133
134  
135    
135<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
135
136  
137
138    
139    
140  
141<meta property="og:type" content="website" />
142<meta property="og:title" content="Core Concepts - Universal Commerce Protocol (UCP)" />
143<meta property="og:description" content="The Universal Commerce Protocol (UCP) is a solution for enabling gen AI agents to make payments on behalf of users, safely, securely, and in a decentralized and privacy protecting manner. This protocol is a part of the broader ecosystem, which includes agentic protocols like A2A and MCP, and encompasses the global nature of payments.
144" />
145<meta property="og:image" content="http://ucp.dev/assets/images/social/documentation/core-concepts.png" />
146<meta property="og:image:type" content="image/png" />
147<meta property="og:image:width" content="1200" />
148<meta property="og:image:height" content="630" />
149<meta property="og:url" content="http://ucp.dev/documentation/core-concepts/" />
150<meta property="twitter:card" content="summary_large_image" />
151<meta property="twitter:title" content="Core Concepts - Universal Commerce Protocol (UCP)" />
152<meta property="twitter:description" content="The Universal Commerce Protocol (UCP) is a solution for enabling gen AI agents to make payments on behalf of users, safely, securely, and in a decentralized and privacy protecting manner. This protocol is a part of the broader ecosystem, which includes agentic protocols like A2A and MCP, and encompasses the global nature of payments.
153" />
154<meta property="twitter:image" content="http://ucp.dev/assets/images/social/documentation/core-concepts.png" />
155</head>
156  
157  
158    
159    
160      
161    
162    
163    
164    
165    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="indigo">
166  
167    
168    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
169    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
170    <label class="md-overlay" for="__drawer"></label>
171    <div data-md-component="skip">
172      
173        
174        <a href="#core-concepts" class="md-skip">
175          Skip to content
176        </a>
177      
178    </div>
179    <div data-md-component="announce">
180      
181    </div>
182    
183    
184      
185
186  
187
188<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
189  <nav class="md-header__inner md-grid" aria-label="Header">
190    <a href="/" title="Universal Commerce Protocol (UCP)" class="md-header__button md-logo" aria-label="Universal Commerce Protocol (UCP)" data-md-component="logo">
191      
192  <img src="../../assets/UCP-small.svg" alt="logo">
193
194    </a>
195    <label class="md-header__button md-icon" for="__drawer">
196      
197      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
198    </label>
199    <div class="md-header__title" data-md-component="header-title">
200      <div class="md-header__ellipsis">
201        <div class="md-header__topic">
202          <span class="md-ellipsis">
203            Universal Commerce Protocol (UCP)
204          </span>
205        </div>
206        <div class="md-header__topic" data-md-component="header-topic">
207          <span class="md-ellipsis">
208            
209              Core Concepts
210            
211          </span>
212        </div>
213      </div>
214    </div>
215    
216      
217        <form class="md-header__option" data-md-component="palette">
218  
219    
220    
221    
222    <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="indigo"  aria-hidden="true"  type="radio" name="__palette" id="__palette_0">
223    
224  
225    
226    
227    
228    <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="indigo"  aria-hidden="true"  type="radio" name="__palette" id="__palette_1">
229    
230  
231</form>
232      
233    
234    
235      
235<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
235
236    
237    
238    
239      
240      
241        <label class="md-header__button md-icon" for="__search">
242          
243          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
244        </label>
245        <div class="md-search" data-md-component="search" role="dialog">
246  <label class="md-search__overlay" for="__search"></label>
247  <div class="md-search__inner" role="search">
248    <form class="md-search__form" name="search">
249      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
250      <label class="md-search__icon md-icon" for="__search">
251        
252        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
253        
254        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
255      </label>
256      <nav class="md-search__options" aria-label="Search">
257        
258        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
259          
260          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
261        </button>
262      </nav>
263      
264    </form>
265    <div class="md-search__output">
266      <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
267        <div class="md-search-result" data-md-component="search-result">
268          <div class="md-search-result__meta">
269            Initializing search
270          </div>
271          <ol class="md-search-result__list" role="presentation"></ol>
272        </div>
273      </div>
274    </div>
275  </div>
276</div>
277      
278    
279    
280      <div class="md-header__source">
281        <a href="https://github.com/Universal-Commerce-Protocol/ucp" title="Go to repository" class="md-source" data-md-component="source">
282  <div class="md-source__icon md-icon">
283    
284    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
285  </div>
286  <div class="md-source__repository">
287    UCP on GitHub
288  </div>
289</a>
290      </div>
291    
292  </nav>
293  
294    
295      
296<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
297  <div class="md-grid">
298    <ul class="md-tabs__list">
299      
300        
301  
302  
303  
304    
305  
306  
307    
308    
309      <li class="md-tabs__item md-tabs__item--active">
310        <a href="../.." class="md-tabs__link">
311          
312  
313  
314  Overview
315
316        </a>
317      </li>
318    
319  
320
321      
322        
323  
324  
325  
326  
327    <li class="md-tabs__item">
328      <a href="/latest/specification/overview/" class="md-tabs__link">
329        
330  
331  
332    
333  
334  Specification
335
336      </a>
337    </li>
338  
339
340      
341    </ul>
342  </div>
343</nav>
344    
345  
346</header>
347    
348    <div class="md-container" data-md-component="container">
349      
350      
351        
352      
353      <main class="md-main" data-md-component="main">
354        <div class="md-main__inner md-grid">
355          
356            
357              
358              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
359                <div class="md-sidebar__scrollwrap">
360                  <div class="md-sidebar__inner">
361                    
362
363
364  
365
366
367<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
368  <label class="md-nav__title" for="__drawer">
369    <a href="/" title="Universal Commerce Protocol (UCP)" class="md-nav__button md-logo" aria-label="Universal Commerce Protocol (UCP)" data-md-component="logo">
370      
371  <img src="../../assets/UCP-small.svg" alt="logo">
372
373    </a>
374    Universal Commerce Protocol (UCP)
375  </label>
376  
377    <div class="md-nav__source">
378      <a href="https://github.com/Universal-Commerce-Protocol/ucp" title="Go to repository" class="md-source" data-md-component="source">
379  <div class="md-source__icon md-icon">
380    
381    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m
381-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
382  </div>
383  <div class="md-source__repository">
384    UCP on GitHub
385  </div>
386</a>
387    </div>
388  
389  <ul class="md-nav__list" data-md-scrollfix>
390    
391      
392      
393  
394  
395    
396  
397  
398  
399    
400    
401    
402    
403      
404        
405        
406      
407      
408    
409    
410    <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
411      
412        
413        
414        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" checked>
415        
416          
417          <label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
418            
419  
420  
421  <span class="md-ellipsis">
422    
423  
424    Overview
425  
426
427    
428  </span>
429  
430  
431
432            <span class="md-nav__icon md-icon"></span>
433          </label>
434        
435        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="true">
436          <label class="md-nav__title" for="__nav_1">
437            <span class="md-nav__icon md-icon"></span>
438            
439  
440    Overview
441  
442
443          </label>
444          <ul class="md-nav__list" data-md-scrollfix>
445            
446              
447                
448  
449  
450  
451  
452    <li class="md-nav__item">
453      <a href="../.." class="md-nav__link">
454        
455  
456  
457  <span class="md-ellipsis">
458    
459  
460    Home
461  
462
463    
464  </span>
465  
466  
467
468      </a>
469    </li>
470  
471
472              
473            
474              
475                
476  
477  
478    
479  
480  
481  
482    <li class="md-nav__item md-nav__item--active">
483      
484      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
485      
486      
487        
488      
489      
490        <label class="md-nav__link md-nav__link--active" for="__toc">
491          
492  
493  
494  <span class="md-ellipsis">
495    
496  
497    Core Concepts
498  
499
500    
501  </span>
502  
503  
504
505          <span class="md-nav__icon md-icon"></span>
506        </label>
507      
508      <a href="./" class="md-nav__link md-nav__link--active">
509        
510  
511  
512  <span class="md-ellipsis">
513    
514  
515    Core Concepts
516  
517
518    
519  </span>
520  
521  
522
523      </a>
524      
525        
526
527<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
528  
529  
530  
531    
532  
533  
534    <label class="md-nav__title" for="__toc">
535      <span class="md-nav__icon md-icon"></span>
536      Table of contents
537    </label>
538    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
539      
540        <li class="md-nav__item">
541  <a href="#high-level-architecture" class="md-nav__link">
542    <span class="md-ellipsis">
543      
544        High level architecture
545      
546    </span>
547  </a>
548  
549</li>
550      
551        <li class="md-nav__item">
552  <a href="#key-goals-of-ucp" class="md-nav__link">
553    <span class="md-ellipsis">
554      
555        Key Goals of UCP
556      
557    </span>
558  </a>
559  
560</li>
561      
562        <li class="md-nav__item">
563  <a href="#roles-participants" class="md-nav__link">
564    <span class="md-ellipsis">
565      
566        Roles &amp; Participants
567      
568    </span>
569  </a>
570  
571    <nav class="md-nav" aria-label="Roles &amp; Participants">
572      <ul class="md-nav__list">
573        
574          <li class="md-nav__item">
575  <a href="#platform-applicationagent" class="md-nav__link">
576    <span class="md-ellipsis">
577      
578        Platform (Application/Agent)
579      
580    </span>
581  </a>
582  
583</li>
584        
585          <li class="md-nav__item">
586  <a href="#business" class="md-nav__link">
587    <span class="md-ellipsis">
588      
589        Business
590      
591    </span>
592  </a>
593  
594</li>
595        
596          <li class="md-nav__item">
597  <a href="#credential-provider-cp" class="md-nav__link">
598    <span class="md-ellipsis">
599      
600        Credential Provider (CP)
601      
602    </span>
603  </a>
604  
605</li>
606        
607          <li class="md-nav__item">
608  <a href="#payment-service-provider-psp" class="md-nav__link">
609    <span class="md-ellipsis">
610      
611        Payment Service Provider (PSP)
612      
613    </span>
614  </a>
615  
616</li>
617        
618      </ul>
619    </nav>
620  
621</li>
622      
623        <li class="md-nav__item">
624  <a href="#core-concepts-summary" class="md-nav__link">
625    <span class="md-ellipsis">
626      
627        Core Concepts Summary
628      
629    </span>
630  </a>
631  
632    <nav class="md-nav" aria-label="Core Concepts Summary">
633      <ul class="md-nav__list">
634        
635          <li class="md-nav__item">
636  <a href="#capabilities" class="md-nav__link">
637    <span class="md-ellipsis">
638      
639        Capabilities
640      
641    </span>
642  </a>
643  
644</li>
645        
646          <li class="md-nav__item">
647  <a href="#extensions" class="md-nav__link">
648    <span class="md-ellipsis">
649      
650        Extensions
651      
652    </span>
653  </a>
654  
655</li>
656        
657          <li class="md-nav__item">
658  <a href="#services" class="md-nav__link">
659    <span class="md-ellipsis">
660      
661        Services
662      
663    </span>
664  </a>
665  
666</li>
667        
668      </ul>
669    </nav>
670  
671</li>
672      
673        <li class="md-nav__item">
674  <a href="#discovery-capability-negotiation" class="md-nav__link">
675    <span class="md-ellipsis">
676      
677        Discovery &amp; Capability Negotiation
678      
679    </span>
680  </a>
681  
682    <nav class="md-nav" aria-label="Discovery &amp; Capability Negotiation">
683      <ul class="md-nav__list">
684        
685          <li class="md-nav__item">
686  <a href="#capability-intersection" class="md-nav__link">
687    <span class="md-ellipsis">
688      
689        Capability Intersection
690      
691    </span>
692  </a>
693  
694</li>
695        
696          <li class="md-nav__item">
697  <a href="#profile-structure" class="md-nav__link">
698    <span class="md-ellipsis">
699      
700        Profile Structure
701      
702    </span>
703  </a>
704  
705</li>
706        
707      </ul>
708    </nav>
709  
710</li>
711      
712        <li class="md-nav__item">
713  <a href="#namespace-governance" class="md-nav__link">
714    <span class="md-ellipsis">
715      
716        Namespace Governance
717      
718    </span>
719  </a>
720  
721</li>
722      
723        <li class="md-nav__item">
724  <a href="#payment-architecture" class="md-nav__link">
725    <span class="md-ellipsis">
726      
727        Payment Architecture
728      
729    </span>
730  </a>
731  
732    <nav class="md-nav" aria-label="Payment Architecture">
733      <ul class="md-nav__list">
734        
735          <li class="md-nav__item">
736  <a href="#the-trust-triangle" class="md-nav__link">
737    <span class="md-ellipsis">
738      
739        The Trust Triangle
740      
741    </span>
742  </a>
743  
744</li>
745        
746          <li class="md-nav__item">
747  <a href="#payment-handlers" class="md-nav__link">
748    <span class="md-ellipsis">
749      
750        Payment Handlers
751      
752    </span>
753  </a>
754  
755</li>
756        
757      </ul>
758    </nav>
759  
760</li>
761      
762        <li class="md-nav__item">
763  <a href="#security-authentication" class="md-nav__link">
764    <span class="md-ellipsis">
765      
766        Security &amp; Authentication
767      
768    </span>
769  </a>
770  
771    <nav class="md-nav" aria-label="Security &amp; Authentication">
772      <ul class="md-nav__list">
773        
774          <li class="md-nav__item">
775  <a href="#identity-key-discovery" class="md-nav__link">
776    <span class="md-ellipsis">
777      
778        Identity &amp; Key Discovery
779      
780    </span>
781  </a>
782  
783</li>
784        
785          <li class="md-nav__item">
786  <a href="#authentication-mechanisms" class="md-nav__link">
787    <span class="md-ellipsis">
788      
789        Authentication Mechanisms
790      
791    </span>
792  </a>
793  
794</li>
795        
796          <li class="md-nav__item">
797  <a href="#identity-linking" class="md-nav__link">
798    <span class="md-ellipsis">
799      
800        Identity Linking
801      
802    </span>
803  </a>
804  
805</li>
806        
807      </ul>
808    </nav>
809  
810</li>
811      
812        <li class="md-nav__item">
813  <a href="#versioning" class="md-nav__link">
814    <span class="md-ellipsis">
815      
816        Versioning
817      
818    </span>
819  </a>
820  
821</li>
822      
823    </ul>
824  
825</nav>
826      
827    </li>
828  
829
830              
831            
832              
833                
834  
835  
836  
837  
838    <li class="md-nav__item">
839      <a href="http://ucp.dev/latest/specification/overview/" class="md-nav__link">
840        
841  
842  
843  <span class="md-ellipsis">
844    
845  
846    Specification
847  
848
849    
850  </span>
851  
852  
853
854      </a>
855    </li>
856  
857
858              
859            
860              
861                
862  
863  
864  
865  
866    <li class="md-nav__item">
867      <a href="../ucp-and-ap2/" class="md-nav__link">
868        
869  
870  
871  <span class="md-ellipsis">
872    
873  
874    UCP and AP2
875  
876
877    
878  </span>
879  
880  
881
882      </a>
883    </li>
884  
885
886              
887            
888              
889                
890  
891  
892  
893  
894    <li class="md-nav__item">
895      <a href="../roadmap/" class="md-nav__link">
896        
897  
898  
899  <span class="md-ellipsis">
900    
901  
902    Roadmap
903  
904
905    
906  </span>
907  
908  
909
910      </a>
911    </li>
912  
913
914              
915            
916              
917                
918  
919  
920  
921  
922    <li class="md-nav__item">
923      <a href="../schema-authoring/" class="md-nav__link">
924        
925  
926  
927  <span class="md-ellipsis">
928    
929  
930    Schema Authoring
931  
932
933    
934  </span>
935  
936  
937
938      </a>
939    </li>
940  
941
942              
943            
944              
945                
946  
947  
948  
949  
950    <li class="md-nav__item">
951      <a href="../../versioning/" class="md-nav__link">
952        
953  
954  
955  <span class="md-ellipsis">
956    
957  
958    Versioning
959  
960
961    
962  </span>
963  
964  
965
966      </a>
967    </li>
968  
969
970              
971            
972              
973                
974  
975  
976  
977  
978    <li class="md-nav__item">
979      <a href="../announcements/" class="md-nav__link">
980        
981  
982  
983  <span class="md-ellipsis">
984    
985  
986    Announcements
987  
988
989    
990  </span>
991  
992  
993
994      </a>
995    </li>
996  
997
998              
999            
1000          </ul>
1001        </nav>
1002      
1003    </li>
1004  
1005
1006    
1007      
1008      
1009  
1010  
1011  
1012  
1013    <li class="md-nav__item">
1014      <a href="/latest/specification/overview/" class="md-nav__link">
1015        
1016  
1017  
1018  <span class="md-ellipsis">
1019    
1020  
1021    Specification
1022  
1023
1024    
1025  </span>
1026  
1027  
1028
1029      </a>
1030    </li>
1031  
1032
1033    
1034  </ul>
1035</nav>
1036                  </div>
1037                </div>
1038              </div>
1039            
1040            
1041              
1042              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1043                <div class="md-sidebar__scrollwrap">
1044                  <div class="md-sidebar__inner">
1045                    
1046
1047<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1048  
1049  
1050  
1051    
1052  
1053  
1054    <label class="md-nav__title" for="__toc">
1055      <span class="md-nav__icon md-icon"></span>
1056      Table of contents
1057    </label>
1058    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1059      
1060        <li class="md-nav__item">
1061  <a href="#high-level-architecture" class="md-nav__link">
1062    <span class="md-ellipsis">
1063      
1064        High level architecture
1065      
1066    </span>
1067  </a>
1068  
1069</li>
1070      
1071        <li class="md-nav__item">
1072  <a href="#key-goals-of-ucp" class="md-nav__link">
1073    <span class="md-ellipsis">
1074      
1075        Key Goals of UCP
1076      
1077    </span>
1078  </a>
1079  
1080</li>
1081      
1082        <li class="md-nav__item">
1083  <a href="#roles-participants" class="md-nav__link">
1084    <span class="md-ellipsis">
1085      
1086        Roles &amp; Participants
1087      
1088    </span>
1089  </a>
1090  
1091    <nav class="md-nav" aria-label="Roles &amp; Participants">
1092      <ul class="md-nav__list">
1093        
1094          <li class="md-nav__item">
1095  <a href="#platform-applicationagent" class="md-nav__link">
1096    <span class="md-ellipsis">
1097      
1098        Platform (Application/Agent)
1099      
1100    </span>
1101  </a>
1102  
1103</li>
1104        
1105          <li class="md-nav__item">
1106  <a href="#business" class="md-nav__link">
1107    <span class="md-ellipsis">
1108      
1109        Business
1110      
1111    </span>
1112  </a>
1113  
1114</li>
1115        
1116          <li class="md-nav__item">
1117  <a href="#credential-provider-cp" class="md-nav__link">
1118    <span class="md-ellipsis">
1119      
1120        Credential Provider (CP)
1121      
1122    </span>
1123  </a>
1124  
1125</li>
1126        
1127          <li class="md-nav__item">
1128  <a href="#payment-service-provider-psp" class="md-nav__link">
1129    <span class="md-ellipsis">
1130      
1131        Payment Service Provider (PSP)
1132      
1133    </span>
1134  </a>
1135  
1136</li>
1137        
1138      </ul>
1139    </nav>
1140  
1141</li>
1142      
1143        <li class="md-nav__item">
1144  <a href="#core-concepts-summary" class="md-nav__link">
1145    <span class="md-ellipsis">
1146      
1147        Core Concepts Summary
1148      
1149    </span>
1150  </a>
1151  
1152    <nav class="md-nav" aria-label="Core Concepts Summary">
1153      <ul class="md-nav__list">
1154        
1155          <li class="md-nav__item">
1156  <a href="#capabilities" class="md-nav__link">
1157    <span class="md-ellipsis">
1158      
1159        Capabilities
1160      
1161    </span>
1162  </a>
1163  
1164</li>
1165        
1166          <li class="md-nav__item">
1167  <a href="#extensions" class="md-nav__link">
1168    <span class="md-ellipsis">
1169      
1170        Extensions
1171      
1172    </span>
1173  </a>
1174  
1175</li>
1176        
1177          <li class="md-nav__item">
1178  <a href="#services" class="md-nav__link">
1179    <span class="md-ellipsis">
1180      
1181        Services
1182      
1183    </span>
1184  </a>
1185  
1186</li>
1187        
1188      </ul>
1189    </nav>
1190  
1191</li>
1192      
1193        <li class="md-nav__item">
1194  <a href="#discovery-capability-negotiation" class="md-nav__link">
1195    <span class="md-ellipsis">
1196      
1197        Discovery &amp; Capability Negotiation
1198      
1199    </span>
1200  </a>
1201  
1202    <nav class="md-nav" aria-label="Discovery &amp; Capability Negotiation">
1203      <ul class="md-nav__list">
1204        
1205          <li class="md-nav__item">
1206  <a href="#capability-intersection" class="md-nav__link">
1207    <span class="md-ellipsis">
1208      
1209        Capability Intersection
1210      
1211    </span>
1212  </a>
1213  
1214</li>
1215        
1216          <li class="md-nav__item">
1217  <a href="#profile-structure" class="md-nav__link">
1218    <span class="md-ellipsis">
1219      
1220        Profile Structure
1221      
1222    </span>
1223  </a>
1224  
1225</li>
1226        
1227      </ul>
1228    </nav>
1229  
1230</li>
1231      
1232        <li class="md-nav__item">
1233  <a href="#namespace-governance" class="md-nav__link">
1234    <span class="md-ellipsis">
1235      
1236        Namespace Governance
1237      
1238    </span>
1239  </a>
1240  
1241</li>
1242      
1243        <li class="md-nav__item">
1244  <a href="#payment-architecture" class="md-nav__link">
1245    <span class="md-ellipsis">
1246      
1247        Payment Architecture
1248      
1249    </span>
1250  </a>
1251  
1252    <nav class="md-nav" aria-label="Payment Architecture">
1253      <ul class="md-nav__list">
1254        
1255          <li class="md-nav__item">
1256  <a href="#the-trust-triangle" class="md-nav__link">
1257    <span class="md-ellipsis">
1258      
1259        The Trust Triangle
1260      
1261    </span>
1262  </a>
1263  
1264</li>
1265        
1266          <li class="md-nav__item">
1267  <a href="#payment-handlers" class="md-nav__link">
1268    <span class="md-ellipsis">
1269      
1270        Payment Handlers
1271      
1272    </span>
1273  </a>
1274  
1275</li>
1276        
1277      </ul>
1278    </nav>
1279  
1280</li>
1281      
1282        <li class="md-nav__item">
1283  <a href="#security-authentication" class="md-nav__link">
1284    <span class="md-ellipsis">
1285      
1286        Security &amp; Authentication
1287      
1288    </span>
1289  </a>
1290  
1291    <nav class="md-nav" aria-label="Security &amp; Authentication">
1292      <ul class="md-nav__list">
1293        
1294          <li class="md-nav__item">
1295  <a href="#identity-key-discovery" class="md-nav__link">
1296    <span class="md-ellipsis">
1297      
1298        Identity &amp; Key Discovery
1299      
1300    </span>
1301  </a>
1302  
1303</li>
1304        
1305          <li class="md-nav__item">
1306  <a href="#authentication-mechanisms" class="md-nav__link">
1307    <span class="md-ellipsis">
1308      
1309        Authentication Mechanisms
1310      
1311    </span>
1312  </a>
1313  
1314</li>
1315        
1316          <li class="md-nav__item">
1317  <a href="#identity-linking" class="md-nav__link">
1318    <span class="md-ellipsis">
1319      
1320        Identity Linking
1321      
1322    </span>
1323  </a>
1324  
1325</li>
1326        
1327      </ul>
1328    </nav>
1329  
1330</li>
1331      
1332        <li class="md-nav__item">
1333  <a href="#versioning" class="md-nav__link">
1334    <span class="md-ellipsis">
1335      
1336        Versioning
1337      
1338    </span>
1339  </a>
1340  
1341</li>
1342      
1343    </ul>
1344  
1345</nav>
1346                  </div>
1347                </div>
1348              </div>
1349            
1350          
1351          
1352            <div class="md-content" data-md-component="content">
1353              
1354              <article class="md-content__inner md-typeset">
1355                
1356                  
1357
1358
1359  
1360  
1361
1362
1363<!--
1364   Copyright 2026 UCP Authors
1365
1366   Licensed under the Apache License, Version 2.0 (the "License");
1367   you may not use this file except in compliance with the License.
1368   You may obtain a copy of the License at
1369
1370       http://www.apache.org/licenses/LICENSE-2.0
1371
1372   Unless required by applicable law or agreed to in writing, software
1373   distributed under the License is distributed on an "AS IS" BASIS,
1374   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1375   See the License for the specific language governing permissions and
1376   limitations under the License.
1377-->
1378
1379<h1 id="core-concepts">Core Concepts<a class="headerlink" href="#core-concepts" title="Permanent link">&para;</a></h1>
1380<p>The Universal Commerce Protocol (UCP) is an open standard for interoperability
1381between commerce entities. It defines a common language and functional
1382primitives so that platforms and businesses can interoperate securely and
1383reliably across commercial verticals.</p>
1384<p>This document provides the detailed technical specification for UCP.
1385For a complete definition of all data models and schemas, see the
1386<a href="/latest/specification/reference/">Schema Reference</a>.</p>
1387<div class="admonition note">
1388<p class="admonition-title">Terminology</p>
1389<p>Throughout this documentation, <strong>Platform</strong> refers to any entity that
1390<em>consumes</em> capabilities — an app, an AI agent, a procurement system, or
1391another business. <strong>Business</strong> refers to any entity that <em>exposes</em>
1392capabilities — a retailer, a supplier, a service provider, or any other
1393participant offering commerce functionality. These roles are defined by
1394direction of capability flow, not by industry vertical, making UCP equally
1395applicable to B2C, B2B, and agent-to-agent commerce.</p>
1396</div>
1397<p>Its primary goal is to enable:</p>
1398<ul>
1399<li><strong>Platforms:</strong> To dynamically discover and consume the capabilities a
1400    business exposes.</li>
1401<li><strong>Businesses:</strong> To declare what they offer and how they operate — once —
1402    and have any compatible platform discover and use it without bespoke
1403    integrations.</li>
1404<li><strong>Payment &amp; Credential Providers:</strong> To expose their services —
1405    tokenization, vaulting, credential issuance — once, and power secure
1406    commerce for users across any compatible platform and business.</li>
1407</ul>
1408<h2 id="high-level-architecture">High level architecture<a class="headerlink" href="#high-level-architecture" title="Permanent link">&para;</a></h2>
1409<!-- Responsive image: shows ucp-diagram-mobile.jpg on small screens (<=600px)
1410     and ucp-diagram.jpg on larger screens. -->
1411<p><picture>
1412  <source media="(max-width: 600px)" srcset="/assets/ucp-diagram-mobile.jpg">
1413  <img alt="UCP Diagram" src="/assets/ucp-diagram.jpg">
1414</picture></p>
1415<h2 id="key-goals-of-ucp">Key Goals of UCP<a class="headerlink" href="#key-goals-of-ucp" title="Permanent link">&para;</a></h2>
1416<ul>
1417<li><strong>Interoperability:</strong> Bridge the gap between platforms, businesses,
1418    and payment ecosystems.</li>
1419<li><strong>Discovery:</strong> Allow platforms to dynamically discover what
1420    capabilities a business supports (e.g., "Do they support checkout?",
1421    "Do they support fulfillment options or identity linking?").</li>
1422<li><strong>Security:</strong> Facilitate secure, standards-based (OAuth 2.0, PCI-DSS
1423    compliant patterns) exchanges of sensitive user and payment data.</li>
1424<li><strong>Agentic Commerce:</strong> Enable AI agents to act on behalf of varied principals
1425    (an individual, organization, or another agent) and support different
1426    modalities (human-in-the-loop, fully autonomous).</li>
1427</ul>
1428<h2 id="roles-participants">Roles &amp; Participants<a class="headerlink" href="#roles-participants" title="Permanent link">&para;</a></h2>
1429<p>UCP defines the interactions between four distinct actors, each playing
1430a specific role in the interaction lifecycle.</p>
1431<h3 id="platform-applicationagent">Platform (Application/Agent)<a class="headerlink" href="#platform-applicationagent" title="Permanent link">&para;</a></h3>
1432<p>
1432The platform is any entity that consumes capabilities exposed by a business —
1433an AI agent, a mobile app, a procurement system, or another business acting
1434as a capability consumer. It orchestrates the interaction by discovering what
1435the business supports and invoking the appropriate capabilities on behalf of
1436its principal (a user, an automated process, or another system).</p>
1437<ul>
1438<li><strong>Responsibilities:</strong> Discovering business capabilities via profiles,
1439    initiating and managing capability sessions, and acting on behalf of its
1440    principal within the bounds of negotiated capabilities.</li>
1441<li><strong>Examples:</strong> AI Shopping Assistants, Super Apps, Search Engines,
1442    B2B Procurement Systems.</li>
1443</ul>
1444<h3 id="business">Business<a class="headerlink" href="#business" title="Permanent link">&para;</a></h3>
1445<p>The entity exposing capabilities. In transactional contexts, the business
1446typically acts as the <strong>Merchant of Record (MoR)</strong>, retaining financial
1447liability and ownership of the transaction — though UCP's capability model
1448is not limited to transactional use cases.</p>
1449<ul>
1450<li><strong>Responsibilities:</strong> Publishing a UCP profile, declaring supported
1451    services, capabilities and extensions, processing capability invocations
1452    which may be stateful or stateless.</li>
1453<li><strong>Examples:</strong> Retailers, Airlines, Hotel Chains, Service Providers,
1454    Suppliers, Distributors.</li>
1455</ul>
1456<h3 id="credential-provider-cp">Credential Provider (CP)<a class="headerlink" href="#credential-provider-cp" title="Permanent link">&para;</a></h3>
1457<p>A trusted entity responsible for securely managing and sharing sensitive user
1458data, particularly payment instruments and shipping addresses.</p>
1459<ul>
1460<li><strong>Responsibilities:</strong> Authenticating the user, issuing payment tokens (to
1461    keep raw card data off the platform), and holding PII securely to minimize
1462    compliance scope for other parties.</li>
1463<li><strong>Examples:</strong> Digital Wallets (e.g., Google Wallet, Apple Pay), Identity
1464    Providers.</li>
1465</ul>
1466<h3 id="payment-service-provider-psp">Payment Service Provider (PSP)<a class="headerlink" href="#payment-service-provider-psp" title="Permanent link">&para;</a></h3>
1467<p>The financial infrastructure provider that processes payments on behalf of
1468businesses.</p>
1469<ul>
1470<li><strong>Responsibilities:</strong> Authorizing and capturing transactions, handling
1471    settlements, and communicating with card networks. The PSP often interacts
1472    directly with tokens provided by the Credential Provider.</li>
1473<li><strong>Examples:</strong> Stripe, Adyen, PayPal, Braintree, Chase Paymentech.</li>
1474</ul>
1475<h2 id="core-concepts-summary">Core Concepts Summary<a class="headerlink" href="#core-concepts-summary" title="Permanent link">&para;</a></h2>
1476<p>UCP revolves around three fundamental constructs that define how entities
1477interact.</p>
1478<h3 id="capabilities">Capabilities<a class="headerlink" href="#capabilities" title="Permanent link">&para;</a></h3>
1479<p>Capabilities are discrete, versioned features that a Business declares it
1480supports. They are the "verbs" of the protocol — units of functionality that
1481Platforms can discover, negotiate, and invoke.</p>
1482<p>Each capability is identified by a reverse-domain name (e.g.,
1483<code>dev.ucp.shopping.checkout</code>) and carries a date-based version. Capabilities
1484are declared in the Business's UCP profile at <code>/.well-known/ucp</code>, negotiated
1485by exact version, and confirmed in every response so that the Platform always
1486knows the active feature set for a given interaction. UCP-authored <code>dev.ucp.*</code>
1487capabilities and extensions are versioned in lockstep with the specification:
1488each declares the date <code>D</code> of the UCP release it ships in. Third-party
1489extensions publish versions on their own cadence.</p>
1490<p>The following are examples of capabilities defined in UCP — see the
1491<a href="/latest/specification/overview/">Specification</a> for the authoritative and
1492up-to-date list.</p>
1493<table>
1494<thead>
1495<tr>
1496<th style="text-align: left;">Capability</th>
1497<th style="text-align: left;">Description</th>
1498</tr>
1499</thead>
1500<tbody>
1501<tr>
1502<td style="text-align: left;"><code>dev.ucp.shopping.checkout</code></td>
1503<td style="text-align: left;">Initiates and completes purchase sessions</td>
1504</tr>
1505<tr>
1506<td style="text-align: left;"><code>dev.ucp.shopping.cart</code></td>
1507<td style="text-align: left;">Pre-checkout cart management</td>
1508</tr>
1509<tr>
1510<td style="text-align: left;"><code>dev.ucp.shopping.catalog.search</code></td>
1511<td style="text-align: left;">Search across a business catalog</td>
1512</tr>
1513<tr>
1514<td style="text-align: left;"><code>dev.ucp.shopping.catalog.lookup</code></td>
1515<td style="text-align: left;">Retrieve a specific product by ID</td>
1516</tr>
1517<tr>
1518<td style="text-align: left;"><code>dev.ucp.shopping.order</code></td>
1519<td style="text-align: left;">Order lifecycle events</td>
1520</tr>
1521<tr>
1522<td style="text-align: left;"><code>dev.ucp.shopping.permalink</code></td>
1523<td style="text-align: left;">Shareable links to pre-populated carts and products</td>
1524</tr>
1525<tr>
1526<td style="text-align: left;"><code>dev.ucp.common.identity_linking</code></td>
1527<td style="text-align: left;">OAuth-based account linking</td>
1528</tr>
1529<tr>
1530<td style="text-align: left;"><code>dev.ucp.common.location.search</code></td>
1531<td style="text-align: left;">Search for physical stores and pickup locations</td>
1532</tr>
1533<tr>
1534<td style="text-align: left;"><code>dev.ucp.common.location.lookup</code></td>
1535<td style="text-align: left;">Retrieve location details, operating hours, and amenities</td>
1536</tr>
1537<tr>
1538<td style="text-align: left;"><code>dev.ucp.lodging.booking</code></td>
1539<td style="text-align: left;">Initiates and completes booking session for hotels</td>
1540</tr>
1541</tbody>
1542</table>
1543<h3 id="extensions">Extensions<a class="headerlink" href="#extensions" title="Permanent link">&para;</a></h3>
1544<p>Extensions optionally augment a base capability. They use the
1545<code>extends</code> field to declare their parent(s) and compose onto the base schema
1546using JSON Schema <code>allOf</code>. Extensions appear in <code>ucp.capabilities{}</code> alongside
1547core capabilities.</p>
1548<!-- ucp:example schema=profile def=business_schema target=$.ucp.capabilities -->
1549<div class="language-json highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="p">{</span>
1550</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w">  </span><span class="nt">&quot;dev.ucp.shopping.fulfillment&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
1551</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="w">    </span><span class="p">{</span>
1552</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="w">      </span><span class="nt">&quot;version&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;draft&quot;</span><span class="p">,</span>
1553</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="w">      </span><span class="nt">&quot;extends&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;dev.ucp.shopping.checkout&quot;</span><span class="p">,</span>
1554</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="w">      </span><span class="nt">&quot;spec&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://ucp.dev/draft/specification/shopping/extensions/fulfillment&quot;</span><span class="p">,</span>
1555</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="w">      </span><span class="nt">&quot;schema&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://ucp.dev/draft/schemas/shopping/fulfillment.json&quot;</span>
1556</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="w">    </span><span class="p">}</span>
1557</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="w">  </span><span class="p">]</span>
1558</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="p">}</span>
1559</span></code></pre></div>
1560<p>An extension that declares <code>extends</code> without its parent in the negotiated
1561intersection is automatically pruned. This ensures extension coherence —
1562you never activate a discount extension without the checkout it extends.</p>
1563<p>The following are examples of extensions defined in UCP — see the
1564<a href="/latest/specification/overview/">Specification</a> for the authoritative and
1565up-to-date list.</p>
1566<table>
1567<thead>
1568<tr>
1569<th style="text-align: left;">Extension</th>
1570<th style="text-align: left;">Extends</th>
1571<th style="text-align: left;">Description</th>
1572</tr>
1573</thead>
1574<tbody>
1575<tr>
1576<td style="text-align: left;"><code>dev.ucp.shopping.discount</code></td>
1577<td style="text-align: left;">checkout, cart</td>
1578<td style="text-align: left;">Discount codes and promotions</td>
1579</tr>
1580<tr>
1581<td style="text-align: left;"><code>dev.ucp.shopping.fulfillment</code></td>
1582<td style="text-align: left;">checkout</td>
1583<td style="text-align: left;">Shipping and delivery options</td>
1584</tr>
1585<tr>
1586<td style="text-align: left;"><code>
1586dev.ucp.shopping.buyer_consent</code></td>
1587<td style="text-align: left;">checkout, cart</td>
1588<td style="text-align: left;">Explicit consent capture</td>
1589</tr>
1590<tr>
1591<td style="text-align: left;"><code>dev.ucp.common.loyalty</code></td>
1592<td style="text-align: left;">checkout, cart, catalog</td>
1593<td style="text-align: left;">Member benefits, rewards, and points earning</td>
1594</tr>
1595<tr>
1596<td style="text-align: left;"><code>dev.ucp.common.payment.authentication</code></td>
1597<td style="text-align: left;">checkout</td>
1598<td style="text-align: left;">Browser-surface device data collection and 3DS challenges</td>
1599</tr>
1600<tr>
1601<td style="text-align: left;"><code>dev.ucp.common.payment.ap2_mandate</code></td>
1602<td style="text-align: left;">checkout</td>
1603<td style="text-align: left;">Non-repudiable authorization for autonomous commerce</td>
1604</tr>
1605<tr>
1606<td style="text-align: left;"><code>dev.ucp.common.payment.split_payments</code></td>
1607<td style="text-align: left;">checkout</td>
1608<td style="text-align: left;">Multi-instrument allocation and split settlements</td>
1609</tr>
1610<tr>
1611<td style="text-align: left;"><code>dev.ucp.common.payment.terms</code></td>
1612<td style="text-align: left;">checkout</td>
1613<td style="text-align: left;">Deposits, installments, and deferred payment schedules</td>
1614</tr>
1615</tbody>
1616</table>
1617<h3 id="services">Services<a class="headerlink" href="#services" title="Permanent link">&para;</a></h3>
1618<p><strong>Services</strong> group the operations and events for a vertical or common domain under a
1619reverse-domain registry key (e.g., <code>dev.ucp.shopping</code>, <code>dev.ucp.common</code>). The key identifies the
1620service: a service declares <em>what</em> functionality exists for that vertical or domain, and
1621each entry in its array declares <em>how</em> it is accessed over a transport binding.</p>
1622<p>A single service can be accessed via multiple transport bindings:</p>
1623<table>
1624<thead>
1625<tr>
1626<th style="text-align: left;">Transport</th>
1627<th style="text-align: left;">Format</th>
1628<th style="text-align: left;">Best For</th>
1629</tr>
1630</thead>
1631<tbody>
1632<tr>
1633<td style="text-align: left;"><strong>REST</strong></td>
1634<td style="text-align: left;">OpenAPI 3.1.0</td>
1635<td style="text-align: left;">Standard server-to-server integrations</td>
1636</tr>
1637<tr>
1638<td style="text-align: left;"><strong>MCP</strong></td>
1639<td style="text-align: left;">OpenRPC</td>
1640<td style="text-align: left;">AI agents via Model Context Protocol</td>
1641</tr>
1642<tr>
1643<td style="text-align: left;"><strong>A2A</strong></td>
1644<td style="text-align: left;">Agent Card</td>
1645<td style="text-align: left;">Agent-to-Agent protocol integrations</td>
1646</tr>
1647<tr>
1648<td style="text-align: left;"><strong>Embedded</strong></td>
1649<td style="text-align: left;">OpenRPC</td>
1650<td style="text-align: left;">Embedded integrations</td>
1651</tr>
1652</tbody>
1653</table>
1654<p>A Business declares which transport bindings it supports within each service;
1655Platforms pick whichever fits their context — an AI agent may prefer MCP, a
1656traditional web app may use REST. Every UCP-defined service declares an explicit
1657<code>version</code> equal to the selected <code>ucp.version</code>, repeated on every entry since they
1658differ only by transport binding. Transport bindings have no separate version.</p>
1659<p>Service namespaces are also UCP's extensibility mechanism for new verticals.
1660Businesses opt in by declaring which services they support.</p>
1661<h2 id="discovery-capability-negotiation">Discovery &amp; Capability Negotiation<a class="headerlink" href="#discovery-capability-negotiation" title="Permanent link">&para;</a></h2>
1662<p>UCP uses a profile-based discovery model. Every business publishes a
1663machine-readable profile at <code>/.well-known/ucp</code> that declares which services,
1664capabilities, and payment handlers they support. Platforms advertise their
1665own profile URL on each request via the <code>UCP-Agent</code> header.</p>
1666<div class="language-text highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>POST /checkout-sessions HTTP/1.1
1667</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>UCP-Agent: profile=&quot;
1667https://agent.example/profiles/shopping-agent.json&quot;
1668</span></code></pre></div>
1669<p>This design enables <strong>permissionless onboarding</strong> — any platform with a
1670discoverable profile can interact with any business without prior registration.
1671Businesses may additionally establish trust with known platforms through
1672out-of-band onboarding &amp; verification mechanisms (API keys, OAuth
1673credentials, mTLS certificates).</p>
1674<h3 id="capability-intersection">Capability Intersection<a class="headerlink" href="#capability-intersection" title="Permanent link">&para;</a></h3>
1675<p>Capability negotiation follows a <strong>server-selects</strong> architecture. The business
1676determines the active capabilities by computing the intersection of its own
1677declared capabilities with those in the platform's profile:</p>
1678<ol>
1679<li><strong>Intersect by name</strong> — Only capabilities both parties declare are
1680   candidates.</li>
1681<li><strong>Select version</strong> — For each matched capability, compute the set of
1682   versions present in both the business and platform arrays. Select the
1683   highest (latest date). If no mutual version exists, exclude the capability.</li>
1684<li><strong>Prune orphaned extensions</strong> — Extensions are removed if <strong>none</strong> of their
1685   parent capabilities are in the intersection. Pruning repeats until stable
1686   (handles chains).</li>
1687</ol>
1688<p>The result is a minimal, mutually compatible capability set. Businesses
1689include the active capabilities in every response so platforms always know
1690which features apply to a given interaction.</p>
1691<h3 id="profile-structure">Profile Structure<a class="headerlink" href="#profile-structure" title="Permanent link">&para;</a></h3>
1692<p>Both business and platform profiles share a common base structure — a <code>ucp</code>
1693object declaring protocol version, services, capabilities, and payment handlers,
1694alongside a <code>keys</code> array of JWK public keys (a valid
1695<a href="https://datatracker.ietf.org/doc/html/rfc7517">RFC 7517</a> JWK Set,
1696reusable as a Web Bot Auth key source). The <code>ucp</code> object differs
1697between the two: the business profile uses a business-specific schema
1698(hosted at
1699<code>/.well-known/ucp</code>), while the platform profile uses a platform-specific schema
1700(hosted at a URI the platform advertises per-request). This dual-purpose profile
1701— capabilities <em>and</em> keys in a single document — means discovery and
1702authentication are resolved together.</p>
1703<!-- ucp:example schema=profile def=business_schema -->
1704<div class="language-json highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="p">{</span>
1705</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w">  </span><span class="nt">&quot;ucp&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
1706</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w">    </span><span class="nt">&quot;version&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;draft&quot;</span><span class="p">,</span>
1707</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w">    </span><span class="nt">&quot;services&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
1708</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="w">      </span><span class="nt">&quot;dev.ucp.shopping&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
1709</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="w">        </span><span class="p">{</span>
1710</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a><span class="w">          </span><span class="nt">&quot;version&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;draft&quot;</span><span class="p">,</span>
1711</span><span id="__span-2-8"><a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a><span class="w">          </span><span class="nt">&quot;spec&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://ucp.dev/draft/specification/overview/&quot;</span><span class="p">,</span>
1712</span><span id="__span-2-9"><a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a><span class="w">          </span><span class="nt">&quot;transport&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;rest&quot;</span><span class="p">,</span>
1713</span><span id="__span-2-10"><a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a><span class="w">          </span><span class="nt">&quot;schema&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://ucp.dev/draft/services/shopping/rest.openapi.json&quot;</span><span class="p">,</span>
1714</span><span id="__span-2-11"><a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a><span class="w">          </span><span class="nt">&quot;endpoint&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://business.example.com/ucp/v1&quot;</span>
1715</span><span id="__span-2-12"><a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a><span class="w">        </span><span class="p">}</span>
1716</span><span id="__span-2-13"><a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a><span class="w">      </span><span class="p">]</span>
1717</span><span id="__span-2-14"><a id="__codelineno-2-14" name="__codelineno-2-14" href="#__codelineno-2-14"></a><span class="w">    </span><span class="p">},</span>
1718</span><span id="__span-2-15"><a id="__codelineno-2-15" name="__codelineno-2-15" href="#__codelineno-2-15"></a><span class="w">    </span><span class="nt">&quot;capabilities&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
1719</span><span id="__span-2-16"><a id="__codelineno-2-16" name="__codelineno-2-16" href="#__codelineno-2-16"></a><span class="w">      </span><span class="nt">&quot;dev.ucp.shopping.checkout&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">
1719[{</span>
1720</span><span id="__span-2-17"><a id="__codelineno-2-17" name="__codelineno-2-17" href="#__codelineno-2-17"></a><span class="w">        </span><span class="nt">&quot;version&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;draft&quot;</span><span class="p">,</span>
1721</span><span id="__span-2-18"><a id="__codelineno-2-18" name="__codelineno-2-18" href="#__codelineno-2-18"></a><span class="w">        </span><span class="nt">&quot;spec&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://ucp.dev/draft/specification/shopping/checkout&quot;</span><span class="p">,</span>
1722</span><span id="__span-2-19"><a id="__codelineno-2-19" name="__codelineno-2-19" href="#__codelineno-2-19"></a><span class="w">        </span><span class="nt">&quot;schema&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://ucp.dev/draft/schemas/shopping/checkout.json&quot;</span>
1723</span><span id="__span-2-20"><a id="__codelineno-2-20" name="__codelineno-2-20" href="#__codelineno-2-20"></a><span class="w">      </span><span class="p">}],</span>
1724</span><span id="__span-2-21"><a id="__codelineno-2-21" name="__codelineno-2-21" href="#__codelineno-2-21"></a><span class="w">      </span><span class="nt">&quot;dev.ucp.shopping.fulfillment&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[{</span>
1725</span><span id="__span-2-22"><a id="__codelineno-2-22" name="__codelineno-2-22" href="#__codelineno-2-22"></a><span class="w">        </span><span class="nt">&quot;version&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;draft&quot;</span><span class="p">,</span>
1726</span><span id="__span-2-23"><a id="__codelineno-2-23" name="__codelineno-2-23" href="#__codelineno-2-23"></a><span class="w">        </span><span class="nt">&quot;spec&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://ucp.dev/draft/specification/shopping/extensions/fulfillment&quot;</span><span class="p">,</span>
1727</span><span id="__span-2-24"><a id="__codelineno-2-24" name="__codelineno-2-24" href="#__codelineno-2-24"></a><span class="w">        </span><span class="nt">&quot;schema&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://ucp.dev/draft/schemas/shopping/fulfillment.json&quot;</span><span class="p">,</span>
1728</span><span id="__span-2-25"><a id="__codelineno-2-25" name="__codelineno-2-25" href="#__codelineno-2-25"></a><span class="w">        </span><span class="nt">&quot;extends&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;dev.ucp.shopping.checkout&quot;</span>
1729</span><span id="__span-2-26"><a id="__codelineno-2-26" name="__codelineno-2-26" href="#__codelineno-2-26"></a><span class="w">      </span><span class="p">}]</span>
1730</span><span id="__span-2-27"><a id="__codelineno-2-27" name="__codelineno-2-27" href="#__codelineno-2-27"></a><span class="w">    </span><span class="p">},</span>
1731</span><span id="__span-2-28"><a id="__codelineno-2-28" name="__codelineno-2-28" href="#__codelineno-2-28"></a><span class="w">    </span><span class="nt">&quot;payment_handlers&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
1732</span><span id="__span-2-29"><a id="__codelineno-2-29" name="__codelineno-2-29" href="#__codelineno-2-29"></a><span class="w">      </span><span class="nt">&quot;com.example.processor_tokenizer&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[{</span>
1733</span><span id="__span-2-30"><a id="__codelineno-2-30" name="__codelineno-2-30" href="#__codelineno-2-30"></a><span class="w">        </span><span class="nt">&quot;id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;processor_tokenizer&quot;</span><span class="p">,</span>
1734</span><span id="__span-2-31"><a id="__codelineno-2-31" name="__codelineno-2-31" href="#__codelineno-2-31"></a><span class="w">        </span><span class="nt">&quot;version&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;draft&quot;</span><span class="p">,</span>
1735</span><span id="__span-2-32"><a id="__codelineno-2-32" name="__codelineno-2-32" href="#__codelineno-2-32"></a><span class="w">        </span><span class="nt">&quot;spec&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://example.com/specs/payments/processor_tokenizer&quot;</span><span class="p">,</span>
1736</span><span id="__span-2-33"><a id="__codelineno-2-33" name="__codelineno-2-33" href="#__codelineno-2-33"></a><span class="w">        </span><span class="nt">&quot;schema&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://example.com/specs/payments/merchant_tokenizer.json&quot;</span>
1737</span><span id="__span-2-34"><a id="__codelineno-2-34" name="__codelineno-2-34" href="#__codelineno-2-34"></a><span class="w">      </span><span class="p">}]</span>
1738</span><span id="__span-2-35"><a id="__codelineno-2-35" name="__codelineno-2-35" href="#__codelineno-2-35"></a><span class="w">    </span><span class="p">}</span>
1739</span><span id="__span-2-36"><a id="__codelineno-2-36" name="__codelineno-2-36" href="#__codelineno-2-36"></a><span class="w">  </span><span class="p">},</span>
1740</span><span id="__span-2-37"><a id="__codelineno-2-37" name="__codelineno-2-37" href="#__codelineno-2-37"></a><span class="w">  </span><span class="nt">&quot;keys&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">
1740[{</span><span class="w"> </span><span class="nt">&quot;kid&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;key_2026&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;kty&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;EC&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;crv&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;P-256&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;x&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;WbbXwVYGdJoP4Xm3qCkGvBRcRvKtEfXDbWvPzpPS8LA&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;y&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;sP4jHHxYqC89HBo8TjrtVOAGHfJDflYxw7MFMxuFMPY&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;alg&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ES256&quot;</span><span class="w"> </span><span class="p">}]</span>
1741</span><span id="__span-2-38"><a id="__codelineno-2-38" name="__codelineno-2-38" href="#__codelineno-2-38"></a><span class="p">}</span>
1742</span></code></pre></div>
1743<h2 id="namespace-governance">Namespace Governance<a class="headerlink" href="#namespace-governance" title="Permanent link">&para;</a></h2>
1744<p>UCP uses reverse-domain naming to embed governance authority directly into its
1745reverse-domain identifiers. This eliminates the need for a central registry —
1746domain owners control their own namespace.</p>
1747<div class="language-text highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>{reverse-domain}.{service}.{capability}
1748</span></code></pre></div>
1749<table>
1750<thead>
1751<tr>
1752<th style="text-align: left;">Name</th>
1753<th style="text-align: left;">Authority</th>
1754<th style="text-align: left;">Who governs</th>
1755</tr>
1756</thead>
1757<tbody>
1758<tr>
1759<td style="text-align: left;"><code>dev.ucp.shopping.checkout</code></td>
1760<td style="text-align: left;">ucp.dev</td>
1761<td style="text-align: left;">UCP governing body</td>
1762</tr>
1763<tr>
1764<td style="text-align: left;"><code>dev.shopify.catalog</code></td>
1765<td style="text-align: left;">shopify.dev</td>
1766<td style="text-align: left;">Shopify</td>
1767</tr>
1768<tr>
1769<td style="text-align: left;"><code>com.example.payments.installments</code></td>
1770<td style="text-align: left;">example.com</td>
1771<td style="text-align: left;">example.com</td>
1772</tr>
1773</tbody>
1774</table>
1775<p>Reverse-domain names are used both as collision-safe <strong>identifiers</strong> (keys and
1776references) and by <strong>entities</strong> — capabilities, services, and payment
1777handlers — that declare a <code>schema</code> URL. An entity's <code>schema</code> URL must
1778originate from its namespace authority domain. This guarantees
1779<strong>provenance</strong> — that the reverse-domain name is controlled by the domain
1780owner — not that the entity is trustworthy; whether to trust or support it
1781remains the client's decision.</p>
1782<p>Platforms <strong>MUST</strong> validate this binding for declared <code>schema</code> URLs and <strong>MUST</strong>
1783reject entities that fail it. Identifiers carry no fetched URL, and the <code>spec</code>
1784(documentation) URL is not authority-bound (any <code>https</code> origin). See
1785<a href="/latest/specification/overview/#authority-binding">Authority Binding</a> for the
1786normative algorithm.</p>
1787<p>The <code>dev.ucp.*</code> namespace is reserved exclusively for capabilities governed by
1788the UCP Tech Council responsible for the capability's domain. Any vendor can
1789define and publish capabilities under their own domain — <code>org.acme.*</code> — without
1790UCP maintainer approval. Vendor capabilities follow the same extension model,
1791meaning they can extend UCP base capabilities (e.g., <code>org.acme.loyalty</code>
1792extending <code>dev.ucp.shopping.checkout</code>) or define entirely new ones. Because
1793negotiation is always opt-in, vendor capabilities only activate when both parties
1794declare them, keeping the protocol decentralized by design.</p>
1795<h2 id="payment-architecture">Payment Architecture<a class="headerlink" href="#payment-architecture" title="Permanent link">&para;</a></h2>
1796<p>UCP decouples payment instrument acceptance from payment processing to solve
1797the N-to-N complexity problem between platforms, businesses, and payment
1798processors.</p>
1799<h3 id="the-trust-triangle">The Trust Triangle<a class="headerlink" href="#the-trust-triangle" title="Permanent link">&para;</a></h3>
1800<p>In this section, "Payment Credential Provider" refers to the CP and/or PSP
1801roles defined above; depending on the payment handler, they may be the same
1802entity or distinct.</p>
1803<p>The payment model is built on three bilateral trust relationships:</p>
1804<ol>
1805<li><strong>Business ↔ Payment Credential Provider</strong> — A pre-existing legal and
1806   technical relationship; the business holds API keys and a contract with
1807   the payment credential provider.</li>
1808<li><strong>Platform ↔ Payment Credential Provider</strong> — The platform interacts with
1809   the payment credential provider's interface (e.g., an iframe or API) to
1810   tokenize data, but is not the "owner" of the funds.</li>
1811<li><strong>Platform ↔ Business</strong> — The platform passes the result (a token or
1812   mandate) to the business to finalize the order.</li>
1813</ol>
1814<p>Credentials flow <strong>platform → business</strong> only; businesses <strong>MUST NOT</strong> echo
1815credentials back in responses.</p>
1816<h3 id="payment-handlers">Payment Handlers<a class="headerlink" href="#payment-handlers" title="Permanent link">&para;</a></h3>
1817<p>Payment Handlers are <strong>specifications</strong>, not entities. They define how a
1818particular payment instrument is acquired and processed. The distinction:</p>
1819<ul>
1820<li><strong>Credential Provider (CP) / PSP</strong> — The participant(s) that issue tokens
1821  and process payments. Depending on the handler, these may be the same
1822  entity or separate ones (e.g., Google Pay tokenizes; the business's PSP
1823  processes).</li>
1824<li><strong>Payment Handler</strong> — The specification that defines the protocol
1825  (e.g., <code>com.google.pay</code>, <code>dev.shopify.shop_pay</code>)</li>
1826</ul>
1827<p>The 3-step payment lifecycle:</p>
1828<ol>
1829<li><strong>Negotiation</strong> — The business advertises available payment handlers in its
1830   profile and checkout response based on contents and negotiated
1831   properties of the checkout.</li>
1832<li><strong>Acquisition</strong> — The platform executes the handler's logic to acquire a
1833   payment instrument (token or encrypted payload) directly from the CP.</li>
1834<li><strong>Completion</strong> — The platform submits the instrument to the business, which
1835   charges funds via its PSP integration.</li>
1836</ol>
1837<h2 id="security-authentication">Security &amp; Authentication<a class="headerlink" href="#security-authentication" title="Permanent link">&para;</a></h2>
1838<h3 id="identity-key-discovery">Identity &amp; Key Discovery<a class="headerlink" href="#identity-key-discovery" title="Permanent link">&para;</a></h3>
1839<p>UCP profiles serve a dual purpose: declaring capabilities <strong>and</strong> publishing
1840signing keys. Both parties resolve keys from the same profile document used for
1841capability negotiation, eliminating a separate key management step.</p>
1842<p>Key lookup:</p>
1843<ol>
1844<li>Obtain the signer's profile URL (from <code>UCP-Agent</code> header or
1845   <code>/.well-known/ucp</code>).</li>
1846<li>Fetch and cache the profile.</li>
1847<li>Match the <code>keyid</code> from <code>Signature-Input</code> to a <code>kid</code> in <code>keys[]</code>.</li>
1848<li>Verify the signature using the corresponding public key.</li>
1849</ol>
1850<h3 id="authentication-mechanisms">Authentication Mechanisms<a class="headerlink" href="#authentication-mechanisms" title="Permanent link">&para;</a></h3>
1851<p>UCP supports multiple authentication models:</p>
1852<table>
1853<thead>
1854<tr>
1855<th style="text-align: left;">Mechanism</th>
1856<th style="text-align: left;">Onboarding</th>
1857<th style="text-align: left;">Notes</th>
1858</tr>
1859</thead>
1860<tbody>
1861<tr>
1862<td style="text-align: left;"><strong>HTTP Message Signatures</strong> (<a href="https://www.rfc-editor.org/rfc/rfc9421">RFC 9421</a>)</td>
1863<td style="text-align: left;">Permissionless</td>
1864<td style="text-align: left;">Keys discovered from profile; no prior exchange needed</td>
1865</tr>
1866<tr>
1867<td style="text-align: left;"><strong>OAuth 2.0</strong></td>
1868<td style="text-align: left;">Pre-established</td>
1869<td style="text-align: left;">Client credentials or authorization code</td>
1870</tr>
1871<tr>
1872<td style="text-align: left;"><strong>API Keys</strong></td>
1873<td style="text-align: left;">Pre-established</td>
1874<td style="text-align: left;">Pre-shared secrets exchanged out-of-band</td>
1875</tr>
1876<tr>
1877<td style="text-align: left;"><strong>mTLS</strong></td>
1878<td style="text-align: left;">Pre-established</td>
1879<td style="text-align: left;">Mutual TLS with client certificates</td>
1880</tr>
1881</tbody>
1882</table>
1883<p>HTTP Message Signatures are the only mechanism that enables permissionless
1884interaction — public keys are discovered from each party's profile, with no
1885prior credential exchange.</p>
1886<p>When a business emits updates via webhook, its identity is asserted the same
1887way: the request carries a <code>UCP-Agent</code> header pointing to the business's
1888profile, and the platform verifies the signature against the signing keys
1889published there.</p>
1890<h3 id="identity-linking">Identity Linking<a class="headerlink" href="#identity-linking" title="Permanent link">&para;</a></h3>
1891<p>The <code>dev.ucp.common.identity_linking</code> capability enables a platform to obtain
1892OAuth 2.0 authorization to act on behalf of a user at a business — unlocking
1893loyalty benefits, personalized offers, wishlists, and authenticated checkouts.
1894Businesses publish their OAuth 2.0 server metadata at
1895<code>/.well-known/oauth-authorization-server</code>.</p>
1896<h2 id="versioning">Versioning<a class="headerlink" href="#versioning" title="Permanent link">&para;</a></h2>
1897<p>UCP uses date-based version identifiers (<code>YYYY-MM-DD</code>). A UCP release <code>D</code> is a
1898snapshot of the core protocol — its services and transport bindings,
1899capabilities, extensions, and shared schemas — published together as one
1900internally compatible set. A profile's <code>ucp.version</code> selects that snapshot, and
1901the match is exact: an older date is available only when the Business
1902advertises it in <code>supported_versions</code>. A published snapshot can gain approved
1903backwards-compatible additions over time; copies fetched earlier remain valid.</p>
1904<p>Every UCP-defined service, capability, and extension in release <code>D</code> declares
1905version <code>D</code>. Third-party extensions and payment handlers are versioned by their
1906authors, independently of UCP releases.</p>
1907<p>See <a href="/latest/specification/overview/#protocol-version">Protocol Version</a> for version
1908discovery, <a href="/latest/specification/overview/#component-versioning-and-release-snapshots">Component Versioning and Release Snapshots</a>
1909for the normative release contract, and <a href="../../versioning/">Versioning</a> for the
1910release-branch and backport process.</p>
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920  
1921
1922
1923
1924
1925                
1926              </article>
1927            </div>
1928          
1929          
1930  
1930<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
1930
1931
1932<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1932
1933        </div>
1934        
1935          <button type="button" class="md-top md-icon" data-md-component="top" hidden>
1936  
1937  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
1938  Back to top
1939</button>
1940        
1941      </main>
1942      
1943        <footer class="md-footer">
1944  
1945    
1946      
1947      <nav class="md-footer__inner md-grid" aria-label="Footer" >
1948        
1949          
1950          <a href="../.." class="md-footer__link md-footer__link--prev" aria-label="Previous: Home">
1951            <div class="md-footer__button md-icon">
1952              
1953              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
1954            </div>
1955            <div class="md-footer__title">
1956              <span class="md-footer__direction">
1957                Previous
1958              </span>
1959              <div class="md-ellipsis">
1960                Home
1961              </div>
1962            </div>
1963          </a>
1964        
1965        
1966          
1967          <a href="../ucp-and-ap2/" class="md-footer__link md-footer__link--next" aria-label="Next: UCP and AP2">
1968            <div class="md-footer__title">
1969              <span class="md-footer__direction">
1970                Next
1971              </span>
1972              <div class="md-ellipsis">
1973                UCP and AP2
1974              </div>
1975            </div>
1976            <div class="md-footer__button md-icon">
1977              
1978              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
1979            </div>
1980          </a>
1981        
1982      </nav>
1983    
1984  
1985  <div class="md-footer-meta md-typeset">
1986    <div class="md-footer-meta__inner md-grid">
1987      <div class="md-copyright">
1988  
1989    <div class="md-copyright__highlight">
1990      Copyright 2026 UCP Authors. Licensed under the <a href="https://github.com/Universal-Commerce-Protocol/ucp/blob/main/LICENSE" >Apache License, Version 2.0</a>.
1991    </div>
1992  
1993  
1994    Made with
1995    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1996      Material for MkDocs
1997    </a>
1998  
1999</div>
2000      
2001    </div>
2002  </div>
2003</footer>
2004      
2005    </div>
2006    <div class="md-dialog" data-md-component="dialog">
2007      <div class="md-dialog__inner md-typeset"></div>
2008    </div>
2009    
2010    
2011      <div class="md-consent" data-md-component="consent" id="__consent" hidden>
2012        <div class="md-consent__overlay"></div>
2013        <aside class="md-consent__inner">
2014          <form class="md-consent__form md-grid md-typeset" name="consent">
2015            
2016
2017
2018  
2019
2020
2021<h4>Cookie consent</h4>
2022<p>We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.</p>
2023<input class="md-toggle" type="checkbox" id="__settings" >
2024<div class="md-consent__settings">
2025  <ul class="task-list">
2026    
2027    
2028      
2029        
2030  
2031  
2032    
2033    
2034  
2035  <li class="task-list-item">
2036    <label class="task-list-control">
2037      <input type="checkbox" name="analytics" checked>
2038      <span class="task-list-indicator"></span>
2039      Google Analytics
2040    </label>
2041  </li>
2042
2043      
2044    
2045    
2046      
2047        
2048  
2049  
2050    
2051    
2052  
2053  <li class="task-list-item">
2054    <label class="task-list-control">
2055      <input type="checkbox" name="github" checked>
2056      <span class="task-list-indicator"></span>
2057      GitHub
2058    </label>
2059  </li>
2060
2061      
2062    
2063    
2064  </ul>
2065</div>
2066<div class="md-consent__controls">
2067  
2068    
2069      <button class="md-button md-button--primary">Accept</button>
2070    
2071    
2072    
2073  
2074    
2075    
2076    
2077      <label class="md-button" for="__settings">Manage settings</label>
2078    
2079  
2080</div>
2081          </form>
2082        </aside>
2083      </div>
2084      
2084<script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script>
2084
2085    
2086    
2087      
2088      
2089      
2089<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["announce.dismiss", "content.code.annotate", "content.code.copy", "content.code.select", "content.tabs.link", "content.tooltips", "navigation.footer", "navigation.top", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky", "toc.follow"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
2089
2090    
2091    
2092      
2092<script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
2092
2093      
2094    
2095  </body>
2096</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.