Booking with status “Pending admin” when payment is aborted

Free and Premium WordPress Plugins & Themes Forums WordPress Plugins Hotel Booking Booking with status “Pending admin” when payment is aborted

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
  • #1409861
    Lucie Léger


    I use Hotel Booking plugin with Bellevue theme for my website.
    I use Woocommerce with the plugin payment from my bank (Systempay is the name of the plugin).
    Everything works fine except one thing I would like to understand.

    The confirmation mode is “confirmation upon payment”.
    But, when a customer begins to book a night in the hotel and abort at the payment page, the booking is never automatically cancelled. The status is and stays “Pending admin”.
    The issue is that the date is blocked and the admin needs to delete manually the booking in order to have the date available again. And the admin never get an email or anything to know that one date is blocked.
    How can I do to make automatically available again a date once the payment is not proceeded, let’s say after 10 minutes for example ?
    Knowing that “pending payment time” is set to 10 in “Payment gateways” tab settings.

    Thank you in advance !

    Georgios Billis

    I have the same issue.
    And I never get an email as well to get notified about this.
    So I always have to check the calendars to see if something like this has occurred.

    Please let me know if there is a solution for this issue.

    J. Davis


    The status of the Booking is set to Pending Admin to let the customers finish the transaction if he failed to pay for the first time. You may check this reply or the whole thread to learn why it was adjusted
    So you need to navigate to Accommodation > Settings > Payment Gateways > WooCommerce and scroll down to the email template Manual Action Required Notice. Make sure this email template is not disabled and add proper recipients under the email template.
    If you wish to get the Booking canceled if it is not paid during a specific period you may try the following workaround:

    – go to WooCommerce > Settings > Products > Inventory
    – set Hold stock (minutes) as much as you need e.g. 15 minutes. So if the payment is not finished within 15 minutes its status will be changed to Canceled. However, this will not affect the status of the Booking as we disabled that action above. So there is a code below that switches the status of the unfinished payment to Failed and this should change the status of the Booking to Canceled automatically.

    remove_action( 'woocommerce_cancel_unpaid_orders', 'wc_cancel_unpaid_orders' );
    add_action( 'woocommerce_cancel_unpaid_orders', 'theme_wc_cancel_unpaid_orders' );
    function theme_wc_cancel_unpaid_orders() {
     $held_duration = get_option( 'woocommerce_hold_stock_minutes' );
     if ( $held_duration < 1 || 'yes' !== get_option( 'woocommerce_manage_stock' ) ) {
     $data_store    = WC_Data_Store::load( 'order' );
     $unpaid_orders = $data_store->get_unpaid_orders( strtotime( '-' . absint( $held_duration ) . ' MINUTES', current_time( 'timestamp' ) ) );
     if ( $unpaid_orders ) {
      foreach ( $unpaid_orders as $unpaid_order ) {
          $order = wc_get_order( $unpaid_order );
          if ( apply_filters( 'woocommerce_cancel_unpaid_order', 'checkout' === $order->get_created_via(), $order ) ) {
        $order->update_status( 'failed', __( 'Unpaid order cancelled - time limit reached.', 'woocommerce' ) );
     wp_clear_scheduled_hook( 'woocommerce_cancel_unpaid_orders' );
     wp_schedule_single_event( time() + ( absint( $held_duration ) * 60 ), 'woocommerce_cancel_unpaid_orders' );

    You may add the code to the functions.php file of your child theme or by using a plugin like Code Snippets.

    best regards,
    John Davis

    Lucie Léger

    Hi John,

    Thank you very much for your answer, I have followed your workaround and it seems to work well now !


Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.