# Webhook Notifications

You can configure webhook endpoints via the API to be notified about events that happen in your 1app account or connected accounts.

To receive webhook requests, you have to setup your webhook URL on your account dashboard.

Once the webhook registration for an event is completed, you will receive webhook requests at the destination URL you provided each time a transaction occur on your account.

When your webhook URL receives an event, it needs to parse and acknowledge the event. Acknowledging an event means returning a <mark style="background-color:green;">`200 OK`</mark> in the HTTP header. Without a `200 OK` in the response header, we flagged it as a failed attempt, we’ll keep sending events for the next 48 hours at 30 minute interval upon the first failure to acknowledged the even with <mark style="background-color:green;">`200 OK.`</mark>

Creating a Webhook endpoint can be easily done on your dashboard by following these steps.

* [ ] Log in to the 1app Dashboard and click on **Settings** page, then the **Developers** tab.
* [ ] Click on the **Developers** tab.
* [ ] Fill in the required details for your webhook.
* [ ] Once complete, click the save changes to save the setup.
* [ ] Test your webhook to ensure you’re getting the JSON body and returning a `200 OK` HTTP response

### Webhook Events

We currently support the following Event types:

* [ ] TRANSACTIONS : When a customer successfully make payment to your account using payment link, api, plugins etc
* [ ] REFUND: A transaction refund for your customer payment

### **Transaction Type**

In order to know the transaction type you are getting notification for, check the <mark style="color:red;">**paid\_through**</mark> field on the webhook notification response as stated below.&#x20;

* [ ] **dedicatedAccount**: Notification for virtual account/dedicated account transaction
* [ ] **paylink**: Notification for payment through our checkout/payment link
* [ ] virtualcard: Notification type for virtual card creation&#x20;

### Sample Response&#x20;

```json
{
  "event_type": "transactions",
  "data": {
    "trans_status": "06",
    "message": "Successful",
    "transmode": "live",
    "feeby": "split",
    "reference": "1B6579758742351347",
    "TransDetails": {
      "transref": "1B6579758742351347",
      "clientref": "",
      "amountpaid": "10000.00",
      "amount_settled": "9950.00",
      "fee": "50.00",
      "currency": "NGN",
      "transtoken": "de2ec4d82c7c15da23c39fc6a6f42",
      "previous_bal": "100000.00",
      "new_bal": "19950.00",
      "payment_channel": "",
      "payment_time": "Sat, 16 Jul 2022",
       "redirect_url": "",
      "transmsg": ""
    },
    "CustomerDetails": {
      "customer_name": "John Doe",
      "customer_email": "johndoe@example.com",
      "customer_phone": "0701234567"
    },
    "transerror": 0,
    "paid_through": "paylink",
    "isflagged": "0"
  }
}
```


---

# 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.1app.online/v1/webhook-notifications.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.
