---
title: "Fetch a single surcharge/discount by id. Returns 404 when the id does not exist
or a sign-ambiguous type's stored sign does not match this endpoint's collection."
method: GET
path: "/v2/discounts/{id}"
tags: ["Discounts"]
---

# Fetch a single surcharge/discount by id. Returns 404 when the id does not exist
or a sign-ambiguous type's stored sign does not match this endpoint's collection.

`GET /v2/discounts/{id}`

## Path parameters

- `id` integer, required

## Response `200`

- DiscountViewModel — View model representing a discount with all its properties and criteria. Amounts are always expressed as positive values; the system stores them as negative internally.
  - `id` integer — The ID of this record.
  - `criteria` EntityCriteriaViewModel[] — Value-based criteria rules. Shadows Criteria so this endpoint can tag it with IgnoreMapAttribute without touching the base class. AutoMapperConfigurator picks up the attribute here and registers a destination-side ignore for Criteria, preventing AutoMapper from touching that session-dependent lazy getter on a freshly constructed entity.
    - `field` 'arrival_days_from_now' | 'departure_days_from_now' | 'nights' | 'guests' | 'adults' | 'children' | 'pets' | 'booked_date' | 'arrival_date' | 'departure_date' | 'arrival_day_of_week' | 'arrival_day_of_month' | 'arrival_month_of_year' | 'departure_day_of_week' | 'departure_day_of_month' | 'departure_month_of_year' | 'booked_day_of_week' | 'booked_day_of_month' | 'booked_month_of_year' | 'has_holiday' | 'season' | 'property' | 'listing_site' | 'tag' | 'arrival_gap' | 'departure_gap' | 'arrival_or_departure_gap' | 'email_address_status' | 'payment_status' | 'deposit_status' | 'security_deposit_status' | 'card_on_file_status' | 'payment_method_status' | 'renter_agreement_status' | 'travel_insurance_status' | 'pending_status' | 'inquiry_status' | 'has_comment' | 'inquiry_source' | 'has_phone_number' | 'received_time' | 'quote_status' | 'dates_held' | 'created_on_channel' | 'guest_review_status' | 'door_code_status' | 'is_early_check_in' | 'is_late_checkout' | 'surcharge' | 'discount' | 'is_repeat_guest' | 'booked_to_arrival_days' | 'booked_to_departure_days' | 'sentiment_status' | 'booking_type'
    - `friendly_summary` string
    - `operator` 'equal_to' | 'greater_than' | 'greater_than_or_equal_to' | 'less_than' | 'less_than_or_equal_to' | 'not_equal_to' | 'on' | 'after' | 'on_or_after' | 'before' | 'on_or_before' | 'not_on' | 'yes' | 'no' | 'between' | 'in_list' | 'in_entity_list' | 'not_in_entity_list' | 'intersect_entity_list' | 'not_intersect_entity_list' | 'standard' | 'early' | 'late' | 'new_guest' | 'repeat_guest'
    - `value` string
    - `value_to` string
    - `values` string[]
  - `active` boolean — Indicates whether this surcharge is active.
  - `amount` number — The base amount of the surcharge. Always a positive value.
  - `amount_multiplier` 'per_night' | 'per_stay' | 'per_increment' | 'per_night_and_increment'
  - `amounts` SurchargeAmountModel[] — Tiered amount rules. On PATCH, replaces all existing tiers.
    - `amount` number — The amount at this threshold. Always a positive value.
    - `threshold` integer — The threshold value (e.g., nights for LengthOfStay discounts).
  - `auto_generate_description` boolean — Indicates whether the description should be auto-generated.
  - `category` 'additional_bed' | 'administrative' | 'air_conditioning' | 'arrival_early' | 'arrival_late' | 'association_property' | 'baby_bed' | 'booking' | 'booking_early' | 'booking_late' | 'city_tax' | 'class' | 'cleaning' | 'club' | 'concierge' | 'consumption' | 'daily_cleaning' | 'departure_early' | 'departure_late' | 'deposit_damage' | 'electricity' | 'energy' | 'equipment' | 'final_cleaning' | 'food' | 'gardening' | 'gas' | 'guest' | 'heating' | 'high_chair' | 'hot_tub' | 'internet' | 'labor' | 'laundry' | 'linens' | 'linens_bath' | 'linens_bed' | 'management' | 'oil' | 'on_site_payment_method' | 'parking' | 'pet' | 'phone' | 'pool' | 'pool_heating' | 'property_fee' | 'rent' | 'reservation' | 'resort' | 'service' | 'spa' | 'tax' | 'toiletries' | 'tour' | 'tourist_tax' | 'transportation' | 'utensils_cleaning' | 'utensils_food' | 'vehicle' | 'waiver_damage' | 'water' | 'water_craft' | 'water_craft_mooring' | 'water_drinking' | 'wood' | 'discount' | 'cancellation_fee' | 'other'
  - `commission` SurchargeCommissionModel — Commission settings for a surcharge.
    - `calculation` 'owner' | 'none' | 'all'
    - `owner_percent` number, nullable — The owner commission percentage (0–100). Only applies when Calculation is Owner.
  - `created_utc` string, date-time — The date and time this record was created (UTC).
  - `description` string — The description of the surcharge (maximum 256 characters).
  - `expense_amount` number — The expense amount (minimum 0).
  - `expense_category_id` integer, nullable — The ID of the expense category.
  - `expense_date_type` 'arrival_date' | 'departure_date' | 'booked_date' | 'canceled_date' | 'transaction_date'
  - `expense_description` string — The description of the expense.
  - `expense_vendor_contact_id` integer, nullable — The ID of the expense vendor contact.
  - `explanation` string — Additional explanation text displayed to guests.
  - `increment` SurchargeIncrementModel — Increment (multiplier) settings for a surcharge. Only meaningful when AmountMultiplier is PerIncrement or PerNightAndIncrement.
    - `cap` integer, nullable — The maximum number of increments that will be charged (null = no cap). For example, 10 means at most 10 units are charged even if the booking has more.
    - `group_size` integer, nullable — The multiplier group number (minimum 1). When multiple surcharges share the same group number, they share a combined free allowance rather than each getting their own.
    - `included` integer, nullable — The number of free increments before the surcharge kicks in (minimum 0). For example, 2 means the first 2 guests/pets/etc. are free.
    - `type` 'guest' | 'adult' | 'child' | 'pet'
  - `is_applicable_to_rent_only` boolean — Indicates whether this surcharge is applicable to rent only (when IsPercent is true).
  - `is_expense_pre_deduct_pm` boolean — Indicates whether the expense should be pre-deducted from the property manager.
  - `is_percent` boolean — Indicates whether the amount is a percentage of rent.
  - `is_taxable` boolean — Indicates whether this surcharge is taxable.
  - `listing_site_ids` integer[] — Listing site IDs this surcharge applies to. Used with listing_site_scope.
  - `listing_site_scope` 'exclude' | 'include' | 'all'
  - `mode` 'automatic' | 'optional' | 'manual' | 'code' | 'offline'
  - `place_under_tax` boolean — Indicates whether this surcharge should be placed under tax line items. Cannot be true if IsTaxable is true.
  - `position` integer, nullable — The display position/order of the surcharge (minimum 0).
  - `property_ids` integer[] — Property IDs this surcharge applies to. Used with property_scope.
  - `property_scope` 'exclude' | 'include' | 'all'
  - `season_ids` integer[] — Season IDs this surcharge applies to. Used with season_scope.
  - `season_scope` 'exclude' | 'include' | 'all'
  - `show_as_rent` boolean — Indicates whether this surcharge should be shown as rent.
  - `type` 'complex' | 'rate_adjustment' | 'guest_fee' | 'pet_fee' | 'cleaning_fee' | 'linen_fee' | 'other_fee' | 'length_of_stay_discount' | 'last_minute_discount' | 'early_bird_discount' | 'audience_promotion' | 'member_promotion' | 'new_listing_discount' | 'high_rated_guest_discount'
  - `updated_utc` string, date-time, nullable — The date and time this record was last updated (UTC).
  - `discount_code` string — The discount code for code-based discounts (maximum 64 characters). Required when Mode is Code.
  - `is_discount_code_exclusive` boolean — Indicates whether this discount code should remove all other discounts when applied.

---

[API](https://skmtc.net/ownerrez/apis/ownerrez-api.md) · [All operations](https://skmtc.net/ownerrez/apis/ownerrez-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ownerrez/ownerrez-api/versions/fa0c0f146039/schema)
