UCP profile

UCP employs a server-selects architecture where the business (server) chooses the protocol version and capabilities from the intersection of both parties' capabilities. Your UCP profile (known as business profile in UCP) will enable Google to efficiently negotiate capabilities with your server.

This profile is a JSON file that you host on your server at the well-known path: /.well-known/ucp. It's crucial for integrating with Google, as it publicly declares your server's capabilities and configurations for UCP.

Important: The UCP profile file at /.well-known/ucp must be publicly accessible and not require any authentication.

What the UCP Profile does:

  • Declares Capabilities: Informs Google which UCP features you support, such as different checkout processes, fulfillment options, discount applications, and order management.
  • Specifies Versions: Locks down the specific versions of the UCP specifications and schemas you are using.
  • Provides Endpoints: Tells Google where to send API requests for various services.
  • Configures Payment Handling: Details how payment processing is set up, including parameters for payment methods like Google Pay.
  • Shares Public Keys: Includes public keys used to verify messages sent from your server.

For more information about capability discovery, governance, and negotiation, see the UCP specification of business profile.

Create a UCP profile

Publish your UCP profile at /.well-known/ucp. For example:

{
  "ucp": {
    "version": "2026-01-23",
    "services": {
      "dev.ucp.shopping": [
        {
          "version": "2026-01-23",
          "spec": "https://ucp.dev/specification/overview",
          "transport": "rest",
          "endpoint": "https://business.example.com/ucp/v1",
          "schema": "https://ucp.dev/2026-01-23/services/shopping/openapi.json"
        }
      ]
    },
    "capabilities": {
      "dev.ucp.shopping.checkout": [
        {
          "version": "2026-01-23",
          "spec": "https://ucp.dev/specification/checkout",
          "schema": "https://ucp.dev/2026-01-23/schemas/shopping/checkout.json"
        }
      ],
      "dev.ucp.shopping.fulfillment": [
        {
          "version": "2026-01-23",
          "spec": "https://ucp.dev/specification/fulfillment",
          "schema": "https://ucp.dev/2026-01-23/schemas/shopping/fulfillment.json",
          "extends": "dev.ucp.shopping.checkout"
        }
      ],
      "dev.ucp.shopping.discount": [
        {
          "version": "2026-01-23",
          "spec": "https://ucp.dev/specification/discount",
          "schema": "https://ucp.dev/2026-01-23/schemas/shopping/discount.json",
          "extends": "dev.ucp.shopping.checkout"
        }
      ],
      "dev.ucp.shopping.order": [
        {
          "version": "2026-01-23",
          "spec": "https://ucp.dev/latest/specification/order",
          "schema": "https://ucp.dev/2026-01-23/schemas/shopping/order.json"
        }
      ]
    },
    "payment_handlers": {
      "com.google.pay": [
        {
          "id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
          "version": "2026-01-23",
          "spec": "https://pay.google.com/gp/p/ucp/2026-01-23/",
          "config_schema": "https://pay.google.com/gp/p/ucp/2026-01-23/schemas/config.json",
          "instrument_schemas": [ "https://pay.google.com/gp/p/ucp/2026-01-23/schemas/card_payment_instrument.json" ],
          "config": {
            "api_version": 2,
            "api_version_minor": 0,
            "environment": "TEST",
            "merchant_info": {
              "merchant_name": "Example Merchant",
              "merchant_id": "01234567890123456789",
              "merchant_origin": "checkout.merchant.com"
            },
            "allowed_payment_methods": [
              {
                "type": "CARD",
                "parameters": {
                  "allowed_auth_methods": [ "PAN_ONLY" ],
                  "allowed_card_networks": [
                    "AMEX",
                    "DISCOVER",
                    "JCB",
                    "MASTERCARD",
                    "VISA"
                  ],
                  "billingAddressRequired": true,
                  "billingAddressParameters": {
                    "format": "FULL",
                    "phoneNumberRequired": true
                  }
                },
                "tokenization_specification": {
                  "type": "PAYMENT_GATEWAY",
                  "parameters": {
                    "gateway": "example",
                    "gatewayMerchantId": "exampleGatewayMerchantId"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  },
  "signing_keys": [
    {
      "kid": "business_2025",
      "kty": "EC",
      "crv": "P-256",
      "x": "WbbXwVYGdJoP4Xm3qCkGvBRcRvKtEfXDbWvPzpPS8LA",
      "y": "sP4jHHxYqC89HBo8TjrtVOAGHfJDflYxw7MFMxuFMPY",
      "use": "sig",
      "alg": "ES256"
    }
  ]
}

The ucp object contains protocol metadata: version, services, and capabilities. Payment configuration is a sibling — see Payment Architecture . The signing_keys array contains public keys (JWK format) used to verify signatures on webhooks and other authenticated messages from your servers.