Reg Z (TILA) requires that all fees be disclosed before a consumer commits to a credit product — and the FTC Click-to-Cancel rule extends a parallel obligation to subscription billing. When a user reaches the confirmation screen without seeing the full cost, they cannot make an informed choice. Post-commitment fee discovery drives chargebacks, erodes trust, and creates regulatory exposure under CFPB enforcement. FINRA Rule 2210 independently prohibits omitting material information in communications with the public, which courts and regulators have applied to investment product fee schedules. Burying fees in linked Terms & Conditions does not satisfy pre-commitment disclosure — the information must appear in the purchase flow itself.
Critical because a user who commits without knowing the full fee structure cannot give informed consent, exposing the product to CFPB enforcement, FTC action, and chargeback liability simultaneously.
Add an explicit fee disclosure section to the pricing page and every checkout confirmation step. In app/pricing/page.tsx (or app/(marketing)/pricing/page.tsx), render every applicable fee with its exact dollar amount before the CTA button:
// app/pricing/page.tsx
<div className="pricing-disclosure">
<h2>All Fees</h2>
<dl className="fee-list">
<div className="fee-row">
<dt>Monthly Service Fee</dt>
<dd>$9.99/mo</dd>
</div>
<div className="fee-row">
<dt>Transaction Fee</dt>
<dd>$0.50 per transfer</dd>
</div>
</dl>
<p className="disclosure-note">
These are the complete fees. No additional or hidden charges apply.
</p>
</div>
Repeat a condensed version in the checkout summary above the "Confirm" button so fee disclosure is never more than one scroll away from commitment.
ID: finserv-disclosure.fee-rate.fees-before-commitment
Severity: critical
What to look for: Enumerate every fee type the product charges (monthly service fees, transaction fees, account fees, exchange fees, origination fees, late fees, wire fees, etc.). For each fee found in code or config, check whether it is displayed to the user BEFORE the final commitment step (signs agreement, submits form, clicks "confirm purchase"). Count every pricing page, product detail page, checkout/confirmation page, and account opening flow page.
Pass criteria: At least 1 dedicated fee disclosure exists (pricing page, checkout summary, or product detail page) that lists all applicable fees with exact dollar amounts before the user commits. The display is prominent — not buried in fine print or hidden behind a "more details" link that requires more than 1 click to reach. Report even on pass: "Found X fee types disclosed across Y pages pre-commitment."
Fail criteria: Any applicable fee is not disclosed before commitment, or fees are only shown after the user has clicked "confirm purchase" or similar final action, or fees require more than 1 click from the commitment page to discover.
Do NOT pass when: Fees are listed only in the Terms & Conditions document linked from checkout — this does not count as a pre-commitment disclosure because users must navigate away from the purchase flow to read it.
Skip (N/A) when: The project has no products or accounts with associated fees (e.g., a free educational tool or API reference site with zero monetization).
Detail on fail: Specify which fees are missing from the pre-commitment disclosure and where they should appear. Quote the file path and component where fees should be added. Example: "Monthly service fee is shown only in the Terms & Conditions document (linked at checkout), not on the pricing page or checkout confirmation. Transaction fees are not displayed anywhere before purchase."
Remediation: Users must know the full cost before committing. Create a pricing or fee disclosure page that is linked from every product detail and checkout page in app/pricing/page.tsx or app/(marketing)/pricing/page.tsx. Display all applicable fees:
// app/pricing/page.tsx
<div className="pricing-disclosure">
<h2>Costs You'll Pay</h2>
<div className="fee-item">
<span>Monthly Service Fee</span>
<span className="amount">$9.99/mo</span>
</div>
<div className="fee-item">
<span>Transaction Fee (per transfer)</span>
<span className="amount">$0.50</span>
</div>
<p className="disclosure-note">
These are the only fees. No hidden or additional charges apply.
</p>
</div>
If your product is subscription-based, display recurring fees prominently in the checkout flow.
Cross-reference: For subscription-specific billing disclosures and auto-renewal compliance, the Subscription Compliance audit covers pre-purchase transparency in depth.