Skip to documentation content

Pricing, Payments & Tax

Reconcile payments, refunds and webhooks

Reconcile gateway events with the payment ledger, handle refunds safely and investigate webhook failures without changing booking totals.

The payment ledger is the source of truth for settled and refunded amounts. Booking lifecycle and payment status are separate. A successful payment does not implicitly confirm a booking, and a cancelled booking does not prove that a refund happened.

Daily reconciliation

  1. Open Hotel Booking → Bookings and inspect the payment status, paid amount, balance and activity timeline.
  2. In the gateway dashboard, find the redacted transaction or order ID for the same booking.
  3. Compare amount, currency, event state and timestamp. Record any difference without editing the booking total.
  4. For a Pro invoice or CSV export, confirm tax and payment lines still match the immutable booking snapshot.

Provider callbacks must be authentic, amount- and currency-matched and idempotent. Receiving the same webhook twice must not create a second settlement or refund. A browser return is only a navigation signal; wait for a verified provider event when the transaction is processing.

Refunds and recovery

Use the supported Pro refund action when the policy allows it. Verify the refreshed ledger status as Partially Refunded or Refunded, the refunded amount and the activity entry. Keep room, service, discount and tax snapshots unchanged. If a provider refund was made outside the plugin, do not mark the booking manually until the event has been reconciled through the supported workflow.

For a webhook error, preserve the booking code, provider event ID, visible status and redacted response. Check endpoint reachability, signature secret, environment and duplicate delivery before retrying. Never include a card number, client secret, signing secret or full guest contact in evidence.

Was this article helpful?

Your feedback helps us improve the documentation.