> 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-payment-without-fixed-amount.md).

# Webhooks for Payment Without Fixed Amount

Receive payment status updates for payments without a fixed amount through secure webhooks.

0xProcessing sends a webhook when the status of a payment without a fixed amount changes.

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

For request authentication, header descriptions, signature verification, response requirements, retries, and implementation examples, see [Webhooks](/0xprocessing-api-v1/webhooks.md).

**Request method:** `POST`

**Content type:** `application/json`

## Payload parameters

| Name             | Type      | Description                                                                                                                                                    |
| ---------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PaymentId`      | Integer   | Payment identifier in 0xProcessing.                                                                                                                            |
| `MerchantId`     | String    | Merchant identifier in 0xProcessing.                                                                                                                           |
| `ShopId`         | String    | Merchant identifier in 0xProcessing.                                                                                                                           |
| `Amount`         | Double    | Expected payment amount in the payment currency.                                                                                                               |
| `AmountUSD`      | Double    | Expected payment amount in USD.                                                                                                                                |
| `TotalAmount`    | Double    | Amount actually received in the payment currency, before fees.                                                                                                 |
| `TotalAmountUSD` | Double    | Amount actually received in USD, before fees.                                                                                                                  |
| `Currency`       | String    | Payment currency.                                                                                                                                              |
| `Email`          | String    | Client email address.                                                                                                                                          |
| `Status`         | String    | Payment status. Possible values: `Success`, `Canceled`, or `Insufficient`.                                                                                     |
| `BillingID`      | String    | Payment identifier in the Merchant's system.                                                                                                                   |
| `Insufficient`   | Boolean   | Indicates whether an underpaid payment was subsequently confirmed.                                                                                             |
| `Test`           | Boolean   | Indicates whether this is a test payment. Do not credit funds when `Test` is `true`.                                                                           |
| `ClientId`       | String    | Client identifier in the Merchant's system.                                                                                                                    |
| `TxHashes`       | String\[] | Hashes of successful incoming transactions.                                                                                                                    |
| `Senders`        | String\[] | Sender wallet addresses. Currently available for Tron, BNB Chain, Ethereum, Arbitrum, Avalanche, Polygon, Base, opBNB, Optimism, HypeEVM, and Robinhood Chain. |

## Payment statuses

* `Success`: The payment was completed successfully.
* `Canceled`: The payment was not completed within the payment window, or funds arrived after the payment window had closed.
* `Insufficient`: The amount received was below the minimum deposit amount. The payment cannot be confirmed until additional funds are received.

If an insufficient payment is confirmed, 0xProcessing sends another webhook with `Status` set to `Success` and `Insufficient` set to `true`. Update the original payment using the amount actually received.

## Example payload

```json
{
  "PaymentId": 10453,
  "MerchantId": "Asv0232SSd",
  "ShopId": "Asv0232SSd",
  "Amount": 0.00264765,
  "TotalAmount": 0.00264765,
  "Currency": "BTC",
  "Email": "test@example.com",
  "Status": "Success",
  "BillingID": "13304",
  "AmountUSD": 115.0,
  "TotalAmountUSD": 115.0,
  "Insufficient": false,
  "Test": false,
  "ClientId": "1000",
  "TxHashes": [
    "0e61e33a0c02204c41ac210c2fcffda4bea4399792acc49479aa8374465ef63a"
  ],
  "Senders": [
    "bc1qexampleaddress"
  ]
}
```

{% hint style="warning" %}
Use `PaymentId` from the 0xProcessing webhook as an additional validation factor. Process the event only after verifying the `X-Webhook-Signature` header.
{% endhint %}
