Create a webhook

To setup a webhook, you'll need the following to get started:

  • Access token of an API user with the permission to manage webhooks. Any user with user role User and above can manage webhooks.
  • A receiver which is a HTTPs URL / API endpoint. There are just a few basic things that we expect from your endpoint:
    • It uses HTTPS on the standard 443 port
    • It responds within 5 seconds with a 2xx status code
  • An encryption key of 32 characters.
  • Merchant ID: This is the ID of the merchant you want to setup a webhook for.

Following code examples show how to create a webhook:

var httpClient = new HttpClient();

var webhookData = new
	type = "PaymentRequest",
	retry = true,
	destinationUrl = "<YOUR_SERVER_URL>",
	merchantID = "<YOUR_MERCHANT_ID>",
	isActive = true

var json = JsonConvert.SerializeObject(webhookData);
var content = new StringContent(json);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

var request = new HttpRequestMessage
	 Method = HttpMethod.Post,
	 RequestUri = new Uri(""),
	 Content = content

 var response = await httpClient.SendAsync(request);
 var responseContent = await response.Content.ReadAsStringAsync();

const axios = require('axios');

// Define your webhook data
const webhookData = {
    type: "PaymentRequest",
    retry: true,
    destinationUrl: "<YOUR_SERVER_URL>", // Replace with your server URL
    merchantID: "<YOUR_MERCHANT_ID>",    // Replace with your merchant ID
    secret: "<32_CHARACTERS_ENCRYPTION_KEY>", // Replace with your encryption key
    isActive: true

// Create a POST request to the API endpoint'', webhookData, {
    headers: {
        'Content-Type': 'application/json', // Set the content type header
        'Accept': 'application/json'        // Set the accept header
.then(response => {
    // Handle the response from the server
.catch(error => {
    // Handle any error from the request
    console.error('Error:', error.response ? : error.message);

import requests

# Define your webhook data
webhook_data = {
    "type": "PaymentRequest",
    "retry": True,
    "destinationUrl": "<YOUR_SERVER_URL>", # Replace with your server URL
    "merchantID": "<YOUR_MERCHANT_ID>",    # Replace with your merchant ID
    "secret": "<32_CHARACTERS_ENCRYPTION_KEY>", # Replace with your encryption key
    "isActive": True

# Specify the URL for creating the webhook
url = ''

# Send a POST request to the API endpoint
response =, json=webhook_data)

# Check if the request was successful
if response.status_code == 200:
    # Print the response content if successful
    print('Success:', response.json())
    # Print the error if the request failed
    print('Failed:', response.status_code, response.text)

You may use the OpenAPI specification to create a webhook here.