Custom WooCommerce rental checkout for a dress-rental business
Built a booking-aware WooCommerce checkout for a dress-rental business, covering rental dates, deposit math, a care-policy consent step and an express-payment UI, to a Figma redesign.
- Client
- Desi Switch
- Sector
- Web
- Stack
- WooCommerce · PHP · JS · Stripe Payment Element
- Year
- 2025
The problem
Desi Switch, a dress-rental business, was running a standard WooCommerce checkout — the same flow a store selling one-off retail items would use. It had no concept of booking dates, no deposit logic, and no way to distinguish a rental price from a retail price in the order summary. None of the plugin ecosystem's off-the-shelf rental add-ons matched the pricing and policy model the business actually needed.
What I built
I built a custom rental checkout flow to a Figma redesign, covering the parts of the transaction that standard WooCommerce doesn't model: a booking timeline showing delivery, event and return dates together; a retail-versus-rental price split visible directly in the order summary instead of a single blended line item; refundable deposit math that clearly separates "pay today" from "refunded after return"; and a Dress Care Policy consent step wired to a linked fee structure, so the customer sees exactly what damage or late-return fees apply before they commit.
On the payment side, I implemented a modern express-checkout UI using Stripe's Payment Element, supporting Google Pay, Apple Pay, and Link, laid out in the two-column layout the Figma design specified rather than WooCommerce's default single-column checkout.
Outcome
The store now runs a checkout flow that matches how a rental transaction actually works — dates, deposits, and policy consent handled as first-class parts of the order, not bolted-on notes — built without adopting a bloated rental plugin that would have brought its own pricing model to fight against.
Why it mattered
Rental commerce has logic that retail checkout code doesn't anticipate: money that's collected but not yet earned, dates that constrain each other, and a consent step tied to a fee schedule. Building that directly, against a specific design, avoided the usual trade-off of a rental plugin that gets 80% of the model right and fights you on the rest.
Have a system that needs to work in production?
Tell me what's breaking — or what you're building.