PR #254 represents the most significant restructuring of UCP's Order capability since launch. The changes address fundamental modeling limitations that prevented proper handling of order edits, exchanges, and returns — scenarios that are increasingly common in agentic commerce.
Lee Richmond (richmolj) has been instrumental in shaping UCP's capability model. His contributions focus on schema flexibility and real-world commerce scenarios — this PR reflects extensive analysis of edge cases encountered in production deployments.
| Change | Before | After |
|---|---|---|
| Checkout reference | checkout_id (string) |
checkouts (array of objects) |
| Adjustment amounts | amount (single value) |
totals (array of Total objects) |
| Line item quantities | minimum: 1 |
Signed (can be negative) |
| Amount values | minimum: 0 |
Signed (can be negative) |
The most significant architectural change: Orders can now reference multiple Checkout sessions. This enables:
// Before: Single checkout reference
{
"checkout_id": "chk_abc123"
}
// After: Array with timestamps
{
"checkouts": [
{ "id": "chk_abc123", "created_at": "2026-04-01T10:00:00Z" },
{ "id": "chk_xyz789", "created_at": "2026-04-01T14:30:00Z" }
]
}
Adjustment line item quantities no longer enforce minimum: 1. Negative quantities represent returned items:
// Adjustment: Customer returned 2 items, kept 3
{
"line_items": [
{ "sku": "WIDGET-001", "quantity": -2 },
{ "sku": "GADGET-002", "quantity": 3 }
]
}
The amount field on Adjustments has been renamed to totals and restructured to match the pattern used by Order and OrderLineItem:
// Before: Single amount
{
"amount": { "value": "10.00", "currency": "USD" }
}
// After: Array of totals
{
"totals": [
{ "type": "subtotal", "amount": { "value": "-10.00", "currency": "USD" } },
{ "type": "tax", "amount": { "value": "-0.90", "currency": "USD" } }
]
}
The PR also softens previously rigid language:
These changes significantly improve agent capabilities:
checkout_id with checkouts arrayamount to totals with array structureThis PR lands alongside other significant UCP changes:
Together, these represent UCP's most significant breaking change window — positioning the protocol for enterprise adoption where complex order lifecycle management is the norm, not the exception.