# Refunding asynchronous payment methods

payment providers must usually collect additional customer information before issuing a refund on an [asynchronous payment method](/digital-river-api/payments/payment-sources.md#synchronous-or-asynchronous), such as [Wire Transfer](/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/wire-transfer.md), [Online Banking](/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/online-banking.md), and [Konbini](/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/konbini.md).

After you apply a [refund request](/digital-river-api/order-management/returns-and-refunds-1/refunds/issuing-refunds.md) to these types of payment methods, Digital River typically moves the [refund's](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/refunds) `state` to `pending_information`, which triggers the creation of a [`refund.pending_information`](/digital-river-api/order-management/returns-and-refunds-1/refunds/issuing-refunds.md#pending-information-refunds) event.

The [event's](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/events) `data.object` contains `tokenInformation`. Within this data structure is a `token` and an `expiresTime`. The `expiresTime` of the `token` is 90 days after the event's `createdTime`.

{% code title="refund.pending\_information" %}

```javascript
{
    "id": "3830d505-f004-4924-b1d5-8c877f164726",
    "type": "refund.pending_information",
    "data": {
        "object": {
            "id": "re_d1988e09-eec8-48f4-8077-b6c955c84e69",
            "amount": 33.0,
            "createdTime": "2022-03-11T20:35:21Z",
            "currency": "JPY",
            "items": [],
            "orderId": "219187180336",
            "refundedAmount": 0.0,
            "state": "pending_information",
            "tokenInformation": {
                "token": "17bc3273-b588-420f-bd1f-49a89eec6322",
                "expiresTime": "2022-06-09T20:37:21.087Z"
            },
            "liveMode": false,
            "charges": [
                {
                    "id": "5253e76e-e92f-4128-acad-78c26d7999b8",
                    "captured": true,
                    "refunded": true,
                    "refunds": [
                        {
                            "createdTime": "2022-03-11T20:37:21Z",
                            "amount": 33.0,
                            "state": "pending_information"
                        }
                    ],
                    "sourceId": "0e311505-0955-47df-9808-beb34b5a8b30"
                }
            ]
        }
    },
    "liveMode": false,
    "createdTime": "2022-03-11T20:37:30.556222Z",
    ...
    "digitalriverVersion": "2021-12-13"
}
```

{% endcode %}

Handle `refund.pending_information` events by passing `tokenInformation` and `expiresTime` to your front-end.

On your page dedicated to collecting bank information during refunds, use `token` to set `refundToken` in the [create offline refund element's](/digital-river-api/developer-resources/reference/elements/offline-refund-elements.md#creating-an-offline-refund-element) configuration object. Once invoked, this method sends the token to Digital River's payment services, requesting a schema that defines the data fields customers must complete.

On the same page, [mount the element](/digital-river-api/developer-resources/reference/elements/offline-refund-elements.md#offlinerefund-mount) and inform customers that they must enter and submit the requested information by `expiresTime`. The designated container displays a form with the required fields for customers and triggers the [on ready event](/digital-river-api/developer-resources/reference/elements/offline-refund-elements.md#ready).

{% hint style="info" %}
Make sure you display the expiration time in a more human-readable form.
{% endhint %}

Digital River sends a[ change event](/digital-river-api/developer-resources/reference/elements/offline-refund-elements.md#change) once customers follow these instructions and the data is accepted. Handle it by redirecting customers to a page that notifies them the refund request has been successfully submitted. You can also use either [`unmount()`](/digital-river-api/developer-resources/reference/elements/offline-refund-elements.md#offlinerefund-unmount) or [`destroy()`](/digital-river-api/developer-resources/reference/elements/offline-refund-elements.md#offlinerefund-destroy)to remove the offline refund element from the data collection page.

Once you receive either the `refund.complete` or `refund.failed` event, send the appropriate notification to customers.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digitalriver.com/digital-river-api/order-management/returns-and-refunds-1/refunds/handling-refunds-for-asynchronous-payment-methods.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
