intermediate
pricing
subscriptions
packages

Subscription Packages

Create and manage subscription plans that provide recurring ride benefits to your customers including unlocks, minutes, and distance allowances

Levy Fleets TeamDecember 25, 202516 min read

Subscription Packages

Subscription packages allow customers to pay upfront for bundled ride benefits over a set period. This guide covers how to create, configure, and manage subscription plans that provide recurring value to your riders.

Overview

Subscription packages are prepaid plans that grant customers allowances for unlocks, ride minutes, pause minutes, and/or distance over a defined period. Unlike one-time ride packages, subscriptions can optionally auto-renew and provide ongoing benefits to loyal customers.

Key Features

  • Flexible allowances - Include unlocks, minutes, pause minutes, and/or distance
  • Two limit types - Daily limits (reset each day) or whole-duration limits (total for the subscription period)
  • Auto-renewal support - Optional automatic renewal when subscription expires
  • Location scoping - Restrict packages to specific subaccounts (locations)
  • Vehicle type targeting - Limit benefits to specific vehicle models
  • Internationalized content - Titles and descriptions in multiple languages
  • Step ordering - Control display order in the mobile app

Accessing Subscription Packages

1

Navigate to Pricing

Go to Dashboard and click Pricing in the sidebar navigation.

2

Find Subscriptions Section

Scroll to the Subscription Packages section.

3

Manage Packages

Click Add Package to create a new subscription or use edit/delete icons for existing ones.

Location-Specific

Subscription packages are managed per-location. Switch to the appropriate subaccount before creating packages.

Package Configuration

Basic Information

Title (i18n)

The display name shown to customers, with translations for multiple languages.

FieldDescriptionExample
English TitlePackage name in English"Weekly Unlimited"
Spanish TitlePackage name in Spanish"Ilimitado Semanal"

Best Practices:

  • Keep titles concise (2-4 words)
  • Highlight the key benefit
  • Use consistent naming across packages

Description (i18n)

Optional extended description explaining package benefits.

FieldDescriptionExample
English DescriptionFull details in English"Unlimited rides for 7 days"
Spanish DescriptionFull details in Spanish"Viajes ilimitados por 7 dias"

Step Number

Controls the display order in the mobile app and dashboard.

ValueDisplay Position
1First (top)
2Second
3+Lower positions

Lower numbers appear first. Use this to highlight your most popular or recommended packages.

Pricing

Price (Cents)

The amount customers pay for the subscription, stored in cents.

EntryStored ValueDisplay
999999 cents$9.99
24992499 cents$24.99
49994999 cents$49.99

Common Price Points:

  • Weekly pass: $9.99 - $14.99
  • Monthly pass: $24.99 - $49.99
  • Seasonal pass: $99.99 - $149.99

Duration

Duration Days

How long the subscription remains active after purchase.

DaysEquivalent
71 Week
142 Weeks
30/311 Month
90/933 Months
365/3661 Year

The mobile app automatically formats these into user-friendly strings (e.g., "1 Week", "1 Month").

Limit Type

Choose how allowances are consumed during the subscription period:

Daily Limit

Allowances reset at midnight each day.

BehaviorExample
Resets daily60 minutes/day x 30 days = 1,800 potential minutes
Per-day capCustomer can use up to 60 minutes each day
Unused doesn't roll overDay 1's unused minutes don't carry to Day 2

Best For:

  • Commuter passes (daily usage patterns)
  • Fair usage enforcement
  • Predictable daily benefits

Whole Duration

Allowances are a total pool for the entire subscription period.

BehaviorExample
Total pool500 minutes for the entire 30-day period
Flexible usageCustomer can use 100 minutes one day, 0 the next
Use anytimeFull flexibility within the period

Best For:

  • Casual riders with variable schedules
  • Vacation/tourist passes
  • Maximum flexibility offerings

Auto-Renew

Enable automatic renewal when the subscription expires.

SettingBehavior
EnabledAutomatically charges customer and extends subscription
DisabledSubscription ends; customer must manually repurchase

Auto-Renewal Notes

Auto-renewal requires a saved payment method. Customers can cancel auto-renewal anytime. Failed renewals notify the customer via push notification and email.

Included Allowances

Configure what benefits the subscription provides. Leave fields blank/null for benefits not included.

Included Unlocks

Number of free unlocks included in the subscription.

ValueBehavior
nullUnlock fee not covered
1One free unlock per period (or per day)
10Ten free unlocks total (or per day)
999Essentially unlimited unlocks

With daily_limit: Unlocks reset each day With whole_duration: Unlocks are a total pool

Ride Minutes

Minutes of active riding included.

ValueBehavior
nullNo minute coverage
6060 minutes per period (or per day)
300300 minutes total (or per day)
9999Essentially unlimited

Pause Minutes

Minutes of paused time included.

ValueBehavior
nullPause fees charged normally
3030 pause minutes per period (or per day)
120120 pause minutes total (or per day)

Ride Distance (KM)

Kilometers of distance included.

ValueBehavior
nullDistance not covered
5050 km per period (or per day)
500500 km total (or per day)

Distance Pricing

Distance allowances only apply to vehicles using per-distance pricing. If your vehicles use per-minute pricing, distance allowances will not be consumed.

Scoping Options

Location (Subaccount)

By default, packages are tied to the subaccount where they're created.

SettingBehavior
Subaccount-specificPackage only valid at that location
Global (null)Package valid at any location

Use Cases:

  • City-specific passes
  • Campus-only subscriptions
  • Multi-location travel passes

Vehicle Types

Restrict the subscription to specific vehicle models.

SettingBehavior
nullApplies to all vehicle types
[e-bike-id]Only applies to e-bikes
[scooter-id, bike-id]Applies to scooters and bikes

Use Cases:

  • E-bike premium passes
  • Scooter-only commuter plans
  • Vehicle-specific promotions

Activation Status

Activated

Controls whether the package is available for purchase.

StatusBehavior
Not Activated (false)Package is draft; not visible to customers
Activated (true)Package is live; customers can purchase

Immutable When Active

Once a package is activated, it becomes immutable. You cannot edit an activated package - you must deactivate it and create a new one. This protects existing subscriptions from unexpected changes.

Creating a Subscription Package

Step 1: Basic Information

  1. Step Number - Set display order (1 = first)
  2. Title - Enter title in supported languages
  3. Description (Optional) - Add extended description

Step 2: Pricing and Duration

  1. Price - Enter price in cents (e.g., 999 for $9.99)
  2. Duration - Set number of days
  3. Limit Type - Choose daily_limit or whole_duration
  4. Auto-Renew - Enable if desired

Step 3: Allowances

Configure what's included:

  1. Unlocks - Number of free unlocks
  2. Minutes - Included ride minutes
  3. Pause Minutes - Included pause minutes
  4. Distance - Included distance (km)

Leave any field blank if not included.

Step 4: Targeting (Optional)

  1. Vehicle Types - Select specific vehicle models or leave for all
  2. Location is automatically set to your current subaccount

Step 5: Save as Draft

Click Create to save. The package remains in draft (not activated) until you're ready.

Step 6: Activate

When ready to go live:

  1. Review all settings carefully
  2. Toggle Activated to true
  3. Click Save

Review Before Activating

You cannot edit activated packages. Double-check everything before activating. If you need to make changes, you'll need to deactivate and create a new package.

How Subscriptions Are Applied

During Billing

Subscriptions are applied in Stage 3 of the billing pipeline, after tier benefits and before ride packages:

Base Charges -> Tier Benefits -> SUBSCRIPTION -> Packages -> Dynamic -> Promo -> Final

Consumption Logic

  1. Find active subscriptions for the customer
  2. Filter by location - Subaccount-specific match first, then global
  3. Sort by start date - Oldest subscription used first
  4. Check reset needed - For daily limits, check if midnight has passed
  5. Consume allowances - Deduct unlocks, minutes, pause, distance as needed
  6. Calculate discount - Total value of benefits consumed
  7. Update tracking - Record usage and update remaining allowances

Daily Limit Reset

For daily_limit subscriptions:

  • The system checks last_reset_at timestamp
  • If a new day has started, allowances are reset to their full values
  • Reset happens on first ride of the new day

Usage Tracking

Each subscription purchase tracks:

  • remaining_minutes - Minutes still available
  • remaining_pause_minutes - Pause minutes still available
  • remaining_distance_km - Distance still available
  • remaining_unlocks - Unlocks still available
  • usage_events - Array of usage records per ride
  • total_value_applied_cents - Total discount value applied

Managing Subscriptions

Viewing Packages

The package list displays:

ColumnDescription
StepDisplay order
TitlePackage name
PriceCost in dollars
DurationLength of subscription
Limit TypeDaily or whole duration
Auto-RenewEnabled/disabled
StatusActivated or draft

Editing Packages

Draft packages (not activated):

  1. Click Edit icon
  2. Modify any fields
  3. Click Save

Activated packages:

  • Cannot be edited
  • Must deactivate first
  • Create a new package with desired changes

Deactivating Packages

To stop new purchases:

  1. Click Edit icon
  2. Toggle Activated to false
  3. Click Save

Existing active subscriptions continue to work. Only new purchases are prevented.

Deleting Packages

  1. Click Delete icon
  2. Confirm deletion

Soft Delete

Deleted packages are soft-deleted (marked with deleted_at). Existing purchases remain valid and continue to work until they expire.

Mobile App Integration

Package Display

The mobile app shows subscription packages with:

  • Title (localized)
  • Description (localized)
  • Price (formatted, e.g., "$9.99")
  • Duration (formatted, e.g., "1 Week")
  • Included allowances
  • Location applicability
  • Already-purchased indicator

Purchase Flow

1

Select Package

Customer chooses a subscription package from the available options.

2

Choose Payment

Customer selects payment method (wallet balance or card).

3

Process Payment

System creates Stripe PaymentIntent (for card payments) or deducts from wallet.

4

Confirm Purchase

Customer confirms payment details.

5

Activate Subscription

subscription_package_purchases record is created and benefits become immediately available.

Viewing Active Subscriptions

Customers see their active subscriptions with:

  • Package name and description
  • Remaining allowances
  • Expiration date
  • Usage statistics
  • Cancel/manage options

Common Scenarios

Scenario 1: Weekly Commuter Pass

Goal: Daily commuter with predictable usage

Setup:

  • Title: "Weekly Commuter"
  • Price: $14.99 (1499 cents)
  • Duration: 7 days
  • Limit Type: daily_limit
  • Included Unlocks: 2/day
  • Ride Minutes: 60/day
  • Pause Minutes: 15/day
  • Auto-Renew: Yes

Result: Customer gets 2 free unlocks and 60 minutes each day for a week.

Scenario 2: Monthly Unlimited

Goal: Heavy user with variable schedule

Setup:

  • Title: "Monthly Unlimited"
  • Price: $49.99 (4999 cents)
  • Duration: 30 days
  • Limit Type: whole_duration
  • Included Unlocks: 100
  • Ride Minutes: 2000
  • Pause Minutes: 500
  • Auto-Renew: Yes

Result: Customer gets a pool of 2000 minutes to use however they want during the month.

Scenario 3: Tourist Day Pass

Goal: Visitors exploring for a day

Setup:

  • Title: "Explorer Day Pass"
  • Price: $9.99 (999 cents)
  • Duration: 1 day
  • Limit Type: whole_duration
  • Included Unlocks: 5
  • Ride Minutes: 120
  • Pause Minutes: 60
  • Auto-Renew: No

Result: Tourist gets 2 hours of riding with 5 unlocks for a single day.

Scenario 4: E-Bike Premium

Goal: Premium e-bike riders only

Setup:

  • Title: "E-Bike Elite"
  • Price: $29.99 (2999 cents)
  • Duration: 30 days
  • Limit Type: daily_limit
  • Included Unlocks: 3/day
  • Ride Minutes: 90/day
  • Vehicle Types: [e-bike-model-id]
  • Auto-Renew: Yes

Result: Benefits only apply when riding premium e-bikes.

Best Practices

Package Design

  1. Offer tiered options - Budget, standard, and premium
  2. Match usage patterns - Commuters vs. casual riders
  3. Consider limit types - Daily for heavy users, whole-duration for flexibility
  4. Use meaningful step numbers - Highlight recommended packages first

Pricing Strategy

  1. Calculate break-even - Ensure package value exceeds regular pricing for target usage
  2. Offer savings - Make subscriptions clearly better than pay-per-ride
  3. Test price points - A/B test different prices
  4. Consider auto-renewal - Predictable revenue vs. customer preferences

Activation

  1. Test thoroughly - Verify in staging before activating
  2. Communicate changes - Announce new packages to customers
  3. Plan for immutability - Once activated, you can't change settings
  4. Version carefully - Create new packages rather than editing

Monitoring

  1. Track purchases - Monitor subscription adoption rates
  2. Analyze usage - Understand how customers use allowances
  3. Watch churn - Identify cancellation patterns
  4. Calculate LTV - Lifetime value of subscription customers

Technical Reference

Database Table: subscription_packages

ColumnTypeDescription
idUUIDUnique identifier
subaccount_idUUIDLocation scope (null = global)
step_numberIntegerDisplay order
title_i18nJSONBLocalized titles {"en": "...", "es": "..."}
description_i18nJSONBLocalized descriptions
price_centsIntegerPackage price in cents
duration_daysIntegerSubscription duration
limit_typeEnum'daily_limit' or 'whole_duration'
auto_renewBooleanAuto-renewal enabled
activatedBooleanAvailable for purchase
included_unlocksIntegerUnlocks included (null = not covered)
ride_minutesIntegerMinutes included
pause_minutesIntegerPause minutes included
ride_distance_kmIntegerDistance in km included
vehicle_typesText[]Targeted vehicle models
deleted_atTimestampSoft delete timestamp

Database Table: subscription_package_purchases

ColumnTypeDescription
idUUIDUnique identifier
customer_uuidUUIDCustomer reference
package_idUUIDReference to package
package_snapshotJSONBCopy of package at purchase time
subaccount_idUUIDLocation where purchased
statusText'active', 'expired', 'cancelled'
limit_typeText'daily_limit' or 'whole_duration'
started_atTimestampWhen subscription began
expires_atTimestampWhen subscription ends
last_reset_atTimestampLast daily reset time
remaining_minutesIntegerMinutes still available
remaining_pause_minutesIntegerPause minutes still available
remaining_distance_kmDecimalDistance still available
remaining_unlocksIntegerUnlocks still available
usage_eventsJSONBArray of usage records
total_value_applied_centsIntegerTotal discount applied

Troubleshooting

Package Not Appearing

  1. Check activated status - Must be activated to show in mobile app
  2. Verify deleted_at - Ensure package isn't soft-deleted
  3. Check subaccount - Customer might be in a different location

Benefits Not Applying

  1. Check subscription status - Must be 'active'
  2. Verify expiration - Ensure subscription hasn't expired
  3. Check limit reset - For daily limits, verify reset logic
  4. Review remaining allowances - May be exhausted

Cannot Edit Package

  1. Check activated status - Activated packages are immutable
  2. Deactivate first - Toggle activated to false
  3. Create new package - With desired changes

Daily Limits Not Resetting

  1. Check timezone - Resets at midnight in server timezone
  2. Verify last_reset_at - Should update on first ride of new day
  3. Review limit_type - Must be 'daily_limit' not 'whole_duration'

Auto-Renewal Issues

  1. Check payment method - Customer needs saved payment
  2. Verify auto_renew flag - Must be enabled on package
  3. Review Stripe logs - Check for payment failures

Subscriptions Configured

With subscription packages in place, you can offer recurring value to your riders, increase customer retention, and generate predictable recurring revenue. Monitor subscription metrics to optimize your offerings.