Skip to content
Dashboard

Mandatory Fees

Mandatory fees let you collect required charges — a resort fee, a non-refundable cleaning surcharge, a pet deposit, an amenity fee — during a guest’s pre-check-in flow, before they can finish checking in. Unlike optional upsells, guests cannot skip a mandatory fee.


Mandatory fees are built from two pieces:

  1. A reusable fee product — defined once at the organization level with a name, description, and pricing rules (flat, per-night, or per-guest with optional caps).
  2. A “Mandatory Fee” pre-check-in step — picks which products apply, the payment account they charge through, and an optional intro message shown above the fee list to the guest.

A single pre-check-in step can bundle multiple products (for example, a resort fee + a cleaning fee). The guest pays them together as a single charge that blocks check-in until paid.

When the guest pays, SuiteOp records one reservation charge per fee product so each line is auditable, refundable, and visible in the timeline.


The fee product catalog lives at Portals → Settings → Fee Products.

  1. Open the catalog and click New Fee Product

    Each product is reusable across as many pre-check-in steps and portals as you need.

  2. Give it an internal nickname

    Only your team sees this — use it to disambiguate similar products (for example, Resort Fee — Beach Properties vs. Resort Fee — Downtown).

  3. Add a guest-facing title and description

    Both fields are multi-language and shown to the guest exactly as written. Keep titles short (“Resort Fee”, “Cleaning Surcharge”) and use the description to explain what the fee covers.

  4. Pick a pricing model

    • Fixed price — one flat amount regardless of stay length or party size.
    • Per night — multiplied by the number of nights. Optionally cap the number of priced nights (for example, “max 7 nights even on a 14-night stay”) or set a maximum total.
    • Per guest — multiplied by the number of guests on the reservation. Same optional caps apply.

    Enter prices in dollars (the system handles cents internally).

  5. Pick the currency

    Leave blank to inherit from the payment account at charge time, or set explicitly when the product is locale-specific.

  6. Save

    The product appears in the catalog and is immediately available to pre-check-in steps.


Step 2 — Add a Mandatory Fee step to your pre-check-in flow

Section titled “Step 2 — Add a Mandatory Fee step to your pre-check-in flow”
  1. Open the portal you want to attach the fees to

    Navigate to Portals → Settings → Pre-Check-in, open the portal template you want to edit, and click Add Step.

  2. Pick Mandatory Fee from the step picker

    SuiteOp inserts a new step into the flow. You can reorder it with the other steps later.

  3. Select the fee products to bundle

    Choose one or more products from your catalog. The guest will see them as a single list with a combined total.

  4. Pick a payment account

    The dropdown lists every active payment account across your configured providers (Stripe, JusPay, GuestyPay). The selected account processes the guest’s payment.

  5. (Optional) Add a guest-facing subtitle

    A short intro that appears above the fee list — useful for explaining the cluster of charges or linking to your terms. Multi-language.

  6. Save the step

    Assign the portal template to the properties you want covered, and you’re done. The next pre-check-in submission on a covered reservation will include the mandatory fee.


When the guest reaches the Mandatory Fee step in their pre-check-in flow:

  • The optional subtitle appears at the top
  • Each fee product is listed with its title, description, and resolved price (with the math behind per-night / per-guest pricing shown when relevant)
  • A combined total is shown at the bottom
  • A Pay button launches the embedded Stripe Elements checkout

The guest cannot finish pre-check-in — and therefore cannot view their access instructions — until the payment succeeds. After payment, the step is marked complete and the rest of the flow unlocks.


Each fee product paid creates its own row in the reservation’s Charges & Payments section, labelled with Origin: Mandatory Fee. From there you can:

  • Refund any single line (full or partial) using the Charge Detail Sheet — refunds do not re-block check-in
  • See who paid, when, and which payment account processed it in the timeline
  • Filter the reservation’s folio by origin to isolate mandatory fees from other charges

If you delete a fee product from the catalog after charges have been recorded, the historical charges keep working — the product link nulls out but the description, amount, and refund affordances stay intact.


Mandatory-fee payments fire dedicated triggers so you can build automations distinct from regular payment events:

  • mandatory_fee_payment_submitted_by_guest — fires the moment the guest pays
  • mandatory_fee_refunded — fires when you issue a refund

Use these in Workflows to send confirmation emails, notify your team in Slack, or kick off a downstream task.


MethodWhen to use
Mandatory fee (this article)Charges every guest must pay, no opt-out — resort fees, mandatory cleaning, pet deposits
Required upsell + workflow (Automating Fee Collection)Charge only when a verification answer triggers it (e.g. pet fee only when guest answered “yes, pet”)
Optional upsell (Creating Upsells)Add-ons the guest can choose to buy — early check-in, mid-stay clean, postcards
One-off service fee (Managing Guest Fees)Per-reservation charges added manually after the fact