> For the complete documentation index, see [llms.txt](https://developer.paywall.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.paywall.one/payment-orchestration-integration-document/callback-examples/3d-callback.md).

# 3D Callback

<table><thead><tr><th>Key</th><th>Description</th></tr></thead><tbody><tr><td><pre><code>date
</code></pre></td><td>Payment Date</td></tr><tr><td><pre><code>status
</code></pre></td><td>The payment status is returned as either <strong>Success</strong> or <strong>Unsuccessful</strong>.</td></tr><tr><td><pre><code>errorCode
</code></pre></td><td><p>0: Successful<br>1: Unsuccessful</p><p></p><p>This error code is a Paywall-specific error code.</p></td></tr><tr><td><pre><code>errorMessage
</code></pre></td><td><p><strong>Base64 Encoded message related to the error</strong></p><p><br>This error message is a Paywall-specific error message.</p></td></tr><tr><td><pre><code>paymentCode
</code></pre></td><td>It is the unique tracking code of the payment in Paywall.</td></tr><tr><td><pre><code>uniqueCode
</code></pre></td><td>It is the tracking number you provided at the time of creating the payment.</td></tr><tr><td><pre><code>amount
</code></pre></td><td>The amount of the payment</td></tr><tr><td><pre><code>installment
</code></pre></td><td>The installment amount of the payment</td></tr><tr><td><pre><code>paymentId
</code></pre></td><td>It is the ID (identifier) of the payment in Paywall.</td></tr><tr><td><pre><code>providerErrorCode
</code></pre></td><td>The error code returned by the provider that processed the payment</td></tr><tr><td><pre><code>providerErrorMessage
</code></pre></td><td>The error message returned by the provider that processed the payment</td></tr><tr><td><pre><code>providerBankErrorCode
</code></pre></td><td>If the payment is processed through a payment institution, this is the error code returned by the bank to which the payment was forwarded by the institution.</td></tr><tr><td><pre><code>providerBankErrorMessage
</code></pre></td><td>If the payment is processed through a payment institution, this is the error message returned by the bank to which the payment was forwarded by the institution.</td></tr><tr><td><pre><code>cardSaved
</code></pre></td><td>If a card save request is included in the payment order, the system attempts to save the card after the payment is successfully completed. If the card saving process is also successful, the <code>cardSaved</code> object returns true; otherwise, it returns false.</td></tr><tr><td><pre><code>cardSavedUniqueCode
</code></pre></td><td>If the above parameter returns <strong>true</strong>, the corresponding object returns the identifier of the saved card on the Paywall side. This identifier can be used when submitting a new payment order.</td></tr><tr><td><pre><code>hash
</code></pre></td><td><p>It is the Hash value used to verify that the payment originated from Paywall, generated using the payment details and the key you created in your Paywall panel.</p><p></p><p><strong>Note:</strong> This parameter is not sent unless the <strong>3D Hash Key</strong> is activated under the <em>Developer > Custom Keys</em> section 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="/pages/CwGK9IsyjWbnxDaBvQOq">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="/pages/rGeM863mExwJKspEaXUG">Key Types</a></td></tr><tr><td><pre><code>paywallUnifiedErrorCode
</code></pre></td><td>Paywall standardized “Error Code”</td></tr><tr><td><pre><code>paywallUnifiedErrorMessage
</code></pre></td><td>Paywall standardized “Error Message”</td></tr></tbody></table>

{% tabs %}
{% tab title="HTML" %}
{% code lineNumbers="true" %}

```html

<!doctype html>
<html lang="en">
    <body>
        <form id="paywall-callback-form" action="{sizinadresiniz}" method="post">
            <input type="hidden" name="date" value="{paymentDate}">
            <input type="hidden" name="status" value="{status}">
            <input type="hidden" name="errorCode" value="{errorCode}">
            <input type="hidden" name="errorMessage" value="{errorMessage}">
            <input type="hidden" name="errorMessage" value="{providerErrorMessage}">
            <input type="hidden" name="paymentCode" value="{uniqueCode}">
            <input type="hidden" name="uniqueCode" value="{merchantUniqueCode}">
            <input type="hidden" name="amount" value="{amount}">
            <input type="hidden" name="installment" value="{installment}">
            <input type="hidden" name="paymentId" value="{paymentId}">
            <input type="hidden" name="providerErrorCode" value="{providerErrorCode}">
            <input type="hidden" name="providerErrorMessage" value="{providerErrorMessage}">
            <input type="hidden" name="providerBankErrorCode" value="{providerBankErrorCode}">
            <input type="hidden" name="providerBankErrorMessage" value="{providerBankErrorMessage}">
            <input type="hidden" name="cardSaved" value="{cardSavedResult}">
            <input type="hidden" name="cardSavedUniqueCode" value="{cardSavedUniqueCodeResult}">
            <input type="hidden" name="trackingCode" value="{trackingCode}">
            <input type="hidden" name="paymentGatewayId" value="{paymentGatewayId}">
            <input type="hidden" name="paymentGatewayName" value="{paymentGatewayName}">
            <input type="hidden" name="paymentGatewayProviderName" value="{paymentGatewayProviderName}">
            <input type="hidden" name="hash" value="{hash}">
        </form>
    </body>
</html>
```

{% endcode %}
{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://developer.paywall.one/payment-orchestration-integration-document/callback-examples/3d-callback.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
