List Boat Fees
Get all fees for a specific boat
/boats/:id/feesRetrieve the fees that apply to one stay on a boat, filtered by its active pricing source. Fees are ordered by sort_order.
Authentication
Send your API key in the X-API-Key header, as on every Operator API call — see Authentication.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Boat ID (UUID) |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start | string | No | Charter start date (YYYY-MM-DD) -- selects the fees valid on that date |
end | string | No | Charter end date (YYYY-MM-DD). Only sets the charter length (see below), and only together with start; it does not filter validity |
product | string | No | Restrict to fees for a product variant (e.g. Bareboat, Crewed); fees with no product_name are always included. Without it the boat's default package is returned, never every package stacked |
guests | integer | No | Crew size; selects the matching row of a per-person fee table (MMK boats — no other fee is narrowed by it). Defaults to the boat's capacity |
When start is provided, only fees whose validity window contains the charter start date are returned — an operator publishes one price per window and a charter is priced by the window it departs in, so a stay crossing a boundary never gets two variants of one fee. Fees with no valid_from/valid_to dates are always included.
guests picks the row of a person-indexed fee table (some operators publish a park or permit fee per crew size). When absent, the boat's capacity is assumed.
Charter length
Operators often publish a fee as a table indexed by charter length -- one row per duration, such as a mooring fee of 60 EUR for 1 day, 42 EUR for 2 days and so on up to a weekly rate. Each row carries min_duration/max_duration, and only the row matching this charter contributes; the rest are omitted from the response.
The length is the number of nights from start to end. When either is absent the standard charter week (7 nights) is assumed, so a dateless call returns the fees a one-week booking would pay -- not every row of every table. Request a specific start/end to price any other duration.
Fees with no min_duration and no max_duration are unaffected and always returned.
The id path parameter must be a UUID. Non-UUID values return an empty array.
Request
For a specific stay, package and party size:
Response
Returns an array of fee objects.
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Fee ID (UUID) |
boat_id | string | Boat this fee belongs to |
description | string | Fee name/description |
amount | number | Fee amount in the boat's operator currency (or a percentage if amount_is_percentage is true — see Percentage fees) |
period | string | Billing period (see below) |
required | boolean | If true, fee is mandatory for every booking |
category | string | null | Fee category (e.g. service, equipment) |
on_request | boolean | If true, fee must be requested separately |
sort_order | integer | Display order |
valid_from | string | null | Start date of validity period (YYYY-MM-DD) |
valid_to | string | null | End date of validity period (YYYY-MM-DD) |
amount_is_percentage | boolean | Whether amount is a percentage rather than a fixed value |
percentage_base | string | null | Only on percentage fees of Nausys-priced boats: what the percentage is taken of, as Nausys names it — e.g. DAILY_PRICE (the per-day charter price), CLIENT_PRICE_WITH_EXTRAS_ADVANCE_PAYMENT (the charter price plus the other advance-paid extras). Absent elsewhere, where a percentage is of the charter price for the stay |
calculation_type | string | null | How the fee is settled: advance_payment is collected online with the charter payment; separate_payment is paid at the base; included_in_price is informational; null means the operator did not declare it and it is settled at the base |
min_duration | integer | null | Minimum charter length, in nights, for this fee to apply |
max_duration | integer | null | Maximum charter length, in nights, for this fee to apply |
product_name | string | null | Product/package variant this fee belongs to (e.g. Bareboat, Crewed) |
created_at | string | ISO 8601 timestamp |
Fee Periods
| Period | Description |
|---|---|
per_booking | Charged once per booking |
per_day | Multiplied by the number of nights |
per_person | Charged per guest |
per_person_per_day | Per guest per night of the charter |
per_person_per_night | Per guest per night |
per_person_per_week | Per guest per started week |
per_week | Charged per started week |
one_way | One-way delivery fee |
Percentage fees
When amount_is_percentage is true, amount is a percentage of a base — the charter price for the whole stay unless percentage_base names another. It applies once to that base: the period does not multiply it by nights or weeks, only a per-person period multiplies it by the number of guests. A per_day fee of 10 with amount_is_percentage: true on a €1,400 week is €140, not €980.
The example on Resolve Pricing costs every period this way.