Bismillâh, kardeşim. This post is half technique, half ethics. The Qur'an opens sûrat al-Mutaffifîn with three ayet-i kerîme about dishonest measure: "Woe to those who cheat in measure, who demand full measure when they buy, but shortchange others when they sell" (83:1–3). E-commerce pricing is exactly where this reaches 21st-century code. Hidden fees, last-step surprises, "convenience charges" layered on at checkout. Let's build a cart summary that respects mizan.

The two cards above

The demo puts a shady pricing card next to an honest one. Same underlying product, same real total. The shady card shows "Due $189" and then on the next page adds a service fee, shipping, and a "convenience charge" that brings the real total to $230.40. The honest card shows the real number up front: $203 with shipping itemized, processing free. Click either one; they both navigate somewhere, but only one of them told you the truth before you committed.

Which one does your user trust more on their second visit? Which one gets the word-of-mouth referral? Which one does sıdk?

The code that matters

The "trick" to honest pricing is in the HTML structure of the cart summary, not in any JavaScript. Four rules:

<div class="line"><span>Walnut table</span><span>$189.00</span></div>
<div class="line"><span>Shipping, tracked</span><span>$14.00</span></div>
<div class="line"><span>Processing</span><span class="free">Free</span></div>
<div class="line total"><span>Total</span><strong>$203.00</strong></div>
  1. Every line item has a name. No mystery "Additional services." The reader should always know why the total went up.
  2. Free things say "Free," not "$0.00." It's warmer, and it matches how people speak.
  3. The total is the final number, clearly separated with a top border and a strong tag. Nothing after it should change the total.
  4. Taxes, if applicable, appear above the total too. Never at the step after. This is a legal requirement in the EU and the right thing everywhere.

Dark patterns this avoids

Each of these is a commonly-used, commonly-regretted pattern:

  • Drip pricing. Revealing fees one step at a time after the user has already committed. The user feels trapped and annoyed. Conversion short-term, brand damage long-term.
  • Confusing "convenience charges." Charging the user for the privilege of paying you. If it's real (payment processor fee), put it in the price. If it's not, don't charge it.
  • Fake discounts. "Was $249, now $189!" when the product never sold at $249. The EU has a law against this (Directive 98/6/EC amended 2019). It's also plain tatfif (the very word the sûra uses).
  • Pre-ticked add-ons. A protection plan or newsletter signup pre-selected at checkout. Uncheck-by-default is a small cost that saves the user from an accidental commitment.
  • Guilt-tripping negative copy. "No, I don't want to save 20%." Make the opt-out as respectful as the opt-in.

A small legal note (and a bigger ethical one)

The EU's Omnibus Directive (effective 2022) requires that any "was" price shown alongside a current price be the lowest price at which the product was sold in the last 30 days. The UK has its own version. California has "automatic renewal" disclosure laws. India has consumer fee disclosure rules. You can't easily know every jurisdiction your store touches, but you can do better than local law: always show the total before the click.

More than law: the Qur'an's phrasing of "woe to those who shortchange" isn't a commercial-court fine, it's a spiritual one. A small warning the careful builder remembers. Your customers may never quote 83:1-3, but they feel it when a price grows after they've committed.

Microcopy that earns trust

Small phrases that do a disproportionate amount of work:

  • "Total, including shipping and taxes." Say it, don't make the user figure it out.
  • "Estimated delivery: 2-4 business days." Not "Fast shipping." A range is honest; a superlative is a marketing promise.
  • "Cancel anytime, no fees." For subscriptions. Repeat it on the Cancel button too.
  • "Your card will be charged $X once." For one-time payments. The word once removes doubt about recurrence.

A tiny countdown on fake urgency

Pressure tactics ("Only 2 left!", "Offer expires in 3:14") work short-term and corrode trust long-term. If a deal genuinely expires, say so with the real time. If stock is genuinely low, say the actual count. The difference between "Only 2 left!" repeated daily and "Stock: 2" (that might say 47 tomorrow) is the difference between manipulation and information.

Testing for honesty

A five-minute self-audit you can run on any cart page:

  1. Does the number the user clicks match the number on their card statement?
  2. Are fees itemized, or is there one mystery "Additional"?
  3. Can the user see the total before entering payment info?
  4. Is every pre-ticked checkbox necessary, or is it a subscription trap?
  5. Does the "save X%" claim hold up against the last 30 days of prices?

If any answer is "sort of," you have a tatfif problem. Fix it before the law, or the user, or a quiet ayat-i kerîme reminds you.

Tricks worth carrying

  • Show the total twice: once in the cart drawer, once in the checkout step. If the numbers differ, something is hidden.
  • Make "Free" warm, not a zero. "Included" is even better for bundled items.
  • Always have a <strong> on the final total. Screen readers emphasize it; scanning eyes find it.
  • Keep a changelog of what you changed in pricing. Your future self will thank you when a customer asks "why is this different from last month?"

Takeaways

  1. Disclose every line item. Total before the click, always.
  2. Avoid drip pricing, fake urgency, pre-ticked add-ons.
  3. Microcopy is half the trust battle. Write honest phrases.
  4. Run a five-minute audit. If you can't defend each line, fix it.
  5. Mutaffifîn 83:1-3 is older than e-commerce, but it was written for exactly this.

Next post: "Add-product form with FileReader, no backend required for the preview."

Ölçüyü tam tut, kardeşim. The user who felt that gentleness comes back. The one who felt cheated never forgets.