Today's merge of PR #283 makes the currency field required on the Order schema. This completes a migration that started with PR #210, which added currency as an optional field with the explicit intention of making it required in the next breaking change window.
currency field. Existing implementations relying on implicit currency context from Checkout will fail validation.
deinck6 has been actively contributing to UCP's schema evolution, focusing on capability independence and data completeness. This PR reflects the team's systematic approach to breaking changes — introducing features as optional, then promoting to required once adoption patterns are understood.
The change addresses a fundamental design principle in UCP: capabilities should function independently. Previously, Order totals relied on currency context established during Checkout — a coupling that created several problems:
The schema change is straightforward but has broad impact:
// Order schema before
{
"totals": { ... },
"currency": { "type": "string" } // optional
}
// Order schema after
{
"totals": { ... },
"currency": { "type": "string" } // required
}
The required array in the JSON schema now includes currency, meaning validation will reject Order payloads missing this field.
This change lands one day after PR #254, which restructured the Order capability significantly:
checkouts array (enabling order edits and exchanges)amount to totals for pattern alignmentTogether, these changes represent UCP's most significant Order capability evolution since launch.
This change simplifies agentic commerce by making Orders self-describing:
currency is included in all payloadsUCP is in active release preparation (see ci: prepare for release). Implementers should expect these breaking changes to land in the next versioned release — plan migrations accordingly.
This change, combined with yesterday's Order restructuring and last week's signed_amount totals update, represents a coordinated hardening of UCP's commerce primitives ahead of broader enterprise adoption.