# Bulk Transaction Callback

Once the bulk transactions are completed by Paywall, a callback is sent to the `CallbackAddress` provided within the bulk transaction order. This callback allows your system to be informed of the final status of the transaction.

<table><thead><tr><th>Key</th><th>Description</th></tr></thead><tbody><tr><td><pre><code>Type
</code></pre></td><td><p><strong>Notification type</strong></p><p><br>See: <a href="broken-reference">Review</a></p></td></tr><tr><td><pre><code>BulkPaymentId
</code></pre></td><td>Bulk payment/transaction ID</td></tr><tr><td><pre><code>ErrorMessage
</code></pre></td><td>Descriptive message of the error that occurred during the bulk transaction</td></tr><tr><td><pre><code>DateTime
</code></pre></td><td>Final action date of the bulk transaction</td></tr><tr><td><pre><code>FinishedAt
</code></pre></td><td>Completion date of the bulk transaction</td></tr><tr><td><pre><code>CreatedAt
</code></pre></td><td>Creation date of the bulk transaction</td></tr><tr><td><pre><code>DurationTime
</code></pre></td><td>Duration of the bulk transaction until completion (in seconds)</td></tr><tr><td><pre><code>Hash
</code></pre></td><td><p>The Hash parameter used to verify that the request originated from Paywall. This hash is generated using Paywall’s 'System Webhook Hash Key'.</p><p></p><p><strong>Format:</strong></p><p><br><code>{key}###{bulkPaymentId}###{merchantUniqueCode}</code></p></td></tr><tr><td><pre><code>IsCompressed
</code></pre></td><td><p>Indicates whether the request has been compressed.</p><p><br>The compression is applied only if specified by you at the time the request is sent.</p></td></tr><tr><td><pre><code>PageNumber
</code></pre></td><td>For your large-volume transactions (e.g., 10k, 20k, 50k), you may want to receive partial callbacks. Paywall supports partial callbacks and delivers them in batches of 1,000. In this case, the <code>PageNumber</code> parameter indicates which 1,000-record page is being sent.</td></tr><tr><td><pre><code>TotalPages
</code></pre></td><td>Just like <code>PageNumber</code>, the <code>TotalPages</code> parameter indicates the total number of pages in partial callbacks.<br>For example, if the value is 10, it means Paywall will send you a total of 10 callback batches.</td></tr><tr><td><pre><code>HasMorePages
</code></pre></td><td>In partial callbacks, if the <code>HasMorePages</code> parameter in the callback content is <code>true</code>, it means there are additional callbacks pending to be sent for that transaction.<br>If the parameter is <code>false</code>, it indicates that the callback process for the bulk transaction has been completed.</td></tr><tr><td><pre><code>Hash
</code></pre></td><td><p>The Hash value used to verify that the notification was sent from Paywall. It is generated using the <code>System Webhook</code> <code>Hash Key</code> activated in the Paywall panel.</p><p></p><p>The key mentioned above may vary depending on the value of the <code>HashKeyType</code> parameter. A dynamic structure should be implemented.</p></td></tr><tr><td><pre><code>HashFormat
</code></pre></td><td>The format type used to generate the hash value<br><br>See: <a href="broken-reference">Hash Formats</a></td></tr><tr><td><pre><code>HashKeyType
</code></pre></td><td>The type of key used in generating the hash value<br><br>See: <a href="broken-reference">Key Types </a></td></tr></tbody></table>

**Example Json:**

```json
{
    "Type": 1,
    "BulkPaymentId": 2881,
    "Payments": [
        {
            "PaymentId": 3705770,
            "Amount": 1.00,
            "UniqueCode": "E86FFB24-CCA4-4F8B-A3B5-BC6A328C0F3B",
            "MerchantUniqueCode": "9f23c7df-f798-4c52-b38a-0d7b52e76f8b",
            "CurrencyId": 1,
            "Installment": 1,
            "ActivityTypeId": 1,
            "ActivityStatusId": 5
        },
        {
            "PaymentId": 3705771,
            "Amount": 1.00,
            "UniqueCode": "56CBA995-1B4B-4B83-BFA1-056715F42B83",
            "MerchantUniqueCode": "d09d5ff2-ba8d-48bc-8a66-9c2ffd47e23b",
            "CurrencyId": 1,
            "Installment": 1,
            "ActivityTypeId": 1,
            "ActivityStatusId": 5
        },
        {
            "PaymentId": 3705772,
            "Amount": 1.00,
            "UniqueCode": "1FBC95B5-F811-4BCE-A216-F9B799F53E97",
            "MerchantUniqueCode": "5b10063c-f715-4644-bf59-dd85b0c59afe",
            "CurrencyId": 1,
            "Installment": 1,
            "ActivityTypeId": 1,
            "ActivityStatusId": 4
        },
        {
            "PaymentId": 3705773,
            "Amount": 1.00,
            "UniqueCode": "0F6B0BAA-FA66-4E62-8EE2-3AFACF3CEABE",
            "MerchantUniqueCode": "56d7bcb0-4434-4584-8586-3b86186d92bb",
            "CurrencyId": 1,
            "Installment": 1,
            "ActivityTypeId": 1,
            "ActivityStatusId": 4
        },
        {
            "PaymentId": 3705774,
            "Amount": 1.00,
            "UniqueCode": "4A6926AD-C340-4283-ADB8-0EDB57123213",
            "MerchantUniqueCode": "d7fdfbda-3173-48d4-8d12-8964867174f7",
            "CurrencyId": 1,
            "Installment": 1,
            "ActivityTypeId": 1,
            "ActivityStatusId": 5
        },
        {
            "PaymentId": 3705775,
            "Amount": 1.00,
            "UniqueCode": "77AC004E-E641-43B7-952B-F932EBCCF5F9",
            "MerchantUniqueCode": "d5ec3bd9-9596-49da-9d6a-519c2d75574c",
            "CurrencyId": 1,
            "Installment": 1,
            "ActivityTypeId": 1,
            "ActivityStatusId": 4
        },
        {
            "PaymentId": 3705776,
            "Amount": 1.00,
            "UniqueCode": "5BE6E448-E675-422D-8D73-1DF025D72660",
            "MerchantUniqueCode": "d3d3ad91-ebea-41b3-80dd-77977ffac2e6",
            "CurrencyId": 1,
            "Installment": 1,
            "ActivityTypeId": 1,
            "ActivityStatusId": 4
        }
    ],
    "ErrorMessage": "",
    "DateTime": "2025-04-03T23:53:33.018504+03:00",
    "CreatedAt": "2025-04-03T22:01:05.357",
    "FinishedAt": "2025-04-03T22:01:12.0185082+03:00",
    "DurationTime": 7.6615086,
    "Hash": "95126cbeba7efabdda705d24568f2f4edc17c986b1022603cff4c99bfc4b9a8b",
    "IsCompressed": true,
    "PageNumber": 1,
    "TotalPages": 1,
    "HasMorePages": false
}
```
