Order summary shows line items, shipping, taxes, and total before payment
Why it matters
Presenting a payment form without a complete order summary — line items, shipping cost, tax amount, and final total — violates the reasonable expectation of informed consent before a financial transaction. ISO 25010:2011 functional correctness requires that the system accurately communicate what the user is authorizing. CWE-20 applies when placeholder values ("TBD", "$0.00") appear in tax or shipping fields: the user authorizes an amount they cannot verify, which leads to chargebacks, disputes, and loss of trust. Regulatory guidance in many jurisdictions (EU Consumer Rights Directive, FTC rules) also requires clear pre-payment disclosure of total charges.
Severity rationale
Critical because a user who pays without seeing a complete summary can claim they did not authorize the actual charge, triggering chargebacks and regulatory exposure.
Remediation
Add a review step at src/components/OrderReview.tsx and render it before the payment form — not after. The component must display all four fields computed from live cart data:
// src/components/OrderReview.tsx
function OrderReview({ cart, shipping, tax, total }: OrderReviewProps) {
const subtotal = cart.reduce((sum, i) => sum + i.lineTotal, 0)
return (
<section>
{cart.map(item => (
<div key={item.id}>{item.name} x{item.quantity} — ${(item.lineTotal/100).toFixed(2)}</div>
))}
<p>Shipping: ${(shipping/100).toFixed(2)}</p>
<p>Tax: ${(tax/100).toFixed(2)}</p>
<p><strong>Total: ${(total/100).toFixed(2)}</strong></p>
</section>
)
}
Never render "TBD" or $0.00 for shipping or tax when real values are computable; fetch shipping and tax estimates as soon as an address is entered.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Cart & Checkout UX Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- cwe · CWE-20 — Improper Input Validation
- iso-25010:2011 · functional-suitability.functional-correctness — Functional Suitability — Functional Correctness
Taxons
History
- 2026-04-18·v1.0.0·Initial import from ecommerce-cart-ux·automated