beginner
shop-rentals
pricing
rates

Pricing Tiers

Configure hourly, daily, weekly, and monthly rates with deposits, free-cancel windows, late fees, and group discounts for your rental shop

Levy Fleets TeamMay 7, 20269 min read

Pricing tiers define how much your customers pay, what you hold as a deposit, when they can cancel for free, and how late returns get charged. Configure them at Shop Rentals → Pricing.

How rate selection works

Every tier can have four rates:

  • Hourly
  • Daily (24-hour blocks)
  • Weekly (7-day blocks)
  • Monthly (30-day blocks)

When the customer books, the pricing engine picks the cheapest combination for the duration. So if your hourly is $10 and your daily is $40:

  • 1 hour → $10 (hourly wins)
  • 6 hours → $40 (6 hours × $10 = $60, but daily caps at $40)
  • 30 hours → $80 (2 days × $40 < 30 hours × $10)
  • 7 days → $200 if you have a weekly rate; otherwise 7 × daily

You don't have to set all four rates. A typical bike-shop tier sets hourly + daily + weekly. Skip monthly unless you do long-term rentals.

Tier scope

Tiers can be scoped three ways:

  1. Specific vehicle model — applies only to that model. Use this if your premium e-bike costs more than your basic city bike.
  2. Vehicle type (bike / scooter / e-bike / moped) — applies to all vehicles of that type.
  3. All vehicles — leave model and type blank.

When a booking is created, the pricing engine looks up tiers in priority order: model match first, then type match, then default. The first match wins.

Required fields

FieldPurpose
NameWhat staff see in the dropdown
CurrencyUSD / EUR / etc. — must match your Stripe account
Hourly ratePer-hour cents amount, optional but typically set
Daily ratePer 24-hour block, almost always set
Deposit amountHeld on card at booking, released or charged at return
Free cancellation hoursHours before pickup when full refund applies

Deposits

The deposit is held, not charged, when a customer books. At return time:

  • Condition OK → deposit auto-releases (Stripe cancels the authorization)
  • Damage logged → operator can capture some or all of the deposit toward repair costs
  • Late return → the late-fee adjustment is added to the booking total and can be charged from the deposit hold

For deposits to work end-to-end, the customer needs a saved payment method. The walk-in wizard prompts for one if not present; the public booking flow collects card details client-side.

Late return fees

Two fields control late-fee accrual:

  • Late return grace minutes — how long after the scheduled return before the customer is "late." Default 60 minutes.
  • Late return hourly rate — fee per hour past the grace window. We charge the rounded-up hours, not minutes.

The late-fee cron runs every 15 minutes and flags overdue reservations. It does not auto-charge. Your operator triggers the fee from the booking detail page with the "Apply late fee" banner. We do this on purpose — auto-charging late returns drives chargebacks. See Late returns.

Cancellation fee

Two fields control cancellation:

  • Free cancellation hours — within this window before pickup, full refund (deposit returned, no fee).
  • Cancellation fee % — percentage of base cost retained when canceling outside the free window.

The deposit's behavior on cancellation depends on the non_refundable_deposit flag in the cancellation policy. If set, the deposit is always retained as the cancellation fee floor.

When a customer cancels within the free window, the cancel API automatically refunds the paid deposit minus any fee — see Cancellation handling.

Distance / mileage overage

For e-bikes and mopeds, you can set:

  • Included km per day — e.g., 30 km included
  • Overage per km — e.g., $0.50 per km past the included quota

At return time the actual distance is computed (from IoT telemetry if available, or operator-entered). Overage is added to the final total. Most pure-bike shops leave these blank.

Group / tiered discounts

Pricing tiers support quantity-based discounts for group bookings via a JSON column on the tier:

[
  { "min_quantity": 5, "discount_percent": 10 },
  { "min_quantity": 10, "discount_percent": 20 }
]

A booking with quantity=7 gets the 10% threshold. With quantity=12, the 20% threshold. The pricing engine picks the highest applicable threshold; discounts don't stack.

The dashboard editor doesn't expose this column directly yet — set it via SQL or the database editor. See Group / tiered pricing for the full reference.

Editing a tier

Click any tier row in the table. You can update everything except the currency (deleting and recreating is the safe path if you're switching currency on an active tier).

Existing reservations lock in their pricing snapshot at the time of booking — editing a tier doesn't retroactively change anyone's price. Only future bookings see the new rates.

Common patterns

  • Beach shop with one bike type. One tier, all-models scope, hourly + daily, $50 deposit, 24h free-cancel.
  • Premium and budget side-by-side. Two tiers, each scoped to a specific model. The premium tier has higher rates and a higher deposit.
  • Tour-day surcharge. One default tier plus one model-scoped tier for "Tour Day Cruiser" with peak-hour pricing.
  • Long-term locker. A separate tier with a high weekly rate and a configured monthly rate for multi-week rentals.

What you can't do (yet)

  • Time-of-day pricing (peak / off-peak) is not in tiers today. Workaround: separate tiers + manual swap.
  • Seasonal price changes require manual edits. We don't have scheduled price effective dates.
  • Coupon stacking — one promo code per booking, no double-stacking with group discounts.

These are on the roadmap; track them in the FAQ.