> ## Documentation Index
> Fetch the complete documentation index at: https://flutterwaveinc.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Refunds

> Learn how to process refunds.

You can refund a transaction easily with our APIs. To initiate a refund, send a request to the [refund endpoint](/api-reference/preauthorization/create-a-refund) with the transaction ID in the URL. You can also specify the amount to be refunded in the body if you wish to make a partial refund. <br />
The refund amount will be deducted from your available balance. Additionally, you can attach a note to the refund by specifying `comments`.

<CodeGroup>
  ```javascript Node.js theme={null}
  // Install with: npm i flutterwave-node-v3

  const Flutterwave = require('flutterwave-node-v3');
  const flw = new Flutterwave(process.env.FLW_PUBLIC_KEY, process.env.FLW_SECRET_KEY);
  const response = await flw.Transaction.refund({
      id: transactionId,
      amount: amountToRefund,
      comments: "Product out of stock.",
  });
  ```

  ```ruby Ruby theme={null}

  # Install with: gem install flutterwave_sdk

  require 'flutterwave_sdk'

  flw = Flutterwave.new(ENV["FLW_PUBLIC_KEY"], ENV["FLW_SECRET_KEY"], ENV["FLW_ENCRYPTION_KEY"])
  transactions = Transactions.new(flw)
  response = transactions.initiate_a_refund {
      id: transaction_id,
      amount: amount_to_refund,
      comments: "Product out of stock.",
  }
  print response

  ```

  ```json cURL theme={null}
  curl --request POST 'https://api.flutterwave.com/v3/transactions/75923/refund' \
    --header 'Authorization: Bearer YOUR_SECRET_KEY'\
    --header 'Content-Type: application/json'\
    --data-raw '{
      "amount": 6900,
      "comments": "Product out of stock."
  }'

  ```
</CodeGroup>

The above code will initiate the refund process, and you will get a similar response to the one below:

```json theme={null}
{
  "status": "success",
  "message": "Transaction refund initiated",
  "data": {
    "id": 75923,
    "account_id": 73362,
    "tx_id": 908790,
    "flw_ref": "URF_1577867664541_3572735",
    "wallet_id": 74639,
    "amount_refunded": 6900,
    "status": "completed",
    "destination": "payment_source",
    "meta": {
      "source": "availablebalance"
    },
    "created_at": "2021-01-24T09:18:37.366Z"
  }
}
```

Refunded transactions can have different statuses depending on the payment type. Here are other refund statuses.

| Refund status             | Explanation                                                                                                             |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `complete`                | General status for completed refunds.                                                                                   |
| `completed-bank-transfer` | Status for completed bank transfer refunds.                                                                             |
| `completed-momo`          | Refund status for completed mobile money transactions.                                                                  |
| `completed-mpgs`          | Refund status for completed card transactions.                                                                          |
| `completed-offline`       | Status for refunds completed manually outside of the Flutterwave application, e.g., Point-of-Sale or cash transactions. |
| `completed-preauth`       | A subset of `completed-mpgs`. This is the refund status of preauth card transactions.                                   |
| `pending-momo`            | Status for pending mobile money refunds.                                                                                |
| `processing`              | Status for refunds that are currently being treated. This is a transient state between initiated and completed refunds. |
