Refunds & Disputes
Process refunds and manage chargebacks.
Processing Refunds
- Open the booking with the payment to refund
- Click Refund on the payment transaction
- Choose full or partial refund
- Review the refund preview showing the amount to be returned
- Confirm the refund
Refunds are processed through Stripe back to the customer's original payment method. Processing time depends on the customer's bank (typically 1--7 business days).
Refund Types
| Type | Description |
|---|---|
| Full | Refunds the entire remaining refundable amount on the transaction |
| Partial | Refunds a specific amount, leaving the rest of the payment intact |
Partial Refund Amount Types
When issuing a partial refund, you can specify the amount in two ways:
| Amount Type | Description |
|---|---|
| Dollar | A fixed dollar amount to refund (e.g., $25.00) |
| Percent | A percentage of the remaining refundable amount (e.g., 50%) |
Refund Methods
Resytech supports two refund methods depending on how the original payment was made:
| Method | When Used | Description |
|---|---|---|
| Stripe | Original payment was a card transaction | Refund is processed through Stripe back to the original card. Requires the PaymentIntent ID. |
| Manual | Original payment was cash, check, or other non-card method | Refund is recorded in the system. The actual return of funds is handled outside Resytech. |
Stripe Refund Details
For Stripe refunds, the system validates the following before processing:
- The payment intent status must be
succeeded - The charge must not already be fully refunded
- The refund amount cannot exceed the remaining refundable balance (captured minus already refunded)
For a hold that was captured for less than it was authorized (for example a $500 deposit hold captured for $50), the released remainder is not a refund. The refundable balance is the captured amount minus real refunds, so the $50 stays refundable and the $450 release never appears as a refund on the booking.
The refund preview shows a breakdown:
| Field | Description |
|---|---|
| Refundable Amount | Maximum amount that can still be refunded on this transaction |
| Intent Amount | The original charge amount |
| Collected Amount | The amount that was actually captured |
| Application Fee Amount | The platform fee that was collected |
| Operator Charge Amount | The amount that went to your Stripe account (collected minus application fee) |
You can optionally choose to refund application fees along with the payment. If enabled, the platform fee is refunded proportionally to the refund amount.
Manual Refund Details
Manual refunds support the following fields:
| Field | Required | Description |
|---|---|---|
| Refund Method | No | How the refund was returned (e.g., "cash", "check") |
| Reference ID | No | External reference (check number, etc.). Auto-generated if not provided. |
| Reason | No | Reason for the refund |
| Notes | No | Additional notes for internal tracking |
Manual refund reference IDs are auto-generated in the format REF-{YYYYMMDD}-{RANDOM} if not provided.
Every refund automatically recalculates the booking balance. Refunding money out of Stripe (or recording a manual refund) is only half the story: Resytech also has to know what the refund means for what the customer still owes. That is the Balance Handling choice, described next.
Balance Handling: Goodwill or Re-Collect
The refund dialog on an active booking shows one checkbox under Balance Handling:
Write off the refunded amount - goodwill refund
It answers a single question, and it is the part of the refund flow operators most often get stuck on:
Is the customer going to pay this money back to you?
Yes, they still owe it (they will pay another way): leave the box unchecked. This is the default.
No, you are giving it up: check the box. That is what "goodwill" means here.
"Goodwill" is not about how nice you are being or why the refund happened. It only means: this money is not coming back to us. A refund you plan to re-collect is not goodwill, no matter how apologetic the reason.
| Unchecked (default) | Checked (goodwill) | |
|---|---|---|
| Use when | The money is still owed and will be paid another way | You are not collecting this money again |
| Grand total | Unchanged | Drops by the refunded amount |
| Balance after refund | The refunded amount comes back as amount due | Stays settled at $0.00 |
| What you do next | Collect again: card on file, manual payment, or invoice | Nothing, the booking is done |
Behind the scenes, checking the box adds a Courtesy Refund Write-Off line item that reduces the price by the refunded amount. That is why the total drops instead of the balance going up.
Which One for Your Situation
| Situation | Write off? |
|---|---|
| Customer paid with the wrong card and will re-pay | No. Refund, then charge the right card. |
| Card payment needs to be redone as cash at the desk | No. Refund the card, then record the cash payment. |
| Payment was applied to the wrong booking | No. Refund here, collect on the correct booking. |
| You are refunding now and invoicing the same amount | No. The invoice needs a balance to bill against. |
| Rained out, comping part of the trip | Yes. The customer will not pay it again. |
| Service complaint, refunding a portion as an apology | Yes. |
| Overcharged, correcting the price down for good | Yes. |
| Customer was double-charged and you returned one payment | Either. See below, the result is the same. |
Two Cases Where the Checkbox Does Not Matter
The booking already owed the customer money. If the balance was already negative (a price or equipment reduction after the customer paid, for example), the refund settles that debt first and only the amount beyond it is written off. Refunding exactly what was owed writes off nothing at all: the balance simply returns to $0.00 at the unchanged grand total. Checking the box in that case does not double-credit anything.
The booking is canceled. The checkbox is hidden entirely. Canceled bookings reconcile through the Cancellation Write-Off instead, which always keeps them settled, so a refund after cancellation never puts a balance back on the booking. Incident and damage charge refunds also never touch the booking balance.
Changing Your Mind Afterward
Nothing is locked in. Both directions can be corrected from Manage Line Items on an active booking:
- Picked write-off, but the customer should re-pay after all? Remove the Courtesy Refund Write-Off row. The amount comes back as due.
- Left the balance due, but it turned out to be goodwill? Add a Write-Off line item for the amount owed. Enter it as a positive number. It reduces the amount due without changing what was sold, and never enters the fee or tax base.
Either correction lands on exactly the same result as picking the other option at refund time, so when you genuinely are not sure, take the default and fix it later.
Activity Voucher Purchase Refunds
Money paid for Activity Vouchers is collected on the voucher order, not on a booking, so it is refunded from the order. An Administrator opens the promotion under Resources > Activity Vouchers, opens the order and uses Refund vouchers to refund selected unused vouchers to the original card. Each voucher refunds exactly its original allocation (price plus taxes, and customer fees if you choose to return them). Used, reserved and restricted vouchers cannot be refunded until they are released.
Cancelling a voucher booking restores or forfeits its vouchers according to the promotion's policy; it never refunds the purchase. Payments the customer made on the booking itself (extra rentals, add-ons, tips) use the normal booking refund flow on this page. See Manage Voucher Orders.
Refunds Made in the Stripe Dashboard
Refunds issued directly in the Stripe Dashboard (outside Resytech) are picked up by webhook and recorded on the booking, and they now update the booking balance exactly like an in-app refund. Previously these were record-only; if you relied on Stripe-side refunds being invisible to booking balances, expect the balance to move.
Cancellation Refunds
When a booking is canceled, refunds can be processed automatically based on the cancellation policy. The system supports processing multiple refund requests in a single cancellation, splitting across both Stripe and manual refunds as needed. If a single payment does not have enough refundable balance, the system automatically splits the refund across multiple payments.
Cancellation Write-Off
When a booking is canceled, Resytech adds a Cancellation Write-Off line item that reduces the booking's grand total to the retained amount — whatever you kept after refunds (for example, a cancellation fee). This is why a canceled booking's total drops: a fully refunded $300 booking shows a −$300 write-off and a $0 total; refunding $255 and keeping a $45 fee shows a −$255 write-off and a $45 total. (Previously labeled Cancellation Credit — same behavior. Despite the old name, this was never spendable customer credit: it is an accounting adjustment that writes the no-longer-owed amount off the booking's price.)
The result is that canceled bookings always settle to a $0 balance (or negative if a refund is still owed) — including deposit bookings, where the uncollected remainder is written off rather than left showing as debt. If you refund a canceled booking later (from the Payments tab or the Stripe Dashboard), the write-off tops up automatically so the booking stays settled.
Cancellation Fee
To charge a fee the customer still owes (a late-cancel or no-show fee that wasn't collected up front), enter a Cancellation Fee in the cancel dialog — or add a Cancellation Fee line item to the already-canceled booking. The fee is the one part of a canceled booking's total that is not forgiven:
- The canceled booking carries a positive balance of
fee − collectedas a real receivable, and it appears in AR aging until paid. - Money already collected counts toward the fee first. A $100 deposit against a $250 fee leaves $150 owed — the preview in both dialogs shows exactly the balance that will be persisted.
- There is no cap — the fee can exceed what was collected and even exceed the original booking total (e.g., a punitive no-show fee).
- Collect the fee by charging the card on file, recording a manual payment, or sending an invoice — invoice pay links work on canceled bookings that carry a fee. Paying a fee invoice never un-cancels the booking: the "confirm on pay" option doesn't apply to canceled bookings, so the payment settles the fee and the booking stays canceled.
- To waive a fee later, remove the Cancellation Fee line item; the balance reconciles back down automatically.
- If the booking already carries a cancellation fee, adding another one asks for confirmation first — so a fee that looked like it failed can't be double-charged by accident. Confirming adds a genuinely separate second fee (e.g., damage on top of a no-show fee).
- If the booking turns out to have been canceled by someone else while your cancel dialog was open, your fee is not applied silently — the dialog asks whether to still charge it to the already-canceled booking.
- If the booking is reinstated (un-canceled), the fee is removed along with the credit — the customer owes the original booking total again.
If the booking has Trip Protection within its claim window, the cancel dialog suggests a $0 fee — covered customers aren't usually charged. The suggestion is only a suggestion; you control the final amount.
Invoices and cancellation
Canceling a booking closes its open invoices — an open invoice is a payment request for the trip, and the cancel ends the trip, so old emailed pay links stop working. Reinstating the booking reopens the invoices that cancel closed, and the original links work again (unless a fee invoice was issued in the meantime — then the older invoice stays closed and can be reissued if still owed). When you add a cancellation fee to a booking that still had an old open invoice from before the cancel, that stale invoice is closed too: send a fresh invoice for the fee amount instead of relying on the old link.
Refunding the Tip Portion
If the booking includes a tip, the refund dialog shows a separate Tip Refund picker with three options. The booking refund and tip refund are processed as one transaction (the customer sees a single credit), and only the booking-portion of the refund affects the booking balance — the tip portion is a giveback to the customer that does not increase booking debt.
| Option | Behavior |
|---|---|
| Full | Refund all remaining un-refunded tip on this booking. |
| Pro-rata | Refund tip in proportion to the refund amount versus the original charge. A 50% refund returns 50% of the original tip, capped at the remaining un-refunded tip. |
| None | Refund only the booking portion. The gratuity stays owed to staff. |
When the dialog first opens, Resytech picks a smart default for you based on the current transaction refund type — Full when the transaction refund is set to Full, Pro-rata when it's Partial. Once you make any selection (including toggling the transaction type), your choice is respected and the default does not re-fire.
The Tip Refund picker only appears when the booking has un-refunded tip dollars left. Multiple partial refunds can be issued over time — Resytech tracks the running total and prevents over-refunding the tip.
Partial Refunds
For partial refunds, enter the specific amount to refund. This is useful for:
- Removing a single line item from a multi-item booking
- Applying a discount after the fact
- Goodwill refunds (check Write off the refunded amount, see Balance Handling)
- Cancellation policies that refund a percentage of the total
A single payment can be partially refunded multiple times until the full amount has been returned. The system tracks existing refunds for each payment and prevents over-refunding.
Chargeback & Dispute Management
When a customer files a chargeback with their bank:
- Resytech alerts you in the dashboard and marks the transaction as disputed
- Evidence is automatically gathered from multiple sources
- You can review and supplement the evidence
- The dispute response is submitted to Stripe
Automatic Evidence Collection
Resytech automatically compiles a comprehensive evidence document that includes:
| Evidence Category | Details Collected |
|---|---|
| Customer Information | Name, email, IP address, phone number |
| Booking Details | Confirmation code, activity, date/time, location, status |
| Payment Verification | CVC check result, address verification, postal code check, 3D Secure status |
| Risk Assessment | Stripe risk score (0--99), risk level, network status, outcome type |
| Waiver Evidence | Signed waivers with timestamps, signer IP addresses, and waiver names |
| Service Delivery | Whether service was delivered, delivery confirmation date |
| Billing Address | Full billing address from the payment method |
| Access Activity Log | Booking creation time, IP address, booking source, browser fingerprint, user agent |
Evidence Submission
The evidence is compiled into a PDF document and uploaded to Stripe as dispute evidence. The submission includes:
- Service documentation -- The compiled evidence PDF
- Receipt -- Attached as proof of the transaction
- Customer communication -- Included if waiver submissions exist
- Product description -- Activity name, date, time, location, and confirmation code
- Uncategorized text -- Risk assessment details, security verification results, and waiver evidence
You can choose to submit immediately to the bank or stage for review before submission. Evidence files are retained for 60 days.
Resytech helps you respond to disputes quickly with pre-compiled evidence, improving your chances of winning the case.
Related How-To Guides
- Issue a Refund -- Step-by-step guide to processing refunds
- Handle Payment Disputes -- Respond to chargebacks effectively
- Adjust Booking Pricing -- Set a custom grand total using Pricing Override
