# Configuring the notification webhooks

## Problem

You want to rely on Adyen's webhooks notification system, which is the only way can receive automatic updates about requests that are processed asynchronously (e.g. [iDEAL](https://docs.adyen.com/payment-methods/ideal) transactions or payment modifications — captures, voids, and refunds).

## Solution

You can enable Adyen's notification system in two separate steps:

1. [Configure the notification webhooks](#1.-configure-the-notification-webhooks) on your Adyen's customer area.
2. [Update your Adyen gateway](#2.-update-your-gateway) on Commerce Layer

#### 1. Configure the notification webhooks

To configure the notification system, first you need to access your Adyen's customer area and follow the procedure detailed [here](https://docs.adyen.com/development-resources/webhooks#set-up-notifications-in-your-customer-area). On the *Server configuration* and Security sections, make sure to perform the following actions:

* Copy the `webhook_endpoint_url` you'll get by [fetching the gateway via API](https://app.gitbook.com/s/RWJeylueWkzLadK710XZ/adyen_gateways/retrieve) into the `URL` field.
* Select *JSON* as the method.
* Select *TLSv1.2* as the protocol.
* Generate the HMAC key to verify the integrity of notifications and copy it.

{% hint style="warning" %}
Commerce Layer does not support the Adyen webhooks *SOAP* or *HTTP* methods, but the **JSON** one only.
{% endhint %}

#### 2. Update your gateway

Once the notification webhooks are properly configured, you need to update your Adyen gateway and specify you're going to support the asynchronous notifications system.&#x20;

To do that, send a `PATCH` request to the `/api/adyen_gateway/:id` endpoint, setting the `async_api` attribute as `true` and passing the HMAC key you generated in the previous step as the `webhook_endpoint_secret` value.

### Example

{% tabs %}
{% tab title="Request" %}
The following request updates the Adyen gateway identified by the "HGFvfREwAX" ID in order to use the Adyen asynchronous APIs:

```javascript
curl -g -X PATCH \
  'http://yourdomain.commercelayer.io/api/adyen_gateways/HGFvfREwAX' \
  -H 'Accept: application/vnd.api+json' \
  -H 'Authorization: Bearer your-access-token' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
  "data": {
    "type": "adyen_gateways",
    "id": "HGFvfREwAX",
    "attributes": {
        async_api: true,
        webhook_endpoint_secret: 'xxxx-yyyy-zzzz'
      }
    }
  }
}'
```

{% endtab %}

{% tab title="Response" %}
On success, the API responds with a `200 OK` status code, returning the updated Adyen gateway object:

```javascript
{
  "data": {
    "id": "HGFvfREwAX",
    "type": "adyen_payments",
    "links": {
      "self": "https://yourdomain.commercelayer.io/api/adyen_gateways/HGFvfREwAX"
    },
    "attributes": {
      "name":"Adyen 01",
      "live_url_prefix":"bdf1c25d-b4e3-4c97-a51c-105e35dcbe27-AdyenDemo",
      "async_api": true,
      "webhook_endpoint_secret": "xxxx-yyyy-zzzz",
      "webhook_endpoint_url":"http://core.commercelayer.dev/webhook_callbacks/adyen_gateways/HGFvfREwAX",
      "created_at": "2018-01-01T12:00:00.000Z",
      "updated_at": "2018-01-01T12:00:00.000Z",
      "reference": null,
      "reference_origin": null,
      "metadata": {}
    },
    "relationships": {
      "order": {
        "links": {...}
      }
    },
    "meta": {
      "mode": "test"
    }
  }
}
```

{% endtab %}
{% endtabs %}

{% hint style="danger" %}
Be sure to enable webhooks on the Adyen dashboard as the very first step, and by the way always before setting the gateway's `async_api` attribute to `true`, otherwise you risk all of your payment modifications failing silently.
{% endhint %}

## More to read

See our documentation if you need more information on how to [fetch](https://app.gitbook.com/s/RWJeylueWkzLadK710XZ/adyen_gateways/retrieve) or [update an Adyen gateway](https://app.gitbook.com/s/RWJeylueWkzLadK710XZ/adyen_gateways/update).


---

# 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.commercelayer.io/how-tos/placing-orders/payments/adyen/configuring-the-notification-webhooks.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.
