# Webhook & Redirect URL

{% hint style="danger" %}
**This documentation site has been deprecated as of September 8, 2025, and will no longer receive updates. Please refer to the new documentation site at** [**https://docs.squadco.com**](https://docs.squadco.com)**.**
{% endhint %}

Webhooks are used so that anytime an event occurs on your account, your application can be notified with instant, real-time notifications by Squad.

Squad webhooks are HTTP calls that are triggered by specific events. It is necessary only for behind-the-scenes transactions.&#x20;

This can be set up on your Squad Dashboard by specifying a URL we would send POST requests to whenever a successful transaction occurs.&#x20;

To process notifications, you need to:

Paste your redirect an&#x64;**`Callback/Webhook URL`** in the space provided on your dashboard by following the steps below:

* Login to your Squad dashboard.&#x20;
* Go to Profile > API & Webhook.
* In the Webhook URL field, enter your Notification URL.
* In the redirect URL field, enter your redirect URL- and on completion of payment, the customer will be redirected to the URL with the transaction reference passed as a query param.
* Enter a redirect URL for your customers to be redirected after they complete payment. \
  Note: The Redirect URL is optional.

{% hint style="warning" %}
***KINDLY ENSURE YOU HAVE A TRANSACTION REFERENCE CHECKER WHEN IMPLEMENTING WEBHOOKS TO AVOID GIVING DOUBLE VALUE ON TRANSACTIONS.***
{% endhint %}

{% hint style="info" %}
Sending IP: 18.133.63.109
{% endhint %}

## Webhook Validation

To configure webhook notifications: go to <mark style="color:blue;">**dashboard > profile > Api & Webhooks.**</mark>

## The Webhook is a post request that is triggered whenever a transaction is successful

<mark style="color:green;">`POST`</mark>&#x20;

#### Headers

| Name                                                     | Type | Description                                                                                                                                                                                                              |
| -------------------------------------------------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| x-squad-encrypted-body<mark style="color:red;">\*</mark> | Hash | This is the encrypted payload which serves as a test of truth for all transactions. This should be compared against the body sent via the webhook by encrypting the body of data and comparing the value with this value |
| Content-type<mark style="color:red;">\*</mark>           | JSON | application/json                                                                                                                                                                                                         |

Sample POST request to be sent via webhook upon successful transaction

## Sample Webhook for Card Transactions

```
{
  "Event": "charge_successful",
  "TransactionRef": "4678388588A0",
  "Body": {
    "amount": 83000,
    "transaction_ref": "4678388588A0",
    "gateway_ref": "4678388588A0_1_1",
    "transaction_status": "success",
    "email": "henimastic@gmail.com",
    "merchant_id": "SBN1EBZEQ8",
    "currency": "NGN",
    "transaction_type": "Card",
    "merchant_amount": 82170,
    "created_at": "2022-09-06T15:28:02.477",
    "customer_mobile": null,
    "meta": {},
    "payment_information": {
      "payment_type": "card",
      "pan": "408408******4081",
      "recurring_id": null,
      "card_type": "visa",
      "token_id": "tJlYMKcwPd"
    }
  }
}
```

## Sample Webhook for Bank Transfer Option

```

{
  "Event": "charge_successful",
  "TransactionRef": "SQGRAN7557984665043",
  "Body": {
    "amount": 10000,
    "transaction_ref": "SQGRAN7557984665043",
    "gateway_ref": "SQGRAN7557984665043_2_1",
    "transaction_status": "Success",
    "email": "urannas@gmail.com",
    "merchant_id": "HD3DDPKW",
    "currency": "NGN",
    "transaction_type": "Bank",
    "merchant_amount": 9900,
    "created_at": "2023-01-23T10:01:52.284",
    "meta": {},
    "is_recurring": false
  }
}
```

## SAMPLE WEBHOOK FOR USSD PAYMENT OPTION

```
{
  "Event": "charge_successful",
  "TransactionRef": "SQCHIZ6035872641857",
  "Body": {
    "amount": 20000,
    "transaction_ref": "SQCHIZ6035872641857",
    "gateway_ref": "SQCHIZ6035872641857_3_1",
    "transaction_status": "Success",
    "email": "maaa@h.com",
    "currency": "NGN",
    "transaction_type": "Ussd",
    "merchant_amount": 19800,
    "created_at": "2023-01-25T13:41:16.223",
    "customer_mobile": "0803***7205",
    "meta": {
      "plan": "premium"
    },
    "is_recurring": false
  }
}
```

### Sample Webhook for Merchant USSD (USSD CODE ON THE DASHBOARD)

```
{
  "Event": "charge_successful",
  "TransactionRef": "SQCHIZ410708",
  "Body": {
    "amount": 10000,
    "transaction_ref": "SQCHIZ410708",
    "gateway_ref": "f7c810f4-b53e-4970-a3f6",
    "transaction_status": "Success",
    "email": "0803***0000",
    "merchant_id": "********",
    "currency": "NGN",
    "transaction_type": "MerchantUssd",
    "merchant_amount": 10000,
    "created_at": "2022-11-30T16:21:52.8850061+00:00",
    "customer_mobile": "0803***0000",
    "meta": {},
    "payment_information": {
      "payment_type": "merchantussd",
      "customer_ref": "123456"
    },
    "is_recurring": false
  }
}
```

**Please Note that the encrypted body (x-squad-encrypted-body) is usually sent via the header**


---

# 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://squadinc.gitbook.io/squad-api-documentation/webhook-and-redirect-url.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.
