Merchant Integration Guide
7.1 Prerequisites
| Requirement | Description | Required / Recommended |
|---|---|---|
| HTTPS | All endpoints must use HTTPS; Profile endpoint must not redirect (no 3xx) | Required |
| Domain | Own a domain where you can deploy /.well-known/ucp | Required |
| Product data | Ability to return product data in JSON format | Required |
| Signing keys | Generate an ES256 (P-256) key pair for Webhook signatures | Recommended |
| OAuth 2.0 | Required for identity linking; needs an OAuth authorization server | As needed |
| Payment processor | At least one UCP-compatible payment processor | As needed |
7.2 Step 1: Deploy the UCP Profile
The UCP Profile is the entry point through which AI agents discover your capabilities. It is served at the/.well-known/ucp path.
Profile Requirements
- HTTPS only: Must be served over HTTPS. HTTP requests should return a 301 redirect to HTTPS.
- No redirects: HTTPS requests to
/.well-known/ucpmust not return 3xx redirects. The response must be a direct 200. - Cache-Control: Must include
Cache-Control: public, max-age=Nwhere N is at least 60 seconds. - Content-Type:
application/json
Minimal Profile (Product Discovery Only)
Full Profile (All Capabilities)
7.3 Generating Signing Keys
Generate an ES256 (P-256) key pair using OpenSSL:ucp-signing-key.pem) must be stored securely on the server. It must never appear in the Profile, source code repositories, or logs. Only the public key information (x and y coordinates) is published in the Profile’s signing_keys array.
7.4 Four-Phase Integration Path
Phase 1: Profile + Product Catalog (1 day)
The minimum viable integration. Deploy the/.well-known/ucp Profile and a product search API:
Phase 2: Checkout Capability (2-3 days)
Build on Phase 1 by implementing the checkout API — five operations (Create / Get / Update / Complete / Cancel) and a six-state state machine. Requires payment processor integration. Key implementation points:- CRUD endpoints for checkout sessions
- State machine transition logic
- Payment processor integration (declare supported processors via
payment_handlers) - ISO 4217 monetary amount handling
Phase 3: Identity Linking (2-3 days)
Implement an OAuth 2.0 authorization server:/.well-known/oauth-authorization-servermetadata endpoint- Authorization endpoint (
/oauth/authorize) - Token endpoint (
/oauth/token) - Revocation endpoint (
/oauth/revoke), following RFC 7009 - PKCE (S256) support
Phase 4: Order Management + Webhooks (2-3 days)
- Order query API
- Fulfillment event tracking
- Adjustment operations (returns / refunds)
- Webhook notifications using RFC 9421 signatures (requires publishing JWK signing keys in the Profile)
7.5 Declaring Payment Handlers in the UCP Profile
Thepayment_handlers array lists the payment processors you accept, using reverse-DNS naming:
7.6 HTTP Response Header Requirements
UCP endpoints should return the following HTTP headers:/.well-known/ucp), the Cache-Control max-age must be at least 60 seconds. A value of 3600 seconds (1 hour) is recommended.
Next chapter: Platform Integration Guide — Capability negotiation algorithm, extension mechanisms, and multi-platform strategies