Skip to main content

Refunds & Cancellations

How refunds are processed when bookings are cancelled.

Overview​

DigiWedge TeeTime includes a multi-method refund engine that automatically processes refunds based on configurable policies. The system supports multiple refund destinations with automatic fallback.

Refund Methods​

MethodDescriptionUse Case
WalletCredit to player's digital walletMembers with active wallet accounts
VoucherIssue a booking voucherGuests, expired wallet, promotional credits
PSPRefund to original payment methodCard payments via Stripe/Peach/etc.
ManualFlag for staff processingEdge cases, disputes, partial refunds

Refund Flow​

flowchart TD
A[Booking Cancelled] --> B{Policy Allows Refund?}
B -->|No| C[No Refund - Log Reason]
B -->|Yes| D{Determine Method}
D --> E{Try Primary Method}
E -->|Success| F[Refund Complete]
E -->|Fail| G{Fallback Available?}
G -->|Yes| H[Try Fallback Method]
H --> E
G -->|No| I[Mark for Manual Review]

Refund Policies​

Policy Configuration​

Each course can configure:

  • Auto-refund enabled: Process automatically or require approval
  • Primary refund method: Default destination (WALLET, VOUCHER, PSP)
  • Fallback methods: Ordered list if primary fails
  • Per-player-type overrides: Different rules for members vs visitors

Example Policy​

{
"autoRefund": true,
"method": "WALLET",
"fallbackMethods": ["VOUCHER", "PSP"],
"perType": {
"member": {
"autoRefund": true,
"method": "WALLET",
"fallbackMethods": ["VOUCHER"]
},
"visitor": {
"autoRefund": true,
"method": "PSP",
"fallbackMethods": ["VOUCHER"]
}
}
}

Wallet Refunds​

Refunds to the player's digital wallet account:

Requirements​

  • Player must have an active wallet account
  • Wallet must be linked to the same club/tenant
  • Wallet currency must match booking currency
  • Wallet status must be OPEN (not CLOSED or SUSPENDED)

Failure Reasons​

ReasonMeaning
wallet_requires_emailPlayer email required for lookup
member_not_found_for_emailNo member record found
wallet_account_missingMember exists but no wallet
wallet_club_missingWallet not linked to this club
wallet_tenant_mismatchMulti-tenant mismatch
wallet_closedWallet is closed or suspended
wallet_currency_mismatchDifferent currencies

When wallet refund fails, the system automatically tries fallback methods.

Voucher Refunds​

Issues a booking voucher for future use:

Requirements​

  • Club must have voucher system enabled
  • Player email required for voucher delivery

Voucher Details​

  • Voucher value equals refund amount
  • Validity period set by club policy
  • Single-use or multi-use configurable
  • Sent via email with redemption code

PSP Refunds​

Refunds to the original payment method:

Requirements​

  • Original payment must have PSP transaction reference
  • Payment provider must support refunds
  • Refund must be within provider's refund window

Supported Providers​

  • Stripe
  • Peach Payments
  • Rapyd
  • Braintree

Partial Cancellations​

When players are removed from a booking (not full cancellation):

  • Refund calculated for removed players only
  • Pro-rata calculation based on player count
  • Same method cascade applies
  • Booking continues for remaining players

Cancellation Timeline​

Refund amounts often depend on notice period:

Notice PeriodTypical Refund
48+ hours100%
24-48 hours75%
12-24 hours50%
Under 12 hours0% (or credit only)
note

Each club configures their own cancellation policy. The above are typical values.

Admin Override​

Club administrators can:

  • Force a specific refund method
  • Override policy for individual cancellations
  • Process manual refunds
  • View refund audit trail

Refund Status​

StatusMeaning
PENDINGRefund queued for processing
PROCESSINGCurrently being executed
COMPLETEDSuccessfully refunded
FAILEDAll methods failed - needs manual review
MANUALFlagged for staff action

Metrics & Reporting​

The refund engine tracks:

  • Refund outcomes by method
  • Fallback rates
  • Processing times
  • Failure reasons

Access via Reports > Refunds in the admin portal.

Environment Configuration​

VariableDescriptionDefault
TEETIME_ENABLE_WALLET_AUTO_REFUNDSEnable wallet refundstrue
PAYMENTS_API_BASE_URLPayments service URLRequired for PSP

Troubleshooting​

Refund Not Processing​

  1. Check booking has payment transaction
  2. Verify refund policy allows auto-refund
  3. Check player has valid refund destination
  4. Review fallback methods configured

Wrong Refund Destination​

  1. Check per-player-type overrides
  2. Verify primary method requirements met
  3. Review fallback cascade order

Partial Refund Issues​

  1. Verify correct player count in cancellation
  2. Check pro-rata calculation
  3. Review any rounding rules

API Reference​

Cancel Booking with Refund​

DELETE /api/bookings/{bookingId}

Response includes refund decision:

{
"cancelled": true,
"refund": {
"action": "wallet",
"amountCents": 45000,
"walletAccountId": "wa_xxx",
"status": "completed"
}
}

Check Refund Status​

GET /api/bookings/{bookingId}/refund

Returns current refund status and audit trail.