Universal Commerce Protocol
UCP standardises discovery and checkout so commerce apps interoperate across platforms instead of each pair needing a bespoke integration. A client fetches one well-known document, learns what the merchant supports, and drives a checkout session through a lifecycle thatβs identical everywhere.How it works
- Discover β
GET /.well-known/ucpadvertises which capabilities the merchant supports: checkout, fulfillment, discounts, and orders. - Transact β a standard checkout session lifecycle: create, get, update, complete, cancel.
- Confirm β completion emits an order webhook.
Run the handler
The reference implementation is a standalone Rust server.Endpoints
Discovery
Checkout sessions
Orders
Credentials and audit
Optional OAuth identity linking (when enabled):
/.well-known/oauth-authorization-server, /oauth2/authorize, /oauth2/token,
/oauth2/revoke.
Operations: /metrics (Prometheus), /health, /ready.
A gRPC server with JSON payloads, health, and reflection listens on GRPC_HOST:GRPC_PORT
(default 0.0.0.0:50051).
Extensions
Bindings
Node.js, Python, and Go bindings are available in addition to the Rust crate, which is published on crates.io.When to use UCP
How it relates to ACP and ICP
ICP subsumes both. UCP is the right choice when you want checkout interoperability without
adopting the full intent model.
Related
- UCP Quickstart
- UCP Integration Guide
- ICP β the superset protocol