---
title: Refund
url: amazon-pay-api-v2/v1-refund.html
---

A Refund allows you (the merchant) to refund some or all of a previously-captured Charge to the buyer. A refund can only be initiated on a previously-captured Charge, and multiple Refunds can be initiated on a single Charge.

Amazon Pay processes refunds asynchronously. Refunds start in a Pending state before moving to a Completed or Declined state, depending on whether or not the operation was successful. You must set up instant payment notifications (IPNs), or implement a polling mechanism to query <a href="../amazon-pay-api-v2/refund.md#get-refund" target="_blank" rel="noopener noreferrer">Get Refund</a> API for updates. See <a href="../amazon-pay-checkout/asynchronous-processing.md" target="_blank" rel="noopener noreferrer">asynchronous processing</a> for more information.

Supported operations

<ul id="profileTabs" class="nav nav-tabs">
  <li class="nav-item"><a class="active nav-link noExtIcon" href="#ustab" data-toggle="tab">US</a></li>
  <li class="nav-item"><a class="nav-link noExtIcon" href="#eutab" data-toggle="tab">EU / UK</a></li>
  <li class="nav-item"><a class="nav-link noExtIcon" href="#jptab" data-toggle="tab">JP</a></li>
</ul>
<div class="tab-content">
  <div role="tabpanel" class="tab-pane active" id="ustab" markdown="block">   
<div markdown="block">
* **Create Refund** - POST https://pay-api.amazon.com/:environment/:version/refunds/
* **Get Refund** - GET https://pay-api.amazon.com/:environment/:version/refunds/:refundId
</div>
  </div>
  <div role="tabpanel" class="tab-pane" id="eutab" markdown="block">
<div markdown="block">
* **Create Refund** - POST https://pay-api.amazon.eu/:environment/:version/refunds/
* **Get Refund** - GET https://pay-api.amazon.eu/:environment/:version/refunds/:refundId
</div>
  </div>
  <div role="tabpanel" class="tab-pane" id="jptab" markdown="block">
<div markdown="block">
* **Create Refund** - POST https://pay-api.amazon.jp/:environment/:version/refunds/
* **Get Refund** - GET https://pay-api.amazon.jp/:environment/:version/refunds/:refundId
</div>
  </div>
</div>

---

<!-- prettier-ignore-start -->
* TOC
{:toc}
{::options toc_levels="3" /}

***
<!-- prettier-ignore-end -->

### Refund object

<table width="100%" border="1">
    <tbody>
        <tr id='PDP9CANnxUg'>
            <td id='s:PDP9CANnxUg;PDP9CAuq5ca' style='vertical-align: top; font-weight: bold; width: 30%;' class='bold'>Parameter
                <br /></td>
            <td id='s:PDP9CANnxUg;PDP9CA8E4CV' style='vertical-align: top; font-weight: bold; width: 70%;' class='bold'>Description
                <br /></td>
        </tr>
        <tr id='PDP9CA4XqGQ'>
            <td id='s:PDP9CA4XqGQ;PDP9CAuq5ca' style='vertical-align: top;'>refundId<br><br>Type: string
                <br /></td>
            <td id='s:PDP9CA4XqGQ;PDP9CA8E4CV' style='vertical-align: top;'>Refund identifier<br><br><br>
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='vertical-align: top;'>chargeId<br><br>Type: string
                <br /></td>
            <td id='' style='vertical-align: top;'>Charge identifier<br><br><br>
                <br /></td>
        </tr>
        <tr id='PDP9CAOadtI'>
            <td id='s:PDP9CAOadtI;PDP9CAuq5ca' style='vertical-align: top;'>refundAmount<br><br>Type: <a href="#type-price">price</a>
                <br /></td>
            <td id='s:PDP9CAOadtI;PDP9CA8E4CV' style='vertical-align: top;'>Amount to be refunded. Refund amount can be either 15% or 75 USD/GBP/EUR (whichever is less) above the captured amount <br><br>Maximum value: 150,000 USD/GBP/EUR
                <br /></td>
        </tr>
        <tr id='PDP9CA0nAGy'>
            <td id='s:PDP9CA0nAGy;PDP9CAuq5ca' style='vertical-align: top;'>softDescriptor<br><br>Type: string
                <br /></td>
            <td id='s:PDP9CA0nAGy;PDP9CA8E4CV' style='vertical-align: top;'>Description shown on the buyer payment instrument statement<br><br>The soft descriptor sent to the payment processor is: "AMZ* &lt;soft descriptor here&gt;" <br><br>Max length: 16 characters
                <br /></td>
        </tr>
        <tr id='PDP9CAEkyVK'>
            <td id='s:PDP9CAEkyVK;PDP9CAuq5ca' style='vertical-align: top;'>creationTimestamp<br><br>Type: dateTime
                <br /></td>
            <td id='s:PDP9CAEkyVK;PDP9CA8E4CV' style='vertical-align: top;'>UTC date and time when the refund was created in ISO 8601 format
                <br /></td>
        </tr>
        <tr id='PDP9CAEYf4d'>
            <td id='s:PDP9CAEYf4d;PDP9CAuq5ca' style='vertical-align: top;'>statusDetail<br><br>Type: <a href="#type-statusdetail">statusDetail</a>
                <br /></td>
            <td id='s:PDP9CAEYf4d;PDP9CA8E4CV' style='vertical-align: top;'>State of the refund object
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='vertical-align: top;'>releaseEnvironment<br /><br />Type: string
                <br /></td>
            <td id='' style='vertical-align: top;'>The environment the Refund object was created in (either Sandbox or Live)
                <br /></td>
        </tr>
    </tbody>
</table>

#### Type: price

<table width="100%" border="1">
    <tbody>
        <tr id='OLS9CAbORDS'>
            <td id='s:OLS9CAbORDS;OLS9CAjgdgj' style='vertical-align: top; font-weight: bold; width: 30%;' class='bold'>Parameter
                <br /></td>
            <td id='s:OLS9CAbORDS;OLS9CAZr77k' style='vertical-align: top; font-weight: bold; width: 70%;' class='bold'>Description
                <br /></td>
        </tr>
        <tr id='OLS9CAW39VE'>
            <td id='s:OLS9CAW39VE;OLS9CAjgdgj' style='vertical-align: top;'>amount<br><br>Type: string
                <br /></td>
            <td id='s:OLS9CAW39VE;OLS9CAZr77k' style='vertical-align: top;'>Transaction amount
                <br /></td>
        </tr>
        <tr id='OLS9CATPsPn'>
            <td id='s:OLS9CATPsPn;OLS9CAjgdgj' style='vertical-align: top;'>currencyCode<br><br>Type: string
                <br /></td>
            <td id='s:OLS9CATPsPn;OLS9CAZr77k' style='vertical-align: top;'>Transaction currency code in ISO 4217 format<br /><br />Example: USD
                <br /></td>
        </tr>
    </tbody>
</table>


#### Type: statusDetail

<table width="100%" border="1">
    <tbody>
        <tr id='PDP9CA9JtH9'>
            <td id='s:PDP9CA9JtH9;PDP9CAJJAiE' style='vertical-align: top; font-weight: bold; width: 30%;' class='bold'>Parameter
                <br /></td>
            <td id='s:PDP9CA9JtH9;PDP9CA1dZPH' style='vertical-align: top; font-weight: bold; width: 70%;' class='bold'>Description
                <br /></td>
        </tr>
        <tr id='PDP9CATczTv'>
            <td id='s:PDP9CATczTv;PDP9CAJJAiE' style='vertical-align: top;'>state<br><br>Type: string
                <br /></td>
            <td id='s:PDP9CATczTv;PDP9CA1dZPH' style='vertical-align: top;'>Current object state
                <br /></td>
        </tr>
        <tr id='PDP9CA4IWep'>
            <td id='s:PDP9CA4IWep;PDP9CAJJAiE' style='vertical-align: top;'>reasonCode<br><br>Type: string
                <br /></td>
            <td id='s:PDP9CA4IWep;PDP9CA1dZPH' style='vertical-align: top;'>Reason code for current state
                <br /></td>
        </tr>
        <tr id='PDP9CA6nm1O'>
            <td id='s:PDP9CA6nm1O;PDP9CAJJAiE' style='vertical-align: top;'>reasonDescription<br><br>Type: string
                <br /></td>
            <td id='s:PDP9CA6nm1O;PDP9CA1dZPH' style='vertical-align: top;'>An optional description of the refund state
                <br /></td>
        </tr>
        <tr id='PDP9CALR0Vh'>
            <td id='s:PDP9CALR0Vh;PDP9CAJJAiE' style='vertical-align: top;'>lastUpdatedTimestamp<br><br>Type: dateTime
                <br /></td>
            <td id='s:PDP9CALR0Vh;PDP9CA1dZPH' style='vertical-align: top;'>UTC date and time when the state was created in ISO 8601 format
                <br /></td>
        </tr>
    </tbody>
</table>

### States and reason code

<img src='https://m.media-amazon.com/images/G/01/EPSDocumentation/AmazonPay/Integration/RefundStates._CB1565018489_.png' />

<table width="100%" border="1">
    <tbody>
        <tr id='PDP9CApFcnz'>
            <td id='s:PDP9CApFcnz;PDP9CAXWN9N' style='vertical-align: top; font-weight: bold; width: 20%;' class='bold'>State
                <br /></td>
            <td id='s:PDP9CApFcnz;PDP9CAMunfi' style='vertical-align: top; font-weight: bold; width: 40%;' class='bold'>Description
                <br /></td>
            <td id='s:PDP9CApFcnz;PDP9CA8aZjf' style='vertical-align: top; font-weight: bold; width: 40%;' class='bold'>Reason code
                <br /></td>
        </tr>
        <tr id='PDP9CAvcPWF'>
            <td id='s:PDP9CAvcPWF;PDP9CAXWN9N' style='vertical-align: top;'>RefundInitiated
                <br /></td>
            <td id='s:PDP9CAvcPWF;PDP9CAMunfi' style='vertical-align: top;'>A Refund object is in Pending state until it is processed by Amazon<br><br>Allowed operation: <br>GET Refund
                <br /></td>
            <td id='s:PDP9CAvcPWF;PDP9CA8aZjf' style='vertical-align: top;'>-
                <br /></td>
        </tr>
        <tr id='PDP9CA8Myo7'>
            <td id='s:PDP9CA8Myo7;PDP9CAXWN9N' style='vertical-align: top;'>Declined
                <br /></td>
            <td id='s:PDP9CA8Myo7;PDP9CAMunfi' style='vertical-align: top;'>Amazon has declined the refund because maximum amount has been refunded or there was some other issue<br><br>Allowed operation: <br>GET Refund
                <br /></td>
            <td id='s:PDP9CA8Myo7;PDP9CA8aZjf' style='vertical-align: top;'><b>AmazonRejected</b> - Amazon has rejected the refund, potentially due to a negative balance in your merchant account. To resolve this, you should repay the negative seller balance (NSB) to Amazon, then attempt the refund again or issue a refund to the buyer in an alternate manner (for example, a gift card or store credit).<br><br><b>ProcessingFailure</b> - Amazon could not process the transaction because of an internal processing error, or because the buyer has already received a refund from an A-to-z claim, or a chargeback. You should only retry the refund if the Capture object is in the Completed state. Otherwise, you should refund the buyer in an alternative way (for example, a store credit or a check)
                <br /></td>
        </tr>
        <tr id='PDP9CASjL6m'>
            <td id='s:PDP9CASjL6m;PDP9CAXWN9N' style='vertical-align: top;'>Refunded
                <br /></td>
            <td id='s:PDP9CASjL6m;PDP9CAMunfi' style='vertical-align: top;'>Refund request has been processed and funds will be refunded to the buyer<br><br>Allowed operation: <br>GET Refund
                <br /></td>
            <td id='s:PDP9CASjL6m;PDP9CA8aZjf' style='vertical-align: top;'>-
                <br /></td>
        </tr>
    </tbody>
</table>

## Operations

### Create Refund

Initiate a full or partial refund for a charge. At your discretion, you can also choose to overcompensate the buyer and refund more than the original Charge amount by either 15% or 75 USD/GBP/EUR or 8,400 YEN (whichever is less). The response for Create Refund will include a Refund ID. This is the only time this value will ever be returned. You must store the ID in order to retrieve Refund details at a later date.

#### Request

```
curl "https://pay-api.amazon.com/:environment/:version/refunds/" \
-X POST
-H "x-amz-pay-idempotency-key: AVLo5tI10BHgEk2jEXAMPLEKEY"
-H "authorization: Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
-d @request_body
```

#### Request body

```
{
    "chargeId": "CHARGE_ID",
    "refundAmount": {
        "amount": "14.00",
        "currencyCode": "USD"
    },
    "softDescriptor": "Descriptor"
}
```


#### Request parameters

<table width="100%" border="1">
    <tbody>
        <tr id='PDP9CAmKLQf'>
            <td id='s:PDP9CAmKLQf;PDP9CA2olcO' style='vertical-align: top; font-weight: bold; width: 30%;' class='bold'>Name
                <br /></td>
            <td id='s:PDP9CAmKLQf;PDP9CATyPvC' style='vertical-align: top; font-weight: bold; width: 20%;' class='bold'>Location
                <br /></td>
            <td id='s:PDP9CAmKLQf;PDP9CAwX3Nj' style='vertical-align: top; font-weight: bold; width: 50%;' class='bold'>Description
                <br /></td>
        </tr>
        <tr id='PDP9CAnivE7'>
            <td id='s:PDP9CAnivE7;PDP9CA2olcO' style='vertical-align: top;'>x-amz-pay-idempotency-key<br><b>(required)</b><br><br>Type: string
                <br /></td>
            <td id='s:PDP9CAnivE7;PDP9CATyPvC' style='vertical-align: top;'>Header
                <br /></td>
            <td id='s:PDP9CAnivE7;PDP9CAwX3Nj' style='vertical-align: top;'><a href="../amazon-pay-api-v2/v1-idempotency.md">Idempotency key</a> to safely retry requests
                <br /></td>
        </tr>
        <tr id='PDP9CAeT5BG'>
            <td id='s:PDP9CAeT5BG;PDP9CA2olcO' style='vertical-align: top;'>chargeId<br><b>(required)</b><br><br>Type: string
                <br /></td>
            <td id='s:PDP9CAeT5BG;PDP9CATyPvC' style='vertical-align: top;'>Body
                <br /></td>
            <td id='s:PDP9CAeT5BG;PDP9CAwX3Nj' style='vertical-align: top;'>Charge identifier
                <br /></td>
        </tr>
        <tr id='PDP9CAkSeaD'>
            <td id='s:PDP9CAkSeaD;PDP9CA2olcO' style='vertical-align: top;'>refundAmount<br><b>(required)</b><br><br>Type: <a href="#type-price">price</a>
                <br /></td>
            <td id='s:PDP9CAkSeaD;PDP9CATyPvC' style='vertical-align: top;'>Body
                <br /></td>
            <td id='s:PDP9CAkSeaD;PDP9CAwX3Nj' style='vertical-align: top;'>Amount to be refunded. Refund amount can be either 15% or 75 USD/GBP/EUR (whichever is less) above the captured amount<br><br> Maximum value: 150,000 USD/GBP/EUR
                <br /></td>
        </tr>
        <tr id='PDP9CATP71V'>
            <td id='s:PDP9CATP71V;PDP9CA2olcO' style='vertical-align: top;'>softDescriptor<br><br>Type: string
                <br /></td>
            <td id='s:PDP9CATP71V;PDP9CATyPvC' style='vertical-align: top;'>Body
                <br /></td>
            <td id='s:PDP9CATP71V;PDP9CAwX3Nj' style='vertical-align: top;'>The description is shown on the buyer payment instrument (such as bank) statement<br><br>Default: "AMZ*&amp;lt;MerchantStoreName&amp;gt; amzn.com/pmts" <br><br>Max length: 16 characters
                <br /></td>
        </tr>
    </tbody>
</table>

#### Response

Returns <a href="https://restfulapi.net/http-status-201-created/" target="_blank" rel="noopener noreferrer">HTTP 201 (Created) status</a> if the operation was successful. Subsequent retry attempts using the same [Idempotency Key](../amazon-pay-api-v2/v1-idempotency.html) may return a <a href="https://restfulapi.net/http-status-200-ok" target="_blank" rel="noopener noreferrer">HTTP 200 (OK) status</a> if a new resource is not created.

```
{
     "refundId": "S01-5105180-3221187-R022311",
     "chargeId": "S01-5105180-3221187-C056351",
     "refundAmount": {
         "amount": "14.00",
         "currencyCode": "USD"
     },
     "softDescriptor": "Descriptor",
     "creationTimestamp": "20190714T155300Z",
     "statusDetail": {
         "state": "Pending",
         "reasonCode": null,
         "reasonDescription": null,
         "lastUpdatedTimestamp": "20190714T155300Z"
     }
}
```

#### Error codes

<table width="100%" border="1">
    <tbody>
        <tr id='PDP9CANdMzU'>
            <td id='s:PDP9CANdMzU;PDP9CAg5kHq' style='vertical-align: top; font-weight: bold; width: 30%;' class='bold'>HTTP status code
                <br /></td>
            <td id='s:PDP9CANdMzU;PDP9CAD7K37' style='vertical-align: top; font-weight: bold; width: 20%;' class='bold'>Reason code
                <br /></td>
            <td id='s:PDP9CANdMzU;PDP9CAWVmvY' style='vertical-align: top; font-weight: bold; width: 50%;' class='bold'>Description
                <br /></td>
        </tr>
        <tr id='PDP9CA4NvaR'>
            <td id='s:PDP9CA4NvaR;PDP9CAg5kHq' style='vertical-align: top;'>400 BAD_REQUEST
                <br /></td>
            <td id='s:PDP9CA4NvaR;PDP9CAD7K37' style='vertical-align: top;'>TransactionAmountExceeded
                <br /></td>
            <td id='s:PDP9CA4NvaR;PDP9CAWVmvY' style='vertical-align: top;'>You've exceeded the maximum refund amount allowed for this Refund
                <br /></td>
        </tr>
        <tr id='PDP9CARXXd3'>
            <td id='s:PDP9CARXXd3;PDP9CAg5kHq' style='vertical-align: top;'>422 UNPROCESSABLE_ENTITY
                <br /></td>
            <td id='s:PDP9CARXXd3;PDP9CAD7K37' style='vertical-align: top;'>InvalidChargeStatus
                <br /></td>
            <td id='s:PDP9CARXXd3;PDP9CAWVmvY' style='vertical-align: top;'>You tried to call a Refund operation on a Charge that is not in a Completed state. Check the Charge status for more information
                <br /></td>
        </tr>
        <tr id='PDP9CA1cw0o'>
            <td id='s:PDP9CA1cw0o;PDP9CAg5kHq' style='vertical-align: top;'>422 UNPROCESSABLE_ENTITY
                <br /></td>
            <td id='s:PDP9CA1cw0o;PDP9CAD7K37' style='vertical-align: top;'>TransactionCountExceeded
                <br /></td>
            <td id='s:PDP9CA1cw0o;PDP9CAWVmvY' style='vertical-align: top;'>You've exceeded the maximum limit of 10 Refunds per Charge
                <br /></td>
        </tr>
        <tr id='PDP9CApOlE3'>
            <td id='s:PDP9CApOlE3;PDP9CAg5kHq' style='vertical-align: top;'>422 UNPROCESSABLE_ENTITY
                <br /></td>
            <td id='s:PDP9CApOlE3;PDP9CAD7K37' style='vertical-align: top;'>AmazonRejected
                <br /></td>
            <td id='s:PDP9CApOlE3;PDP9CAWVmvY' style='vertical-align: top;'>Amazon has rejected the refund. You should issue a refund to the buyer in an alternate manner (for example, a gift card or store credit)
                <br /></td>
        </tr>
        <tr id='PDP9CA6rEXd'>
            <td id='s:PDP9CA6rEXd;PDP9CAg5kHq' style='vertical-align: top;'>500 INTERNAL_SERVER_ERROR
                <br /></td>
            <td id='s:PDP9CA6rEXd;PDP9CAD7K37' style='vertical-align: top;'>ProcessingFailure
                <br /></td>
            <td id='s:PDP9CA6rEXd;PDP9CAWVmvY' style='vertical-align: top;'>Amazon could not process the transaction because of an internal processing error or because the buyer has already received a refund from an A-to-z claim or a chargeback. You should only retry the Refund if the Charge object is in the Captured state. Otherwise, you should refund the buyer in an alternative way (for example, a store credit or a check)
                <br /></td>
        </tr>
    </tbody>
</table>

Generic errors can be found [here](https://restfulapi.net/http-status-200-ok/) .

### Get Refund

Get refund details.

#### Request

```
curl "https://pay-api.amazon.com/:environment/:version/refunds/:refundId" \
-X GET
-H "authorization: Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
```

#### Request parameters

<table width="100%" border="1">
    <tbody>
        <tr id='PDP9CAQSM5J'>
            <td id='s:PDP9CAQSM5J;PDP9CAXfdYQ' style='vertical-align: top; font-weight: bold; width: 30%;' class='bold'>Name
                <br /></td>
            <td id='s:PDP9CAQSM5J;PDP9CAkAlRX' style='vertical-align: top; font-weight: bold; width: 20%;' class='bold'>Location
                <br /></td>
            <td id='s:PDP9CAQSM5J;PDP9CAn6CQD' style='vertical-align: top; font-weight: bold; width: 50%;' class='bold'>Description
                <br /></td>
        </tr>
        <tr id='PDP9CAkesJe'>
            <td id='s:PDP9CAkesJe;PDP9CAXfdYQ' style='vertical-align: top;'>refundId<br><b>(required)</b><br><br>Type: string
                <br /></td>
            <td id='s:PDP9CAkesJe;PDP9CAkAlRX' style='vertical-align: top;'>Path Parameter
                <br /></td>
            <td id='s:PDP9CAkesJe;PDP9CAn6CQD' style='vertical-align: top;'>Refund identifier
                <br /></td>
        </tr>
    </tbody>
</table>

#### Response

Returns <a href="https://restfulapi.net/http-status-200-ok" target="_blank" rel="noopener noreferrer">HTTP 200 (OK) status</a> if the operation was successful.

```
{
     "refundId": "S01-5105180-3221187-R022311",
     "chargeId": "S01-5105180-3221187-C056351",
     "refundAmount":{
         "amount": "14.00",
         "currencyCode": "USD"
     },
     "softDescriptor": "Descriptor",
     "creationTimestamp": "20190714T155300Z",
     "statusDetail":{
         "state": "Refunded",
         "reasonCode": null,
         "reasonDescription": null,
         "lastUpdatedTimestamp": "20190714T155300Z"
     }
}
```

#### Error codes

Generic errors can be found [here](../amazon-pay-api-v2/v1-error-handling.html).

### Related topics

- [Charge object](../amazon-pay-api-v2/v1-charge.html)
