You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`fee` — the cost structure for that specific method.
38
38
-`reason` — human-readable explanation of why this policy applies.
39
+
-`policy_url` — URL to the merchant's full return policy document.
40
+
41
+
### Relationship to Other Extensions
42
+
43
+
The Return Extension is independent of the Fulfillment Extension. Businesses MAY use information from `fulfillment` to compute return options (e.g., in-store return locations may correlate with fulfillment retail locations), but this extension does NOT model that relationship. Platforms MUST NOT assume any structural correlation between return methods and fulfillment methods.
44
+
45
+
### Scope and Future Directions
46
+
47
+
-**Pre-Purchase Disclosure Only**: This extension addresses pre-purchase disclosure of return policy only. Post-purchase return initiation, label generation, refund processing, and exchange execution are out of scope. A future `dev.ucp.shopping.return_action` extension may address these workflows; implementers MUST NOT extend this schema for those purposes.
48
+
-**Product-Level Returns**: A return policy is fundamentally a property of a product (or its category), not a property of a checkout. A separate Product or Catalog capability could expose return policies at the catalog level in the future. For v1, checkout-time exposure is used for simplicity.
39
49
40
50
**Mental model:**
41
51
@@ -114,12 +124,17 @@ requirements of a purchase before completion.
|`return_policy`|`return_period_in_days`| No | Quantitative window for the return. |
116
126
|`return_policy`|`reason`| No | Human-readable explanation of policy application. |
127
+
|`return_policy`|`policy_url`| No | URL to the merchant's full return policy document. |
117
128
|`return_policy`|`supported_resolutions`| No | Allowed outcomes (refund, exchange, etc.). |
118
129
|`return_method.fee`|`display_text`| No | Context for the fee (e.g., "Restocking Fee"). |
119
130
|`return_method.fee`|`amount`| No | Price in minor units for fixed fees. |
120
131
121
132
### Business Responsibilities
122
133
134
+
**For Policy Locking:**
135
+
136
+
-**MUST** honor the return policy that was in effect at the time of order placement; that policy MUST be sourced from the Order resource (when available) rather than recomputed from current merchant rules. The return policy returned at checkout response time is the policy in effect for the buyer at that moment.
137
+
123
138
**For `return_period_in_days`:**
124
139
125
140
-**MUST** accurately reflect the merchant's legal and commercial return window
@@ -147,6 +162,23 @@ assurance:
147
162
- Use `return_period_in_days` to calculate and display the specific return
148
163
deadline based on the delivery date.
149
164
165
+
**For Partial Quantity Returns:**
166
+
167
+
-**SHOULD** assume return policies apply to individual units within a line item. Unless specified otherwise (e.g., for bundled items), any subset of quantities is subject to the same return policy.
168
+
169
+
**For Absent Policy Data:**
170
+
171
+
-**MUST NOT** infer items are non-returnable if the Return capability is advertised in discovery but `return_policies` is absent or empty in a checkout response. Platforms SHOULD fall back to general merchant return info (e.g., via the merchant's profile URL).
172
+
173
+
**Interpretation of Policy States:**
174
+
175
+
Platforms MUST interpret combinations of `methods` and `return_period_in_days` as follows:
176
+
177
+
-`methods` absent or empty (`[]`): Treat as "no return methods supported" (i.e., non-returnable/final sale).
178
+
-`return_period_in_days` is `0`: Treat as "non-returnable" (final sale).
179
+
-`return_period_in_days` absent, but `methods` present: Treat as "no time limit on returns".
180
+
-`return_period_in_days` present, but `methods` absent/empty: Ambiguous. Interpret as returnable, but client/buyer must arrange their own return shipment, or consult the full policy link if provided.
181
+
150
182
## Examples
151
183
152
184
### Mixed Cart
@@ -172,6 +204,7 @@ In this example, apparel items reference a standard policy, while a custom item
Copy file name to clipboardExpand all lines: source/schemas/shopping/return.json
+5Lines changed: 5 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -32,6 +32,11 @@
32
32
"reason": {
33
33
"type": "string",
34
34
"description": "Human-readable explanation of why this return policy applies. Helps platforms and agents explain policy provenance to buyers (e.g., 'Custom engraved items are non-returnable per our personalization policy'). Optional."
35
+
},
36
+
"policy_url": {
37
+
"type": "string",
38
+
"format": "uri",
39
+
"description": "URL to the merchant's full return policy document. Platforms SHOULD surface this link alongside the structured policy data so buyers can review complete terms."
0 commit comments