Payments, refunds, and payouts

Booking payments, refund intents, provider payouts, and disputes.

All pages need canManagePayments.

Payments

/dashboard/platform/payments (hotelPaymentOperations) lists BookingPayment records with provider, status, and amount. Guests pay through a BookingPaymentSession (initiateBookingPaymentSession, then completeBookingPayment on return). Provider events are stored as PaymentEvent.

Refunds

Quote

hotelRefundQuote(paymentId) shows the refundable amount.

Request

requestBookingPaymentRefund takes the payment, amount, a bounded reason, and an idempotency key. It creates a RefundIntent.

Execute

The refund worker sends it to the provider. Status goes pending → processing → succeeded, or failed and dead_letter.

Replay

Replay a stuck intent with replayRefundIntent.

A refund requires an independent approval when it exceeds the thresholds in Property settings. A booking cannot have two cancellation refunds in progress.

Payouts

/dashboard/platform/payouts (hotelPayoutOperations). Import a reviewed provider statement, match each payment, and approve the bank deposit with manageHotelPayout.

Disputes

/dashboard/platform/disputes lists Stripe dispute notices. Add an evidence note with annotateHotelDispute. Submit evidence in Stripe.

On this page