Skip to main content

Refund Management

Role Required: SOCIETY_ADMIN
Navigation: Sidebar → Booking → Refund Requests
Last Updated: March 2026 | Portal Version: 1.0

Overview

When a booking is cancelled, the citizen may be entitled to a refund of the payments they have made. Refund management covers the entire lifecycle from the initial cancellation request through to the final settlement — including buffer periods, admin approval, online gateway refunds, and offline (manual) refunds.

Refund Management

Refund List View

The Refund Management page provides a full overview of all refund requests for your society.

Header Actions:

  • Offline Refunds — Link to offline refund processing (/admin/refunds/offline)
  • Settings — Link to refund policy configuration (/admin/refunds/settings)

Summary Cards:

CardDescription
Total PendingTotal amount and count of pending refund requests
Total RefundedTotal amount and count of completed refunds
This MonthRefund amount and count for the current month
Cancellation FeesTotal cancellation fees collected

Status Tabs:

Filter refunds by status using these tabs:

  • All — All refund requests (with count)
  • Buffer Period — Requests in cooling-off period
  • Pending — Awaiting admin approval (with count)
  • Processing — Refund in progress
  • Completed — Fully settled
  • Rejected — Denied by admin

Search: Search by refund number, booking number, or user name.

Table Columns:

ColumnDescription
Refund #Refund number (e.g., RFD-2026-000019) and associated booking number
UserUser email/name and role badge (User/Admin)
StatusCurrent status badge (Approved, Pending Approval, etc.)
Refund AmountRefund amount and cancellation fee breakdown
DateDate of the refund request
ActionsView — Opens the refund detail page

Refund Status Lifecycle

AWAITING_BUFFER → PENDING → APPROVED → PROCESSING → COMPLETED
↓ ↓ ↓
REJECTED REVOKED AWAITING_OFFLINE_REFUND → COMPLETED

PARTIALLY_COMPLETED

FAILED

Status Reference

StatusMeaningAdmin Action
AWAITING_BUFFERIn cooling-off period — admin can contact citizen to discussOptional: contact citizen, or wait
PENDINGBuffer expired, awaiting admin approval (if required)Approve or Reject
APPROVEDAdmin approved — ready for refund processingInitiate refund
REJECTEDAdmin rejected the refund — booking restored to CONFIRMEDNone — terminal
REVOKEDCitizen withdrew their cancellation request within revocation windowNone — terminal
PROCESSINGOnline refund submitted to Razorpay gatewayMonitor — wait for gateway
AWAITING_OFFLINE_REFUNDOnline portion done, offline refund pending admin actionProcess offline refund
COMPLETEDAll refunds settled (online + offline)None — terminal ✅
PARTIALLY_COMPLETEDSome refunds succeeded, others pending/failedRetry failed, process remaining
FAILEDRefund processing failed at gatewayRetry or force-process

How Refunds Are Initiated

Refunds are triggered by booking cancellation, not created independently:

  1. Citizen requests cancellation → Society Admin approves → Refund request created
  2. Admin initiates cancellation → Refund request created automatically
  3. Refund enters AWAITING_BUFFER (if buffer is configured) or PENDING (if no buffer)

Refund Amount Calculation

The system automatically calculates refundable amounts:

ComponentDescription
Total Online AmountSum of all online (Razorpay) payments
Total Offline AmountSum of all verified offline payments
Total Paid AmountOnline + Offline
Non-Refundable AmountMembership fee + any non-refundable charges
Deduction AmountCancellation fee (configured percentage of total)
Refundable Online AmountOnline payments minus deductions (online-first deduction)
Refundable Offline AmountOffline payments minus remaining deductions
Deduction Logic

Cancellation fees are deducted from online payments first. If the deduction exceeds the online amount, the remainder is deducted from offline payments. This minimizes the admin's manual work.

Step-by-Step: Processing a Refund

1. Review the Refund Request

  1. Navigate to Refunds → Refund Management
  2. Click on a refund in PENDING status
  3. Review:
    • Refund Number: RFD-YYYY-NNNNNN
    • Booking details: Member name, plot, layout
    • Cancellation reason: Why the citizen/admin cancelled
    • Amount breakdown: Online, offline, deductions, refundable amounts
    • Timeline: When requested, buffer expiry, revocation expiry

2. Approve or Reject

To Approve:

  1. Click Approve Refund
  2. Add review notes (optional)
  3. Status moves to APPROVED
  4. You can now initiate the actual refund

To Reject:

  1. Click Reject Refund
  2. Enter the rejection reason (required) — e.g., "Cancellation window expired", "Policy exception denied"
  3. Status moves to REJECTED
  4. The booking is restored to CONFIRMED status
  5. Citizen is notified of the rejection

3. Initiate Online Refund

If there are online payments to refund:

  1. Open the approved refund request
  2. Click Initiate Online Refund
  3. The system creates refund transactions for each original Razorpay payment
  4. Refunds are submitted to the Razorpay gateway
  5. Status moves to PROCESSING
  6. Expect 5-7 business days for the refund to reach the citizen's bank account

4. Initiate Offline Refund

If there were offline (cash/cheque/NEFT) payments:

  1. The refund request shows AWAITING_OFFLINE_REFUND after online portion is done
  2. Click Initiate Offline Refund
  3. Offline refund transactions are created in PENDING status
  4. Process the actual refund: Prepare cheque / initiate bank transfer to citizen
  5. Once done, mark the offline refund as Processed with the reference details
  6. Have another admin Verify the offline refund (Maker-Checker)

5. Completion

When all refund components (online + offline) are complete:

  • Status moves to COMPLETED
  • Booking status moves to CANCELLED
  • Plot returns to AVAILABLE
  • Citizen receives completion notification

Buffer Period & Revocation Window

These are configurable per society in Settings:

Buffer Period

  • Time between cancellation request and refund processing start
  • Purpose: Give admin time to contact citizen and discuss alternatives
  • During buffer: Admin can call the citizen, offer alternatives, or let it expire
  • Default: Configurable (can be 0 for immediate processing)

Revocation Window

  • Time during which the citizen can withdraw their cancellation
  • If revoked: Booking returns to CONFIRMED, refund is cancelled
  • Default: 24 hours (configurable)
Request → [Buffer Period] → [Revocation Window expires] → PENDING for approval

Citizen can click "Revoke Cancellation" here

Cancellation Fee

If your society has a cancellation fee configured:

  • Calculated as a percentage of the total paid amount
  • Deducted from the refund before processing
  • Can be waived by admin (CancellationFeeWaived flag)
  • Shown in the refund breakdown for transparency

Pending Actions Dashboard

For any refund request, the system shows what actions are available:

ActionWhen Available
Approve/RejectStatus is PENDING or AWAITING_BUFFER
Initiate Online RefundAPPROVED and online amounts exist, not yet initiated
Initiate Offline RefundAPPROVED/PROCESSING/AWAITING_OFFLINE_REFUND and offline amounts exist
Retry FailedA refund transaction has FAILED status
Force ProcessAutomatic processing stalled — admin can override

Common Scenarios

"Citizen wants to cancel but I want to convince them to stay"

  1. During the Buffer Period, contact the citizen
  2. If they agree to continue, wait for the revocation window
  3. They can click Revoke Cancellation in their dashboard
  4. If they don't revoke, the refund proceeds to PENDING

"Online refund processed but offline refund is pending"

  1. The system tracks online and offline separately
  2. Status will be AWAITING_OFFLINE_REFUND or PARTIALLY_COMPLETED
  3. Arrange the offline refund (cheque/bank transfer) to the citizen
  4. Mark the offline refund as processed and verified
  5. Once both are done, status auto-updates to COMPLETED

"Refund failed at the gateway"

  1. Open the refund request → View transactions
  2. Find the failed transaction(s) — note the gateway error message
  3. Click Retry to re-submit to Razorpay
  4. If retry fails repeatedly, contact Razorpay support with the payment ID
  5. As a last resort, use Force Process to mark as manually resolved

"Admin wants to waive the cancellation fee"

  1. Open the refund request (before approval)
  2. Toggle the Waive Cancellation Fee option
  3. The refund amount will be recalculated without the deduction
  4. Approve the refund
  5. The waiver is logged in the audit trail

"Citizen revoked their cancellation but the plot was already released"

This shouldn't happen — the plot is only released when the refund reaches COMPLETED status. If the booking is in CANCELLATION_REQUESTED and the citizen revokes:

  • Booking returns to CONFIRMED
  • Plot remains BOOKED
  • No financial changes occur

Refund Notifications

The system sends notifications at each stage (if enabled in settings):

EventNotification
Refund RequestedCitizen: "Your cancellation request has been received"
Buffer StartedCitizen: "Your refund will be processed after [date]"
Revocation Window ExpiringCitizen: "Last chance to withdraw your cancellation"
ApprovedCitizen: "Your refund has been approved"
RejectedCitizen: "Your refund request was rejected — [reason]"
ProcessingCitizen: "Your refund of ₹X is being processed. Expected by [date]"
CompletedCitizen: "Your refund of ₹X has been completed"