
Service App productivity push for field teams: A bundled wave of Service App improvements lands this week - task templates can now be selected again, license plates can be long-pressed to copy from the vehicle detail screen, lock/unlock status refreshes immediately after a command is sent, precise SOC filtering is back, and the average energy level reading now matches between Dashboard and Service App. Together they remove friction across the daily field-team workflow.

Operator-configurable subscription switching: Operators can now configure how subscription switching behaves for end users - keeping the default "switch immediately" option or restricting changes to the next renewal date. This addresses customer feedback around the user-experience for discount based subscriptions.
Assignee field no longer clears when a task is completed: Resolved a bug where completing a task in GoDash silently drops the Assignee, leaving no record of who finished the task. The Assignee now stays populated after completion, restoring traceability, accountability, and audit reporting for field operations.
Faster booking creation: Bookings created via the app or Dashboard now confirm in well under a second in cases that previously took 10+ seconds, most noticeable during periods of heavy booking activity. The scheduled vehicle-assignment job that runs throughout the day also completes substantially faster, so operators see assigned vehicles appear sooner after a booking is created.
Incoming-vehicle check on empty stations less aggressive: Bookings on currently empty stations are no longer blocked just because a vehicle is scheduled to arrive far in the future. The availability check now only rejects bookings when an incoming vehicle falls inside the configured operational lead-time window, opening up legitimate availability slots that were previously blocked off.
Pricing bundle version correctly resolved on booking update: Booking updates now correctly resolve the pricing bundle version when the Dashboard sends either a pricing bundle ID or a pricing bundle version ID. This corrects a bug where pricing bundles were reset if a booking was edited after a pricing bundle was superseded by a new pricing scheme.
Insurance addition no longer offered to ineligible business accounts: For business accounts without the required annotation, the additions list no longer includes Insurance. Operators now see only the additions actually applicable to the account.
Operator-configurable subscription switching behavior: Operators can disable the "switch immediately" option on subscription switching via a new mobile setting, restricting switches to take effect at the next renewal date. Default behavior keeps the existing "switch immediately" capability, so no operator action is needed unless the change is desired.
Veriff MANUAL verifications now returned: Imported MANUAL driver license verifications are now returned for systems using Veriff, matching the behavior already in place for Onfido. The MANUAL verification state shows correctly in the user side panel during operator review.
MaaS webhook pipeline no longer drops refund invoices: MaaS providers with a configured operator-id filter now receive INVOICE_REFUNDED and the accompanying INVOICE_CREATED events for refund documents for their own customers, the same way standard invoice creation events are delivered. Resolves a silent webhook drop that broke partner-side refund handling.
Open tasks and open damages exposed via dedicated overview endpoints: New dedicated endpoints expose open tasks and open damages in their own views, so consumers can pull these high-volume lists without going through vehicle list responses. Complements the deprecation of openTasks and openDamages on the vehicle list announced in CW17.
MDS endpoints accept static authToken and operator JWT simultaneously: A new opt-in allowUserAuthFallback flag on the MDS setting lets the existing external MDS bearer token stay in place while also allowing logged-in operators with the API_MDS_READ permission to call the same endpoints. Removes the previous either/or limitation without affecting existing integrations.
Bookings expose annotations via API: Bookings now carry annotations (tags) and can be retrieved via API, so partners and integrators can classify bookings - for example by approval type or creation type - alongside the existing annotation surface for vehicles, users, and other entities.
Booking availability check supports excluding an existing booking: The /back/bookings/available-categories endpoint accepts a new excludeBookingId parameter. When editing a booking, the vehicle category it's already using will now correctly appear as available for that time slot - instead of being counted against itself and showing a false "unavailable" reading. A category only shows as unavailable if it genuinely conflicts with a different booking, so you can adjust bookings without false roadblocks.
Fulltext search on user group members: The /back/groups/{id}/members endpoint accepts a searchText parameter, so consumers can narrow the member list when selecting a new owner instead of pulling the full set.
Vehicle and event positions reliably populated in Snowflake: Resolved an issue where vehicle, event, rental, booking, and branch position data could come through as empty in Snowflake after a recent change in the upstream data-ingestion format. Positions now flow correctly across all affected tables in the data warehouse.
VEHICLES.POSITION populated for FUNCTIONAL vehicles: Resolved the case where the POSITION column was empty in the Snowflake VEHICLES table for vehicles in the FUNCTIONAL service state even when live coordinates existed. Positions now reflect current and last-known coordinates per the documented refresh cadence, restoring operational reporting that depends on per-vehicle location.
Task templates selectable again: Restored task-template selection in the Service App so operators can create tasks using predefined templates instead of building each one from scratch.

Long-press to copy license plate from the vehicle detail screen: Field service teams can now long-press the license plate or vehicle code on the vehicle detail screen to copy it to the clipboard, with a confirmation toast on iOS and Android. Removes the need to retype plates into chats, tickets, and internal tools.
Lock/unlock status refreshes after the command is sent: The Service App now reflects the current lock/unlock state immediately after a Lock or Unlock command is issued instead of showing the previous state until the screen is manually refreshed. Field vendors no longer have to navigate away and back to see the actual vehicle status.
Precise SOC filtering restored in the new Service App: Service teams can again filter by precise State-of-Charge values instead of being limited to predefined ranges, restoring a filtering capability required for daily service operations on the new Service App.
Dashboard and Service App reconciled on average energy level: Resolved the discrepancy where the Dashboard and Service App returned different average energy level figures for the same branch at the same time. Both surfaces now compute the metric from the same underlying logic, so fleet managers see consistent readings regardless of where they check.

Subscription lifecycle visible to support, including zero-price subscriptions: GoDash now shows the live Subscription State (Renewing, Switching, Expired, etc.) and surfaces switching information directly in the user side panel, so CS and Fleet Management see what's actually happening with a customer's subscription instead of inferring it from Auto-Renew and Cancelled flags. Operators can also configure free renewing subscriptions, unblocking Cycle-to-Work schemes, internal employee plans, and friends-and-family discounts.

Requires the latest app version. Contact your Customer Success Manager for details.
Vehicle filter reset clears the indicator: The map now correctly removes the "filters applied" indicator when riders tap Reset filters, so they aren't misled into thinking a filter is still active after clearing it.
Subscription State and switching info in the user side panel: Support and Fleet Management see the live Subscription State (Renewing, Switching, Expired, Switched, Cancelled) and, for in-progress switches, the name of the target subscription and the effective date. Replaces the old Auto-Renew + Cancelled flag combination that operators had to ‘reverse-engineer’ during support cases.
Dashboard-started rentals show up correctly on the calendar: Rentals started or ended from the Dashboard now use the actual start time on the calendar view, matching the existing behavior for end time. Previously these rentals were drawn at the booked start time, misaligning the timeline against reality.
Voucherable monetary flag now saves on edit: Resolved a bug where toggling the monetary setting on an existing voucherable in the Dashboard did not persist on save, leaving the voucher in an inconsistent state. The flag now persists correctly.
Allow bookings against vehicles scheduled to arrive: Booking creation no longer fails when a station has no vehicle currently assigned, as long as a vehicle is scheduled to arrive before the requested start time. Builds on the predictive station capacity work from CW20 and removes a remaining "no vehicle available" false negative from the booking planner.
False positive conflicts after overdue bookings resolved: Conflicts no longer linger on already-overdue bookings until the cooldown period passes. The planner now clears the conflict flag at the right moment, so operators don't see phantom conflicts on the calendar.
Service booking customer change error fixed: Changing the customer on a service booking via the Dashboard works again. The previous behavior returned a 500 from the API endpoint, blocking operators from re-assigning service bookings.
RidePass purchases now persist with the correct voucher type: Resolved a regression where RidePass purchases via the multi-benefit path were stored as PACKAGE instead of RIDE_PASS. Analytics, accounting, and customer-facing surfaces that depend on the voucher type now show RidePass purchases correctly.
Duplicate rental end processing prevented: A rental could previously be ended multiple times when PARKING_RESERVATION_REMOVED and RENTAL_END overlapped, producing duplicate invoices, charges, events, and webhooks. The end-state is now recorded reliably so additional end calls are rejected, eliminating the downstream duplicates.
Free renewing subscriptions supported: The platform now accepts subscriptions priced at zero, with proper renewal handling. Unblocks Cycle-to-Work plans, internal employee subscriptions, B2B-funded plans, and similar use cases that needed a renewing offer at no cost to the rider.
Geofence promotion GeoArea exposed in Snowflake: The PostGIS geo_fence column on geofence-promotion voucherables (dtype 2) is now available in Snowflake as WKT-convertible geometry, so operators can analyze geofence-based promotion performance against rentals and revenue without reaching back into the source database.
Utilization metric corrected for over-100% readings: Fixed an arithmetic issue in the Utilization % calculation that produced unrealistic values (well above 100%) for one transit operator's fleet on the Fleet Health dashboard. The metric now stays within expected bounds and reads consistently against Availability %.
Revenue by Price Component sign correction: Rebates on the Revenue by Price Component tile in the Monetization Intelligence dashboard now render with the correct negative sign, so the per-component breakdown reconciles against total revenue.

Predictive station capacity for A-to-B networks: The booking planner now models where every vehicle will be across stations over time, not just where it is right now. When a vehicle is booked from station A to station B, station A's future availability reflects the departure and station B's future capacity already includes the incoming vehicle, the moment the booking is confirmed. The next rider can book that car at station B before it physically arrives, unlocking availability slots that were previously closed off whenever a vehicle was in transit or scheduled to move. Operators can tune this per station using operational lead time controls, opening up future availability slots between bookings without overloading station capacity, and giving them direct control to balance utilization against operational load as demand shifts.
Free Minutes Visibility on Mobile and GoDash: Free Minute wallet balances are now visible to riders in the mobile app and to operators in the Dashboard. Riders see what they have left at a glance, and operators see the total remaining minutes directly in the user side panel. The mobile app still defaults to showing a monetary wallet balance, adding on Free Minutes if the balance is non-zero.

Requires the latest app version. Contact your Customer Success Manager for details.
Free Minute balance visible in the rider app: Riders on operators that use Free Minutes now see their remaining Free Minute balance directly in the mobile app.
Correct your email or phone during sign-up before continuing: New riders signing up with a code by email or SMS can now review what they entered on the OTP screen. Resolves a long-standing point of friction during login which required navigating back to check the email that was entered.

Apple Pay sign-up flow runs through to completion: Riders adding Apple Pay during sign-up are no longer bounced back into the payment-method step due to a call-back race condition. The app waits for confirmation from the PSP before returning the user to the registration to ensure the payment method is registered properly.
iOS riders no longer logged out unexpectedly: Resolved an issue on iOS where riders could be silently logged out and forced to sign in again. Login sessions now persist reliably across app launches.
Marketing consent editable in the user app: Resolved a bug where riders could not change their marketing consent setting from inside the app. The toggle now saves correctly, so marketing preferences are honored without operator intervention.
Push notification content preserved on iOS cold start: Push notifications now retain their full content (deep links, personalized text) when iOS opens the app from a cold state, so tapping a notification takes riders to the right place even after the app has been closed and killed.
Consistent currency formatting on the new Subscriptions screen: Currency values on the Subscriptions screen now use consistent formatting across the page, removing the visual inconsistency riders saw when browsing or switching subscription tiers.
Map filter button hidden during an active rental: The filter button in the on-demand map view is now hidden while a rental is in progress, reducing on-screen clutter during the trip and matching the simplified active-rental UI.
Point-of-interest search uses the device's primary language: Search results for points of interest now respect the device's primary language setting, so riders see locally relevant places in the language they're using rather than mixed-language results.
Category filter shows active state more clearly: The category filter in the on-demand vehicle list has a clearer active-state indicator and improved defaults, helping riders see at a glance which category they have selected.

Free Minute balance visible in the user side panel: Operators handling Free Minute support can now see a customer's total remaining free minutes directly in the user side panel, alongside lifetime value and current voucher value.
Refunded invoice number shown in the user invoice panel: Refund entries in the user invoice panel now display the number of the original invoice they refer to, removing the need for manual cross-reference. The refund panel can be opened directly via “Show History” to see the original invoice and other related refunds.

Code field on Promotion creation: Operators can now set the Code directly when creating a Promotion, re-enabling the creation of customized promotion codes.
Admin user names now editable for affected tenants: Resolved a bug where certain admins could not change a user's name from the Dashboard. Admins can now update user names directly, restoring a basic support capability.
Removing a vehicle tag no longer clears hidden tags: Resolved a bug where removing a single vehicle tag in the Dashboard also cleared existing tags attached to that vehicle, disrupting tag-driven service workflows.
Task templates correctly apply their category: Resolved a bug where task templates did not apply the configured task category when used, forcing operators to set the category manually each time.
Clearing Vehicle Categories on a voucher now applies it to all categories: Operators clearing the Vehicle Categories field on a voucherable can now reliably remove the category restriction. Previously, clearing the field was silently treated as "applies to no categories", preventing the voucher from being used at all.
Rating comments included in the rentals export: The exported rentals table now includes the rating comment text alongside the numeric rating, so operators can triage low-rated trips and read rider feedback in one pass without an extra dashboard lookup.
City-level user segmentation in marketing campaigns: Each user's address details (street, zip code, city, country) are now synced to the marketing platform (Braze) on user update. Operators can target marketing by city — even users who have not yet completed a rental — which was previously impossible because location context was only available after a first rental.
End-of-day and end-of-week voucher validity restored: Restored support for voucherables that are valid until the end of the day, hour, or week in which they were created. This option was inadvertently removed during the multi-benefit rework and has been re-enabled.
Accurate per-voucher amounts on invoice breakdowns: When a rental has multiple vouchers from the same promotion applied to it (e.g., several charging vouchers), the invoice line items now show the correct individual rebate per voucher rather than the aggregated total on every line. The invoice total was always correct; this fixes the per-line detail.
Faster default billing cycle: The system now checks for finished rentals at a higher frequency by default, reducing situations where users could start a follow-up rental within seconds to bypass a possible failed payment.
INVERS smoke event integration: The platform can now receive smoke detection events from INVERS-connected vehicles. This is a stepping stone: it enables future work to trigger and handle follow-up actions when a smoke event is received. No operator-facing behavior changes yet.
Future destination station capacity forecast in availability: When an A-to-B booking exists, the destination station's forecasted available capacity now includes the in-transit vehicle. Integration partners and the app can show - and let users book - capacity at the destination station before the vehicle physically arrives.
Availability endpoints updated to support A-to-B bookings: The /availability, /available-categories, and /available-stations endpoints have been updated to integrate with the upcoming V2 availability layer. Contracts remain unchanged. Once V2 is enabled, results will account for vehicles in transit, A-to-B bookings, and trip chaining across stations. Only relevant for booking operators supporting A-to-B bookings.
Free Minute fields exposed in /front voucher endpoints: Voucher responses on the /front/vouchers endpoints now include freeMinutes (originally granted) and remainingFreeMinutes (currently available) when the underlying voucher has monetary=false. Integrators can show Free Minute balances directly without a secondary lookup.
remainingMinutesValue available on /back customer detail: The /back/customers/{id}/details endpoint now returns remainingMinutesValue on the user statistics object, supporting Free Minute display in operator-facing surfaces.
Availability % aligned with Utilization %: Availability % is now calculated as a time-based metric, matching the Utilization % calculation. Operators can read the two metrics side-by-side without applying mental adjustments for definitional differences.
Active vehicle count and Revenue per Vehicle denominator corrected: Resolved an accuracy issue in the active vehicle count and the Revenue per Vehicle denominator on the Fleet Health dashboard. The numbers now match operator expectations and tie out against source data.

Requires the latest app version. Contact your Customer Success Manager for details.
Vehicle photo capture is more reliable: Riders can now finish the rental start and end photo flow without hitting a recurring iOS camera crash, and photo uploads complete reliably even on weak mobile signal instead of stalling for minutes.
Consistent Mapbox token usage across the app: Aligned Mapbox token handling so map components initialize reliably across all map-driven flows, preventing intermittent map load failures.
Updated iOS location permission purpose string: Refined the location permission prompt with a clearer description of how location is used, addressing App Store review feedback and clearing the way for faster iOS submissions.
Switch active subscriptions from the mobile app: Riders can change their subscription tier directly from their account screen, with the option to apply the switch immediately or at the next renewal. Replaces the previous flow of cancelling, waiting, and re-subscribing. Note that the Subscription screens in general have received a UI refresh, and some new translations need to be set-up.
Free Minute balance visible in the rider app: Riders on operators that use Free Minutes now see their remaining Free Minute balance directly in the mobile app.
Correct your email or phone during sign-up before continuing: New riders signing up with a code by email or SMS can now review what they entered on the OTP screen. Resolves a long-standing point of friction during login which required navigating back to check the email that was entered.
Apple Pay sign-up flow runs through to completion: Riders adding Apple Pay during sign-up are no longer bounced back into the payment-method step due to a call-back race condition. The app waits for confirmation from the PSP before returning the user to the registration to ensure the payment method is registered properly.
iOS riders no longer logged out unexpectedly: Resolved an issue on iOS where riders could be silently logged out and forced to sign in again. Login sessions now persist reliably across app launches.
Marketing consent editable in the user app: Resolved a bug where riders could not change their marketing consent setting from inside the app. The toggle now saves correctly, so marketing preferences are honored without operator intervention.
Push notification content preserved on iOS cold start: Push notifications now retain their full content (deep links, personalized text) when iOS opens the app from a cold state, so tapping a notification takes riders to the right place even after the app has been closed and killed.
Consistent currency formatting on the new Subscriptions screen: Currency values on the Subscriptions screen now use consistent formatting across the page, removing the visual inconsistency riders saw when browsing or switching subscription tiers.
POI search now works in the app and is configurable from the Dashboard: Riders can search for points of interest directly in the app, and operators control which result types appear (on-demand stations, Mapbox POIs) through an extensible map-search configuration in the Dashboard.
Insurance add-on now respects per-category configuration: The insurance icon and "Add insurance" CTA only appear for vehicle categories where the add-on is enabled, so riders can start rentals on non-insured categories without hitting a forced-insurance error. Operators can now mix insured and non-insured categories within the same fleet.
Smoother map search when looking for a vehicle: Search results show up faster while loading, and a working clear button now properly resets the active query across both the map view and the search screen. Riders no longer get stuck with a previous query lingering after they've cleared the input.
Map filter button hidden during an active rental: The filter button in the on-demand map view is now hidden while a rental is in progress, reducing on-screen clutter during the trip and matching the simplified active-rental UI.
Point-of-interest search uses the device's primary language: Search results for points of interest now respect the device's primary language setting, so riders see locally relevant places in the language they're using rather than mixed-language results.
Category filter shows active state more clearly: The category filter in the on-demand vehicle list has a clearer active-state indicator and improved defaults, helping riders see at a glance which category they have selected.

Pickup station no longer overwritten on mobile bookings: Resolved a flow bug where the pickup station selected in the mobile app was silently replaced by the return station mid-booking, forcing riders to cancel and rebook repeatedly. Bookings now persist the chosen pickup station end-to-end.

Switch your subscription directly in the mobile app: End users can now upgrade or downgrade their active subscription tier from the mobile app, applying the change immediately or at the next renewal date. Riders no longer need to cancel and wait for a billing cycle to choose a different plan, removing a long-standing source of friction and missed conversions.

Requires the latest app version (3.4.58+). Contact your Customer Success Manager for details.
Switch active subscriptions from the mobile app: Riders can change their subscription tier directly from their account screen, with the option to apply the switch immediately or at the next renewal. Replaces the previous flow of cancelling, waiting, and re-subscribing. Note that the Subscription screens in general have received a UI refresh, and some new translations need to be set-up.
Smoother map search when looking for a vehicle: Search results show up faster while loading, and a working clear button now properly resets the active query across both the map view and the search screen. Riders no longer get stuck with a previous query lingering after they've cleared the input.

Pickup station no longer overwritten on mobile bookings: Resolved a flow bug where the pickup station selected in the mobile app was silently replaced by the return station mid-booking, forcing riders to cancel and rebook repeatedly. Bookings now persist the chosen pickup station end-to-end.
Attribute damages to blocked users: Operators can now select blocked users in the damage "Caused by" field, restoring proper damage attribution for fleets where blocked riders still need to appear on historical damage records.
Side panel updates fallback translations correctly: The translation side panel now refreshes when a fallback translation is changed, so operators see the latest text without needing to close and re-open the panel.
Cleaner Task, Issue, and Booking overviews: Removed the KPI numbers from the Tasks, Issues, and Bookings overview pages. The numbers were updated with a delay and could disagree with the live data shown on the same page, which was confusing in practice. Operators now see overviews focused on the live work without conflicting numbers next to them.
Verification Flags implicitly updated based on Login Method: Users logging in via SMS/Email OTP now have their respective verification flags to indicate that this contact information is verified implicitly.
The following items apply exclusively to the new beta version of the Service App. The legacy Service App is unaffected.
Damage reporting works again in the Service App beta: Field teams using the new beta Service App can report damages without hitting the previous block, restoring an essential part of the on-the-ground service workflow.
Vehicle tag management restored in the Service App beta: Adding and removing tags on vehicles works again in the new beta Service App, so service workflows that depend on tag-driven assignments are no longer interrupted.

Pickup station no longer overwritten on mobile bookings: Resolved a flow bug where the pickup station selected in the mobile app was silently replaced by the return station mid-booking, forcing riders to cancel and rebook repeatedly. Bookings now persist the chosen pickup station end-to-end.

Vehicle condition capture rapid-tap fix: Tapping the photo button very quickly no longer skips steps or captures the same image twice during the four-step vehicle condition flow, ensuring a complete photo record for every rental.
Android station search padding: Added proper padding to the station search screen on Android so the search bar no longer sticks to the top edge of the screen, matching the iOS layout.
Tutorial text no longer overlaps CTA buttons: Fixed a layout issue where longer tutorial text overflowed the call-to-action buttons, making part of the onboarding message unreadable.
Parking POI tap fix on iOS: Resolved a bug where tapping a parking POI right after a vehicle caused the wrong banner to flash briefly and a reduction pop-up to remain on screen. Tapping POIs now behaves consistently.
PayPal sign-in branding fix on iOS: The PayPal sign-in popup now shows the correct operator app name instead of the generic internal name, restoring a consistent branded experience when adding PayPal as a payment method.
Invoice PDFs download directly in the app: Users can save their invoice files from custom in-app pages without being pushed out to an external browser, unlocking additional capabilities while keeping the user in the app.
Reliable vehicle lock/unlock via the app: Resolved an issue affecting a subset of end users who were unable to open or close vehicles via the mobile app, even though remote commands and the service app worked. Affected users can now operate vehicles reliably from the end-user app.
Custom External Verification Fix on Android: Resolved an issue where the Android in-app browser closed prematurely during external verification, preventing the callback URL from loading. Users are no longer returned to the verification popup and can complete identity verification in one pass.
Past Trips Show Total Costs: Fixed an issue where some past trips with 0 value invoices were missing total costs in the overview, so riders can now see the full price for every completed trip.
Android Email Field Crash Resolved: Fixed a crash on certain Android devices where tapping the email input field on the login screen immediately showed an error, blocking login entirely.
Estimated Price Excludes Entitled Additions: The booking list now correctly excludes additions that are covered by voucher entitlements from the estimated price, so riders see accurate quotes before confirming.
Localised Search Results: Search results in the mobile app can now be localised to the operator's configured region, so users see relevant local results instead of global matches across multiple countries.