> ## Documentation Index
> Fetch the complete documentation index at: https://afrizon-admin.tunzaa.co.tz/llms.txt
> Use this file to discover all available pages before exploring further.

# Process and track order refunds in Meneja dashboard

> Initiate full or partial refunds from the order detail view, review refund items and amounts, and track refund status through to resolution in Meneja.

Refunds in Meneja let you return money to customers for all or part of an order. Each refund is recorded against the order and tracks the amount, reason, affected items, and current processing status. You can review pending refund requests, approve or reject them, and monitor the status of each refund from the order detail view or the dedicated Refunds section.

## Refund record structure

Each refund on an order is stored in the `refunds` array of the order record. A `Refund` contains:

| Field            | Description                                                       |
| ---------------- | ----------------------------------------------------------------- |
| `refund_id`      | Unique identifier for the refund                                  |
| `amount`         | Total amount to be refunded                                       |
| `reason`         | Text description of why the refund was requested                  |
| `status`         | Current `RefundStatus` value                                      |
| `items`          | Array of `RefundItem` objects specifying which items are refunded |
| `issued_by`      | Identifier of the user or system that issued the refund           |
| `transaction_id` | Associated transaction reference, or `null` if not yet processed  |
| `created_at`     | When the refund was requested                                     |
| `processed_at`   | When the refund was processed, or `null` if still pending         |
| `notes`          | Optional notes on the refund, or `null`                           |

### Refund items

The `items` array specifies exactly which order items are included in the refund:

| Field        | Description                                          |
| ------------ | ---------------------------------------------------- |
| `item_id`    | References the `item_id` of the original `OrderItem` |
| `product_id` | Product being refunded                               |
| `variant_id` | Variant reference, or `null`                         |
| `quantity`   | Number of units being refunded                       |
| `amount`     | Refund amount for this item                          |

## Refund statuses

| Status     | Meaning                                                           |
| ---------- | ----------------------------------------------------------------- |
| `pending`  | Refund has been requested and is awaiting review                  |
| `approved` | Refund has been approved and will be processed                    |
| `rejected` | Refund request was reviewed and denied                            |
| `partial`  | A partial refund was issued rather than the full requested amount |

<Note>
  When an order has at least one approved refund, its `status` changes to `refunded` or `partially_refunded` depending on whether the full order amount was returned.
</Note>

## Issuing a refund from the order detail view

<Steps>
  <Step title="Navigate to the order">
    Go to **Orders** and click the order you want to refund. You can search by order number or use the status and date filters to find it.
  </Step>

  <Step title="Open the Refunds section">
    Scroll to the **Refunds** section within the order detail view. Any existing refunds on this order are listed here with their current status.
  </Step>

  <Step title="Initiate a new refund">
    Click **Issue Refund**. Enter the refund amount and a reason. If you are refunding specific items rather than the full order, select the items and quantities to include.
  </Step>

  <Step title="Submit the refund">
    Confirm the refund details and submit. The refund is created with a status of `pending` and added to the order's `refunds` array.
  </Step>

  <Step title="Approve or reject the refund">
    If your workflow requires a review step, open the refund from the **Refunds** list, review the details, and choose **Approve Refund** or **Reject Refund**. Approving moves the status to `approved`; rejecting moves it to `rejected`.
  </Step>
</Steps>

<Warning>
  Refund amounts cannot exceed the original order total. For partial refunds, ensure the `amount` on each `RefundItem` does not exceed the original line total.
</Warning>

## Reviewing refund requests

The **Refunds** section of the dashboard lists all orders with refund activity. You can filter by refund status to focus on pending requests that need a decision.

* **Pending** — requests waiting for approval or rejection
* **Approved** — refunds that have been greenlit for processing
* **Rejected** — requests that were denied

Click **View details** on any row to open the full refund dialog, which shows customer information, the original items, payment method, reason, and the full order timeline.

<Tip>
  Use the **Pending** tab as your daily queue. Resolving pending refunds promptly helps maintain customer satisfaction and keeps order statuses accurate.
</Tip>
