> ## Documentation Index
> Fetch the complete documentation index at: https://docs.riservahq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cancellations and refunds

Cancel a reservation from its page. Riserva shows the refund your policy
grants before you confirm, then refunds it through Shopify.

***

## Cancelling a reservation

1. Open the reservation.
2. Press **More actions → Cancel reservation.**
3. Read the confirmation. It tells you the refund before you commit.
4. Press **Cancel reservation.**

The confirmation looks like this:

> Cancel reservation RES-7K4M? This releases its capacity.
>
> **Refund per policy: 100% (\$300.00)**

That figure is computed from the policy attached to this reservation's
experience, against the actual visit time, right now. It is what will move.

## Overriding the refund

Sometimes the policy's answer isn't the right one. A guest may cancel inside
the no-refund window with a genuinely good reason. Or they kept the room an
extra hour and shouldn't get everything back.

When the guest has paid anything (add-ons included), the confirmation offers
**Override the refund amount**. Set any amount from \$0 up to what the guest
has paid, and give a **reason** (required).

The override is deliberately accountable. The amount, the policy's original
answer, your name and your reason all land on the reservation's timeline.
Guests can never override a refund: this exists only in the admin.

***

## Where the percentage comes from

Exactly one set of rules applies. It's the experience's **custom rules** if it
has them, otherwise your **shop policy** (Settings → Policies). The
reservation's own page states the applicable rules in its Details card, so you
never have to work this out from Settings.

Riserva then applies **the most generous refund step that matches** the notice
given. The refund is **0%** with less notice than any step, once the visit has
started, or under all sales final.

See [Set your cancellation policy](/getting-started/cancellation-policies).

***

## What actually gets refunded

**The percentage applies to everything the guest paid, add-ons included.** A
"100% refund" that left the cheese pairing unrefunded wouldn't be a 100%
refund.

The money goes back through Shopify as a real refund against the original
order, to the original payment method. A partial policy refund is a partial
order refund.

**A reservation with no Shopify order refunds nothing**, because there's
nothing to refund. That's the normal case for a phone reservation your team
took and never collected on.

<AccordionGroup>
  <Accordion title={"If the money sits on more than one order"}>
    This happens when a party grew and paid the extra guests through a payment
    link, or a balance was settled at the register.

    The refund walks every order that holds the reservation's money, newest
    first. It takes from each what it still holds until the amount is met. An
    order already refunded to zero is skipped.

    The reservation page lists each order with what it still holds, and one
    **Refunded** row with the total.
  </Accordion>
</AccordionGroup>

***

## Shrinking a party uses the same schedule

Removing guests from a paid reservation is a **partial cancellation**, and it
follows this exact schedule. The removed guests' share of the payment is
refunded at whatever percentage the policy grants *right now*.

A party that shrinks at the door under a "no refund within 24 hours" policy
gets nothing back for the dropped seats. The withheld amount stays on the
order. Both the timeline and the reservation's Payment card record it.

Staff can go beyond the policy deliberately:

* The reservation's Edit page always offers a full refund, recorded as an
  override on the timeline.
* Shopify POS check-in offers it only if you've allowed it in **Settings →
  Policies → Refund overrides**.

***

## Everything else cancelling does

In one action, Riserva also:

* **Releases the capacity** — the seat, table or venue goes back on sale.
* **Cancels any scheduled charge**, so a dead reservation can't be billed
  later.
* **Forgives any unbilled balance** from added guests.
* **Voids any open payment link**, so a guest can't pay an invoice for a
  reservation that no longer exists.
* **Marks purchased add-ons refunded**, since the one order refund covered
  them.
* **Emails the guest** the cancellation, with the refund amount when money is
  moving. A \$0 cancellation says nothing about refunds at all.
* **Writes a staff note** on the reservation recording the policy applied.

***

## When something doesn't go through

Riserva never fails quietly. Always check the reservation's timeline after a
cancellation you expected money to move on.

<AccordionGroup>
  <Accordion title={"If the payment link can't be voided"}>
    > The open payment link could not be voided (…) — delete the draft order in
    > Shopify admin.

    Do that, or the guest could still pay it.
  </Accordion>

  <Accordion title={"If the refund doesn't go through (\"Refund owed\")"}>
    The cancellation still stands. The timeline records the refund as pending,
    "Refund of \$150.00 pending", with Shopify's own words attached. The Payment
    card shows a **Refund owed: \$150.00** callout.

    * Press **Retry refund** to send it again from Riserva.
    * Or, if you issued it from the Shopify order yourself, press **Mark handled
      in Shopify** so the record agrees.
  </Accordion>

  <Accordion title={"If the gateway only allows part of the refund"}>
    > The gateway allowed 50.00 of the 75.00 refund — verify in Shopify.

    Whatever didn't go back lands in the same **Refund owed** callout.
  </Accordion>
</AccordionGroup>

***

## Guests cancelling themselves

If your policy allows it, guests cancel from the manage link in their
confirmation email. They go through **exactly the same path**: same refund
calculation, same real refund, same timeline entries, same email. The
timeline shows the guest as the actor.

When a guest cancels online, they're asked **why** before confirming. They
pick one of your cancellation reasons, plus an optional line of free text.
The answer is recorded on the reservation, so you can see patterns over time.
Its timeline shows, for example, *"Reason for cancelling: Travel or weather"*.

Edit the list of reasons under **Settings → Policies → Cancellation
reasons**. Clear it to stop asking.

See [Guests managing their own reservations](/guest-experience/guest-self-serve).

***

## Refunds without cancelling

Shrinking a party or moving to a cheaper experience refunds proportionally,
without cancelling anything. That's on the edit screen. See [Edit a
reservation](/daily-operations/edit-a-reservation).

***

## No-shows

Press **Mark no-show** from the reservation page or the host desk. Or let
Riserva mark parties that never check in by itself, under **Settings →
Reservations → No-shows**.

* Marking a no-show releases nothing retrospectively.
* **It charges no fee.** Riserva doesn't charge no-show fees.
* A no-showed reservation stays collectible. If you want to chase payment,
  you still can with a payment link.
* Riserva does **not** email the guest about being marked a no-show. That's a
  conversation, not a notification.

If the guest walks in after all, press **Undo no-show**. It's the reservation
page's main button, or find the party on the Done tab in Shopify POS. The
reservation goes back to Confirmed, or to Pending payment if that is where it
was, so you can check them in.

***

## Deleting

There is no delete. Reservations are cancelled, never erased, the same
discipline as every other operator tool. Cancelled reservations stay in the
**Cancelled** view and in your reports.

***

## Related

**What things mean on this screen:** [What things mean: A reservation's page and Edit reservation](/reference/reservation-page)

* [Cancellation policies](/getting-started/cancellation-policies)
* [Edit a reservation](/daily-operations/edit-a-reservation)
* [Guests managing their own reservations](/guest-experience/guest-self-serve)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.