> For the complete documentation index, see [llms.txt](https://docs.coda.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coda.co/codapay/archived-tokenization-api-2.0/webhooks-notification.md).

# Webhooks Notification

We will send real time event data to your application endpoint and will send it to your app as Event JSON Payload with POST requests. E.g when a token is generated then you will receive token.status.authorized event and it will create data as Token Object, when charge succeeded, you will receive charge.succeeded event and it will create data as Charge Object.

## <mark style="color:purple;">Webhook Security</mark>

* We implement a security layer for our webhook request and utilize Event ID as an idempotency key to prevent the occurrence of duplicate webhook requests.
* Any webhook request exceeding 15 minutes should be rejected by the Partner to mitigate potential security risks.
* Coda will provide IP for whitelisting for webhook request.

<table><thead><tr><th width="208">Request Header</th><th>Description</th></tr></thead><tbody><tr><td>X-Request-Time</td><td>This header contains a timestamp in UTC format and it indicates the time when a webhook request was sent.</td></tr><tr><td>X-Signature</td><td>This header involves the HMAC 512 Algorithm</td></tr><tr><td>X-Version</td><td>This header contains a version Number</td></tr></tbody></table>

## <mark style="color:purple;">Signature Generation</mark>

Below code snippet is a sample code for generating signatures. The code sample is using Apache Commons Codec Library, which provides an implementation of algorithms including HMAC. The generation process is tightly linked with request time and request body.

{% tabs %}
{% tab title="Java" %}

```java
public String generateSignature(@Nonull String requestTime, @Nonull String requestBody, @Nonull String signingSecret) {
	// Construct signature message
String message = String.format("%s.%s", requestTime, requestBody);

// using commons-codec:commons-codec:1.16.0 library
return new HmacUtils("HmacSHA512", signingSecret).hmacHex(message);
}
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">Coda IP Address</mark>

* QA: 18.136.53.162
* Prod: [18.142.81.115](https://ap-southeast-1.console.aws.amazon.com/vpcconsole/home?region=ap-southeast-1#Addresses:public-ip=18.142.81.115), [18.139.237.164](https://ap-southeast-1.console.aws.amazon.com/vpcconsole/home?region=ap-southeast-1#Addresses:public-ip=18.139.237.164), [52.76.210.89](https://ap-southeast-1.console.aws.amazon.com/vpcconsole/home?region=ap-southeast-1#Addresses:public-ip=52.76.210.89)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.coda.co/codapay/archived-tokenization-api-2.0/webhooks-notification.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
