# Retrieve refund

Get details of a refund for a card transfer.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need to specify the `/accounts/{accountID}/transfers.read` scope.

## Endpoint

```
GET
/accounts/{accountID}/transfers/{transferID}/refunds/{refundID}
```

## cURL Example

```shell
curl -X GET "https://api.moov.io/accounts/{accountID}/transfers/{transferID}/refunds/{refundID}" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.07.00"
```

## Go Example

```go
mc, _ := moov.NewClient()

var accountID string
var transferID string
var refundID string

mc.GetRefund(ctx, accountID, transferID, refundID)
```

## TypeScript Example

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.transfers.getRefund({
    transferID: "e90d3386-c5b2-4e2b-b841-efc590eba6c0",
    accountID: "bbb69538-edaa-4a0b-b107-f46f2da89864",
    refundID: "8e12687e-a4e8-46c9-9e11-a57bbd781e44",
  });

console.log(result);
}

run();
```

## PHP Example

```php
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;

$sdk = MoovPhp\Moov::builder()
    ->setSecurity(
        new Components\Security(
            username: '',
            password: '',
        )
    )
    ->build();

$response = $sdk->transfers->getRefund(
    transferID: 'e90d3386-c5b2-4e2b-b841-efc590eba6c0',
    accountID: 'bbb69538-edaa-4a0b-b107-f46f2da89864',
    refundID: '8e12687e-a4e8-46c9-9e11-a57bbd781e44'
);

if ($response->cardAcquiringRefund !== null) {
    // handle response
}
```

## Java Example

```java
package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.GetRefundResponse;
import java.lang.Exception;

public class Application {

public static void main(String[] args) throws Exception {

Moov sdk = Moov.builder()
                .security(Security.builder()
                    .username("")
                    .password("")
                    .build())
            .build();

GetRefundResponse res = sdk.transfers().getRefund()
                .transferID("e90d3386-c5b2-4e2b-b841-efc590eba6c0")
                .accountID("bbb69538-edaa-4a0b-b107-f46f2da89864")
                .refundID("8e12687e-a4e8-46c9-9e11-a57bbd781e44")
                .call();

if (res.cardAcquiringRefund().isPresent()) {
            System.out.println(res.cardAcquiringRefund().get());
        }
    }
}
```

## Python Example

```python
from moovio_sdk import Moov
from moovio_sdk.models import components

with Moov(
    security=components.Security(
        username="",
        password="",
    ),
) as moov:

res = moov.transfers.get_refund(transfer_id="e90d3386-c5b2-4e2b-b841-efc590eba6c0", account_id="bbb69538-edaa-4a0b-b107-f46f2da89864", refund_id="8e12687e-a4e8-46c9-9e11-a57bbd781e44")

# Handle response
    print(res)
```

## Ruby Example

```ruby
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)
res = s.transfers.get_refund(transfer_id: 'e90d3386-c5b2-4e2b-b841-efc590eba6c0', account_id: 'bbb69538-edaa-4a0b-b107-f46f2da89864', refund_id: '8e12687e-a4e8-46c9-9e11-a57bbd781e44')

unless res.card_acquiring_refund.nil?
  # handle response
end
```

## C# Example

```csharp
using Moov.Sdk;
using Moov.Sdk.Models.Components;

var sdk = new MoovClient(security: new Security() {
    Username = "",
    Password = "",
});

var res = await sdk.Transfers.GetRefundAsync(
    transferID: "e90d3386-c5b2-4e2b-b841-efc590eba6c0",
    accountID: "bbb69538-edaa-4a0b-b107-f46f2da89864",
    refundID: "8e12687e-a4e8-46c9-9e11-a57bbd781e44"
);

// handle response
```

## Example

Details of a card refund.

```json
{
  "refundID": "string",
  "createdOn": "2019-08-24T14:15:22Z",
  "updatedOn": "2019-08-24T14:15:22Z",
  "status": "created",
  "amount": {
    "currency": "USD",
    "value": 1204
  },
  "amountDetails": {
    "surcharge": {
      "currency": "USD",
      "valueDecimal": "12.987654321"
    }
  },
  "cardDetails": {
    "status": "initiated",
    "failureCode": "call-issuer",
    "initiatedOn": "2019-08-24T14:15:22Z",
    "confirmedOn": "2019-08-24T14:15:22Z",
    "settledOn": "2019-08-24T14:15:22Z",
    "failedOn": "2019-08-24T14:15:22Z",
    "completedOn": "2019-08-24T14:15:22Z"
  }
}
```

### Response Headers

- A unique identifier used to trace requests.

- The request contained missing or expired authentication.

- The user is not authorized to make the request.

- The requested resource was not found.

- Request was refused due to rate limiting.

- The request failed due to an unexpected error.

- The request failed because a downstream service failed to respond.

- Set this header to v2026.07.00 to use the API described in this specification. When omitted, the server defaults to v2024.01.00, which may not match the behavior documented here.

### Possible Values:

- `v2026.07.00`

#### Identifier for the transfer.

#### Identifier for the refund.

#### Details of a card refund.

**Show child attributes**

- A 3-letter ISO 4217 currency code.

- Quantity in the smallest unit of the specified currency.

**Show child attributes**

#### Possible values:

- `created`, `pending`, `completed`, `failed`

**Show child attributes**

- The amount of surcharge to refund. Should be proportionate to the surcharge on the original transfer

**Show child attributes**

- A decimal-formatted numerical string that represents up to 9 decimal place precision.

**Show child attributes**

#### Possible values:

- `initiated`, `confirmed`, `settled`, `failed`, `completed`

#### Possible values:

- `call-issuer`, `do-not-honor`, `processing-error`, `invalid-transaction`, `invalid-amount`, `no-such-issuer`, `reenter-transaction`, `cvv-mismatch`, `lost-or-stolen`, `insufficient-funds`, `invalid-card-number`, `invalid-merchant`, `expired-card`, `incorrect-pin`, `transaction-not-allowed`, `suspected-fraud`, `amount-limit-exceeded`, `velocity-limit-exceeded`, `revocation-of-authorization`, `card-not-activated`, `issuer-not-available`, `could-not-route`, `cardholder-account-closed`, `unknown-issue`, `duplicate-transaction`.
