Skip to content

fix(bookings): auto-confirm rescheduled paid bookings when confirmation is not required#28793

Draft
jaydeep-pipaliya wants to merge 1 commit intocalcom:mainfrom
jaydeep-pipaliya:fix/reschedule-paid-booking-status
Draft

fix(bookings): auto-confirm rescheduled paid bookings when confirmation is not required#28793
jaydeep-pipaliya wants to merge 1 commit intocalcom:mainfrom
jaydeep-pipaliya:fix/reschedule-paid-booking-status

Conversation

@jaydeep-pipaliya
Copy link
Copy Markdown

What does this PR do?

Fixes #22857

When an attendee reschedules a paid booking on an event type that does not require confirmation, the rescheduled booking was incorrectly created with PENDING status instead of ACCEPTED. This caused:

  • Duplicate "unconfirmed" bookings piling up
  • Hosts having to manually confirm rescheduled sessions that were already paid
  • Broken CRM integrations receiving duplicate booking records

Root cause

In getRequiresConfirmationFlags.ts, the determineIsConfirmedByDefault function:

return (!requiresConfirmation && price === 0) || userReschedulingIsOwner;

When requiresConfirmation = false and price > 0 (paid event), this returns false — even when rescheduling an already-paid booking. The price check blocks auto-confirmation because it assumes payment hasn't been collected yet.

Fix

Added originalRescheduledBookingPaid parameter to determineIsConfirmedByDefault. When the original booking was already paid and the event type doesn't require confirmation, the rescheduled booking is auto-confirmed:

if (originalRescheduledBookingPaid && !requiresConfirmation) {
  return true;
}

Changes

  • packages/features/bookings/lib/handleNewBooking/getRequiresConfirmationFlags.ts — accept and use originalRescheduledBookingPaid flag
  • packages/features/bookings/lib/service/RegularBookingService.ts — pass originalRescheduledBooking.paid to the flags function

…on is not required

When rescheduling a paid booking where the event type does not require
confirmation, the new booking was incorrectly created with PENDING status
instead of ACCEPTED. This happened because determineIsConfirmedByDefault
returned false when price > 0, regardless of whether the original
booking was already paid.

The fix passes the original booking's paid status into the confirmation
check. When the original booking was already paid and the event type
does not require confirmation, the rescheduled booking is now
auto-confirmed as ACCEPTED.

Fixes calcom#22857
@github-actions github-actions bot added bookings area: bookings, availability, timezones, double booking 🐛 bug Something isn't working labels Apr 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bookings area: bookings, availability, timezones, double booking 🐛 bug Something isn't working size/S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rescheduling paid session duplicates the session and make them both "unconfirmed"

1 participant