# Refunds

A [captured](https://docs.commercelayer.io/core-api-reference/captures) payment can be refunded, either totally or partially. The total refund amount cannot exceed the amount captured — if it’s equal to the amount captured the refund will be full, if it’s less the refund will be partial:

* In case of a **partial refund**, the related order's payment status is moved to `partially_refunded` and a new successful refund transaction is created.
* In case of a **full refund**, the order status is moved to `cancelled`, its payment status to `refunded`, and a new successful refund transaction is created.

A refund process can be initiated via trigger attribute either from an [order](https://docs.commercelayer.io/core-api-reference/orders) or from a [return](https://docs.commercelayer.io/core-api-reference/returns#refunding-from-a-return). The response you get when you fetch a refund contains all the information and messages provided by the [payment gateway](https://docs.commercelayer.io/core-api-reference/payment_gateways).

If a refund gets stuck (for any reason) on our platform but succeeds on the payment gateway, you can [unblock](https://docs.commercelayer.io/core-api-reference/transactions#unblocking-stuck-transactions) it by passing the `_forward` trigger attribute.

<details>

<summary>Data model</summary>

Check the related [ER diagram](https://commercelayer.io/docs/data-model/orders-management) and explore the flowchart that illustrates how the refund resource relates to the order and the other transaction APIs.

</details>

{% hint style="info" %}
Create and delete operations are not allowed on this endpoint. You can only fetch a list of refunds or a specific single one, which can also be updated in order to mark it as succeeded, unblock it manually, or add/change common attributes (metadata, references, etc.).
{% endhint %}
