Drip pricing — revealing fees incrementally through the checkout funnel — is an active FTC enforcement priority under FTC Act §5 and the MITA (Mend it, Tag it, Advertise it) framework. A consumer who sees '$19/month' on the pricing page and '$24/month' at checkout confirmation has been materially misled: they entered the funnel under a false price premise. Beyond FTC exposure, hidden fees drive cart abandonment, chargebacks, and negative reviews at the exact moment of purchase — the highest-value touchpoint in the funnel.
Critical because price misrepresentation at checkout constitutes a deceptive act under FTC Act §5, and the MITA framework specifically targets undisclosed mandatory fees as a primary enforcement vector.
Show the full charge — including all mandatory fees — from the first moment a user sees a price. In the checkout UI, the order summary must match the pricing page before the user submits payment.
function PricingCard({ plan }: { plan: Plan }) {
return (
<div>
{/* Show the actual annual charge, not an implied monthly rate */}
<p className="price">
{plan.billingInterval === 'annual'
? `$${plan.annualPrice}/year`
: `$${plan.monthlyPrice}/month`}
</p>
{/* If showing equivalent monthly, clarify the real charge */}
{plan.billingInterval === 'annual' && (
<p className="text-sm">
Billed as ${plan.annualPrice}/year
(equiv. ${Math.round(plan.annualPrice / 12)}/mo)
</p>
)}
{/* Surface mandatory fees here — not at checkout */}
{plan.platformFee > 0 && (
<p>+ ${plan.platformFee}/month platform fee</p>
)}
</div>
)
}
For taxes calculated at checkout (standard practice), add a 'Taxes calculated at checkout based on location' note on the pricing page so the only variable the consumer encounters at checkout is the tax amount, not surprise line items.
ID: ftc-consumer-protection.advertising-claims.clear-pricing
Severity: critical
What to look for: Count all relevant instances and enumerate each. Examine the pricing page and the complete checkout flow. On the pricing page: does the displayed price include all mandatory costs, or are taxes, processing fees, or required add-ons disclosed only at the final checkout step? "Drip pricing" — the practice of revealing costs incrementally through the purchase flow — is an FTC enforcement priority. Check: (1) does the pricing page show the total cost of ownership (including any mandatory setup fees, overage fees, or minimum commitments)? (2) In the checkout flow, does the order summary at the final confirmation screen match the price shown on the pricing page? (3) Are there any mandatory fees (platform fee, payment processing fee, international transaction fee) that appear after the pricing page but before checkout? (4) If the product is annual-only, is the effective monthly cost displayed alongside the actual annual charge? (5) For usage-based pricing, is there a clear explanation of how charges are calculated, with a cost estimator or cap option?
Pass criteria: The price displayed on the pricing page matches the charge visible at checkout confirmation. All mandatory fees are disclosed on or near the pricing page. Annual billing is clearly labeled as such (not just presented as a cheaper monthly rate). Usage-based costs have accessible calculators or cap options. No fees appear between pricing page and payment confirmation that were not visible earlier. A partial or placeholder implementation does not count as pass. Report the count even on pass.
Fail criteria: Final checkout price differs from the pricing page price due to undisclosed fees. Taxes, processing fees, or required add-ons are introduced after the user has committed to purchasing. Annual plans are shown as a "from $X/month" price without making the annual commitment obvious before checkout. Drip pricing where costs are revealed step-by-step through the checkout funnel.
Skip (N/A) when: The application is completely free with no paid tiers, subscriptions, or in-app purchases of any kind.
Detail on fail: Specify where the discrepancy appears. Example: "Pricing page shows '$19/month' but checkout adds a mandatory '$5/month platform fee' not disclosed on the pricing page — total charge at checkout is $24/month." or "Annual plan shown as '$12/month' on pricing page; the $144 annual charge only appears on the final confirmation screen." or "Checkout step 3 of 4 introduces a 'payment processing fee' (3%) not mentioned anywhere prior."
Remediation: Show the full price from the first moment a user considers purchasing:
// Pricing card — show full price, billing terms, and any mandatory fees upfront
function PricingCard({ plan }: { plan: Plan }) {
return (
<div className="pricing-card">
<h3>{plan.name}</h3>
{/* Show the actual charge, not an implied monthly rate */}
<p className="price">
{plan.billingInterval === 'annual'
? `$${plan.annualPrice}/year` // show the real charge
: `$${plan.monthlyPrice}/month`
}
</p>
{/* If showing equivalent monthly rate, clarify */}
{plan.billingInterval === 'annual' && (
<p className="price-note">
Billed as ${plan.annualPrice} per year
(equivalent to ${Math.round(plan.annualPrice / 12)}/month)
</p>
)}
{/* Surface any mandatory fees here, not at checkout */}
{plan.platformFee > 0 && (
<p className="fee-note">
+ ${plan.platformFee}/month platform fee
</p>
)}
{/* Tax note */}
<p className="tax-note">Taxes calculated at checkout based on location</p>
</div>
)
}
For checkout: the order summary on the final confirmation screen must match what the user saw on the pricing page. If taxes are added at checkout (which is standard), show a "taxes will be calculated" note on the pricing page. Run your pricing page and checkout side-by-side and verify price parity at each step.
Cross-reference: For related patterns and deeper analysis, see the corresponding checks in other AuditBuffet audits covering this domain.