# Webhooks

After a confirmation of a transaction by the external payment system, a notification (Callback) with the final status of the transaction will be sent to the Merchant’s site.

<figure><img src="/files/wcBZDaHi4ee4MXYge1UP" alt="" width="563"><figcaption></figcaption></figure>

Notification (Callback) - is a <mark style="color:green;">`POST`</mark> request, containing information about the results of a successful and unsuccessful operations, which is sent to the special addresses specified by the client and transmits the data of a specific transaction in the form of a set of parameters.

You need to specify the address for callbacks in a letter to the technical support. In addition, you can set different addresses for callbacks about successful and unsuccessful transactions.

The parameter `status_id` contains transaction status.

Status will be sent repeatedly until json `{"result": "ok"}` respond received, with periods 45s, 2, 5, 10, 30 minutes, and once per hour during twenty-four hours.

{% hint style="warning" %}

#### **Important**

The system expects an **HTTP 200 OK** response to confirm that the webhook has been successfully received.&#x20;

If a **4xx** or **5xx** status is returned, the webhook will be retried automatically, which may result in multiple repeated requests.&#x20;

Please ensure the endpoint returns **200 OK** after successful processing.
{% endhint %}

### Callback examples

#### Deposits

#### Success

```json
{
  "status": 4,
  "type": 1,
  "external_id": "example_external_id",
  "order_id": "173805987126016235868313296400",
  "amount": 10000,
  "currency": "USD",
  "customer_id": "307353",
  "customer_purse": "428455...9651",
  "signature": "**"
}
```

#### Decline

```json
{
  "status": 5,
  "type": 1,
  "external_id": "example_external_id",
  "order_id": "173805987126016235868313296401",
  "amount": 10000,
  "currency": "USD",
  "customer_id": "307354",
  "reason_code": "001",
  "reason": "General decline",
  "customer_purse": "428455...9651",
  "signature": "d9f5713990de5c6e32169dba1f0102f540018975"
}
```

#### Notification parameters

<table data-full-width="true"><thead><tr><th>Parameters</th><th width="206.19921875">Type</th><th>Description</th></tr></thead><tbody><tr><td>status</td><td>Enum</td><td>Operation status</td></tr><tr><td>type</td><td>Enum</td><td>Operation type</td></tr><tr><td>external_id</td><td>String</td><td>Order identifier in the merchant's system</td></tr><tr><td>order_id</td><td>String</td><td>Order identifier in the Cabbagino's system</td></tr><tr><td>amount</td><td>Numeric</td><td>Amount to be paid in minor units <a data-footnote-ref href="#user-content-fn-1">(e.g., for USD - in cents)</a></td></tr><tr><td>currency</td><td>ISO 4217 alpha-3</td><td>Order currency</td></tr><tr><td>customer_id</td><td>String</td><td>Merchant’s initial ID, returned in callback</td></tr><tr><td>reason_code</td><td>String</td><td>Three-digit error code</td></tr><tr><td>reason</td><td>String</td><td>General or detailed decline reason</td></tr><tr><td>signature</td><td>String</td><td>Request signature, see <a href="/pages/zTSAAMC5H3ThRo2dUHnd">Request signature generating rules</a></td></tr></tbody></table>

[^1]: For JPY, KRW, VND, IDR, CLP — use whole numbers


---

# 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.cabbagino.com/cabbagino/payment-api-2.0/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.
