> For the complete documentation index, see [llms.txt](https://startbutton.gitbook.io/startbutton-product-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://startbutton.gitbook.io/startbutton-product-api/payouts/refunds.md).

# Refunds

This feature allows you to refund a single collection. You can refund transactions made via Bank Transfers, Cards or Mobile money.

### To Initiate Refunds for a transaction

| Header        | Value              |
| ------------- | ------------------ |
| Authorization | Bearer SECRET\_KEY |
| Content-type  | `application/json` |

The secret key can be gotten from the 'Settings' page on your Startbutton dashboard.

See [Authentication](/startbutton-product-api/getting-started/authentication.md).

**Endpoint**

POST - `{{baseurl}}/transaction/refunds`

| Param                | Required? | Description                                                                                                                                                         |
| -------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| transactionReference | Yes       | This is the original transaction reference of the transaction you wish to refund. This can be gotten from your collection Tab under the "*Transaction Ref*" column. |
| reason               | optional  | This is to provide a reason for the refund.                                                                                                                         |
| amount               | Yes       | <p>This is the amount you'd like to refund.<br><br>Note: Refunds can be partially or fully initiated.</p>                                                           |

This means that for a NGN2000 transaction, you can refund the whole sum or part of the entire sum.

{% hint style="info" %}
amount should be in fractional unit.
{% endhint %}

#### Sample code

{% tabs %}
{% tab title="Required parameters" %}

```json
{ 
  "transactionReference": "79xxxxxxxxx", 
  "amount": 500 
}
```

{% endtab %}

{% tab title="Optional parameters" %}

```json
{ 
  "transactionReference": "79xxxxxxxxx", 
  "reason":"Test refund", 
  "amount": 500 
}
```

{% endtab %}
{% endtabs %}

1. The original transaction reference can be obtained from the dashboard transaction detail or the Webhook notification.
2. Your available balance must be sufficient to cater to the refund being initiated.
3. A fee is attached to any processed refund.

#### Sample responses

{% tabs %}
{% tab title="Success" %}

```json
{ 
    "success": true, 
    "message": "Refund initiated successfully!" 
}
```

{% endtab %}

{% tab title="Bank not found" %}

```json
{ 
    "success": false, 
    "message": { 
        "reason": "Bank account to send refund not found!", 
        "type": "BANK_ACCOUNT" 
    }, 
    "data": 400 
}
```

{% endtab %}

{% tab title="Refund amount error" %}

```json
{ 
    "success": false, 
    "message": "Refund amount is greater than the transaction amount!", 
    "data": 400 
}
```

{% endtab %}

{% tab title="Insufficient available bal" %}

```json
{ 
    "success": false, 
    "message": "User has insufficient balance.", 
    "data": 400 
}
```

{% endtab %}
{% endtabs %}

When a refund is processed, you receive an email- informing you if the refund was `successful` OR `failed`.
