Forfaits (Flat-rate Packages)
Configure flat-rate packages (forfaits) in Sixième Étoile — fixed prices for recurring trip patterns, zone coverage, validity dates, and how they override dynamic pricing.
Overview
Forfaits are fixed-price packages for trips that follow a predictable pattern — such as an airport transfer for a corporate client or a regular weekly shuttle between two fixed locations. Unlike dynamic zone-based pricing, a forfait applies a single flat HT price regardless of actual distance variation within its defined scope.
When a new quote line is created, the pricing engine checks for applicable forfaits before attempting zone-based or route-based calculation. If a forfait matches, it overrides dynamic pricing entirely.
Forfait Fields
| Field | Purpose | Allowed values | Effect |
|---|---|---|---|
name | Descriptive label for the package | Free text | Displayed in the forfait picker and on the quote line |
originZone | Origin zone or address | Zone ID or specific address | Matched against the pickup address |
destinationZone | Destination zone or address | Zone ID or specific address | Matched against the dropoff address |
vehicleCategory | Vehicle category this forfait applies to | Category code (e.g. BERLINE, VAN) or null | If null, matches all categories |
fixedPriceHT | The flat pre-tax price for the package | Decimal > 0 (HT in euros) | This exact value is used as the quote line price |
validFrom | Start date of validity | ISO date (e.g. 2026-01-01) or null | If null, the forfait is always valid from the past |
validTo | End date of validity (inclusive) | ISO date or null | If null, the forfait never expires |
clientId | Restrict forfait to a specific client contact | Contact ID or null | If null, the forfait is available globally to all clients |
agencyId | Restrict forfait to a specific agency | Agency ID or null | If null, the forfait is available globally |
isActive | Whether this forfait can be matched | true / false | Inactive forfaits are skipped |
notes | Internal operator notes | Free text | Not shown on quotes or invoices |
How Forfait Matching Works
The engine performs forfait lookup during quote line price calculation in this order:
- Collect all active forfaits where
validFrom ≤ today ≤ validTo(or validity dates are null). - Filter to forfaits where
clientIdmatches the quote's client (orclientId = null). - Filter to forfaits where
agencyIdmatches the quote's agency (oragencyId = null). - Filter to forfaits where
originZonematches the pickup address anddestinationZonematches the dropoff address. - Filter to forfaits where
vehicleCategorymatches the selected vehicle (orvehicleCategory = null). - If one or more forfaits remain, select the most specific one: client-specific > agency-specific > global; with
vehicleCategory> without. - Apply
fixedPriceHTas the line price. Zone multipliers, advanced rates, and seasonal multipliers are not applied.
Override Behavior
A matched forfait completely overrides dynamic pricing for that quote line. This means:
- Zone multipliers from
PricingZoneare ignored. - Advanced rates (night/weekend windows) are ignored.
- Seasonal multipliers are ignored.
- Operator margins configured in
OrganizationPricingSettingsare not automatically added — thefixedPriceHTis the final HT price as entered.
Important: If you want to include a margin in a forfait, incorporate it into the
fixedPriceHTvalue at creation time. The forfait price is the final commercial HT price.
Time-limited Forfaits
Use validFrom and validTo to create event-specific packages without affecting permanent pricing:
- Trade show weeks: set exact event dates.
- Holiday season: set December 20 – January 5.
- Summer peak: set July 1 – August 31.
After validTo, the forfait is automatically excluded from matching. Existing quotes created while the forfait was valid retain their price; new quotes after expiry use the regular pricing path.
Configuring a Forfait
- Go to Settings → Tarification → Forfaits (screen N-09).
- Click Add Forfait.
- Enter a name, select origin zone/address and destination zone/address.
- Set
fixedPriceHT. - Optionally set
vehicleCategory,validFrom,validTo,clientId, oragencyId. - Save. The forfait is immediately active for new quotes.
Practical Tips
- Use client-scoped forfaits for negotiated rates. When a corporate client has a special rate for their regular airport transfer, create a forfait scoped to that
clientId. Other clients continue to use dynamic pricing for the same route. - Name forfaits clearly. Include the client name and route in the forfait name (e.g. "Société ABC — CDG ↔ Paris 8e — Berline") so operators can identify them quickly in the picker.
- Check for conflicts. If two forfaits both match a trip (e.g. a global forfait and a client-specific forfait), the more specific one wins. Verify with a test quote that the correct forfait is selected.
- Forfaits are not retroactive. Changing a forfait's
fixedPriceHTdoes not update existing quote lines. To revise a price for an existing quote, edit the quote line directly.
Routes and Pricing Grids
Configure zone-to-zone contractual fixed prices (ZoneRoute) and pricing grids in Sixième Étoile — purpose, fields, Fixed Grid mode, and bidirectional pricing.
Margins and Multipliers
Configure global and per-category margin percentages and base multipliers in Sixième Étoile — purpose, allowed values, stacking order, and effect on final HT price.