> For the complete documentation index, see [llms.txt](https://docs.0xprocessing.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.0xprocessing.com/0xprocessing-api-v1/webhooks/webhooks-for-static-wallet.md).

# Webhooks for Static wallet

Automate updates for static wallets with webhooks, simplifying payment tracking and enhancing the efficiency of your crypto payment system.

## Webhook response

Payment status updates are delivered through webhooks.

For more information on setting up Webhooks, see the **Setting up Webhooks.**

Set the Webhook URL in the menu **Settings → API → Webhook URL**. **HTTPS (TLS/SSL) is required.**

**Webhook password** - password required to verify the payment signature

**Webhook URL** - the endpoint where 0xProcessing sends payment status notifications.

**Request method:** POST

**Response Type:** JSON

**Parameters:**

<table><thead><tr><th width="185">Name</th><th width="458">Description</th><th>Type</th></tr></thead><tbody><tr><td>PaymentId</td><td>Transaction ID in the 0xProcessing system</td><td>Integer</td></tr><tr><td>MerchantId</td><td>Merchant ID in 0xProcessing system</td><td>String</td></tr><tr><td>ShopId</td><td>Merchant ID in 0xProcessing system</td><td>String</td></tr><tr><td>Amount</td><td>Payment amount in cryptocurrency</td><td>Double</td></tr><tr><td>AmountUSD</td><td>Payment amount in USD equivalent</td><td>Double</td></tr><tr><td>TotalAmount</td><td>Full amount received in the cryptocurrency without fee</td><td>Double</td></tr><tr><td>TotalAmountUSD</td><td>Full amount received in USD equivalent without fee</td><td>Double</td></tr><tr><td>Currency</td><td>Payment currency</td><td>String</td></tr><tr><td>Email</td><td>Not used for this method</td><td>String</td></tr><tr><td>Status</td><td><p>Payment status</p><p>Possible values are:</p><p><strong>Success</strong> - payment has been executed successfully</p></td><td>String</td></tr><tr><td>BillingID</td><td>Not used for this method</td><td>String</td></tr><tr><td>Signature</td><td>Checksum to verify the authenticity of the request (to ensure that the request came from 0xProcessing)</td><td>String</td></tr><tr><td>Insufficient</td><td>Not used for this method</td><td>Boolean</td></tr><tr><td>Test</td><td><p>It indicates whether the payment has been marked as a test payment.</p><p>Test payments are not intended for real funds turnover and are not displayed in the merchant account. <strong>Do not credit funds on webhooks with the parameter test=true</strong></p></td><td></td></tr><tr><td>ClientId</td><td>Unique client ID in your system</td><td>String</td></tr><tr><td>TxHashes</td><td>Successful transaction hash(es)</td><td>String []</td></tr><tr><td>Senders</td><td>Sender wallet address(es). Note: Currently works for Tron, BNB, Ethereum, Arbitrum, Avalanche, Polygon, Base, OpBNB, Optimism, HypeEVM, Robinhood chains.</td><td>String []</td></tr></tbody></table>

#### See Test webhooks for instructions

**Signature check:**

1\. A string of the following form must be generated: **"PaymentId":"MerchantID"::"Currency":"Password"** (WebhookURL link password)

Without quotation marks through a colon.

**Example:** 12345:Qtfxhgy43::USDT (ERC20):qwerty

2\. Hash the resulting string using the MD5 algorithm.

3\. Compare the resulting string with the one received in the webhook

```javascript
"Signature":"a5510c8c3e657ffd8229813749cd20ec"
```

4\. If the strings are the same, **return HTTP Status 200** (Required). Our server expects a response to the webhook within a 3-second timeout period. If the response is not received within these 3 seconds, the system considers the delivery failed.

If the webhook is not delivered successfully, the system retries delivery for a total of 31 attempts, with a 15-second interval between attempts. If the webhook still fails to be delivered, the system sends a notification to the Merchant's account email indicating a problem with the WebhookURL.

**Example Webhook JSON:**

{% code lineNumbers="true" %}

```json
                        {
                        "PaymentId":10453,
                        "MerchantId":"Asv0232SSd",
                        "Amount":0.00264765,
                        "TotalAmount":0.00264765,
                        "Currency":"BTC",
                        "Email":"null",
                        "Status":"Success",
                        "Signature":"a5510c8c3e657ffd8229813749cd20ec",
                        "BillingID":"null",
                        "AmountUSD":115.0,
                        "TotalAmountUSD":115.0,
                        "Insufficient":false,
                        "Test":false,
                        "ClientId":"1000",
                        "TxHashes":["0e61e33a0c02204c41ac210c2fcffda4bea4399792acc49479aa8374465ef63a"],
                        "Senders":["bc1a5510c8c3e657ffd8229813749cd20ec"]
                        }
```

{% endcode %}

{% hint style="warning" %}
When processing webhooks, you MUST use the **PaymentId** parameter **from the 0xProcessing webhook** as an additional validation factor.
{% endhint %}
