ucp.create_checkout
Create a checkout cart from storefront line items and return payment requirements. When the order is confirmed, the response includes a full order summary (items, totals, addresses, carrier) and a portal_url the customer can use to view their order in the Odoo customer portal.
Schema
Input Schema
{
"type": "object",
"required": [
"line_items"
],
"properties": {
"line_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"offer_id",
"quantity"
],
"properties": {
"offer_id": {
"type": "string",
"description": "Always pass the product variant_id returned by ucp.search_products. Other identifiers are fallback only."
},
"quantity": {
"type": "number",
"description": "Quantity to purchase.",
"exclusiveMinimum": 0
}
}
},
"minItems": 1,
"description": "Products to add to the checkout. Each item must use offer_id set to the variant_id returned by ucp.search_products."
},
"billing_address": {
"type": "object",
"required": [
"name",
"email",
"street",
"city",
"country_code"
],
"properties": {
"zip": {
"type": "string",
"description": "Postal or ZIP code."
},
"city": {
"type": "string",
"description": "City or locality."
},
"name": {
"type": "string",
"description": "Full recipient or billing contact name."
},
"email": {
"type": "string",
"description": "Contact email address."
},
"phone": {
"type": "string",
"description": "Contact phone number."
},
"street": {
"type": "string",
"description": "Primary street address line."
},
"street2": {
"type": "string",
"description": "Apartment, suite, landmark, or secondary address line."
},
"state_code": {
"type": "string",
"description": "State, province, or region code when available."
},
"country_code": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "ISO 3166-1 alpha-2 country code."
}
},
"description": "Optional billing address. Required to confirm the order and create payment."
},
"shipping_address": {
"type": "object",
"required": [
"name",
"email",
"street",
"city",
"country_code"
],
"properties": {
"zip": {
"type": "string",
"description": "Postal or ZIP code."
},
"city": {
"type": "string",
"description": "City or locality."
},
"name": {
"type": "string",
"description": "Full recipient or billing contact name."
},
"email": {
"type": "string",
"description": "Contact email address."
},
"phone": {
"type": "string",
"description": "Contact phone number."
},
"street": {
"type": "string",
"description": "Primary street address line."
},
"street2": {
"type": "string",
"description": "Apartment, suite, landmark, or secondary address line."
},
"state_code": {
"type": "string",
"description": "State, province, or region code when available."
},
"country_code": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "ISO 3166-1 alpha-2 country code."
}
},
"description": "Optional shipping address. Defaults to billing_address when omitted."
},
"payment_provider_id": {
"type": "integer",
"description": "Optional Odoo payment provider ID. When omitted, the response lists available providers for the next step."
}
}
}
Verified Stores
1
Member Stores
Stores exposing the ucp.create_checkout tool
Weekly UCP Report
Get the agentic commerce digest every Monday
Real adoption data, ecosystem trends, new spec versions, and the stores that broke or recovered this week. Read by founders and engineers building the next generation of commerce.
Weekly UCP Report
Issue #52 · Sep 28, 2026
+664
new verified stores
Verified rate
Latest spec
Cart capability
