---
updatedAt: 2026-09-24T07:13:41.000Z
agentTools:
  projectIndex: https://docs.praxis.tech/llms.txt
---

# Hosted Payment Page (Cashier)

A fully hosted secure payment solution

# Overview

The Praxis Payment Page is the fastest way to integrate payments, offering a seamless checkout experience to your customers via IFrame or full-page redirect.

Key Features:

* **Low-effort integration** – Reduce development effort while benefiting from a flexible payment flow inside an IFrame or redirect page.
* **Multiple payment methods** – Accept cards, bank transfers, and various local payment solutions through a single integration.
* **Localized user experience** – Automatically adapts to customers' preferred language, currency, and previously used payment methods.
* **Built-in security & compliance** – Fully PCI-DSS compliant with secure handling of sensitive payment data.
* **Customizable UI** – Modify the look and feel of the payment page, including branding and layout, to match your business needs.

For merchants who want a ready-to-use payment solution without the complexity of handling security and compliance, the Praxis Payment Page is the perfect choice.

View the demo [here](https://cashierdemo.praxis.tech/).

If you want a ready-to-use payment solution without the complexity of handling security and compliance, the Praxis Payment Page is the perfect choice.

# Integrating Cashier

You can either **redirect customers** to the Cashier page or **embed it in an iframe** on your website. To integrate the Cashier within a mobile application, use an in-app browser (**WebView**).

Below are the steps to integrate Cashier into your website:

<Accordion title="1. Create a Cashier Payment Session" icon="fa-play-circle">
  Initiate a [**Cashier Payment request**](https://docs.praxis.tech/reference/cashierpaymentrequest) to generate a session. The response will contain both a `redirect_url` and an `auth_token`.

  You can then:

  * **Redirect the customer** to the `redirect_url`.
  * **Embed it in an iframe** on your payment page using the `redirect_url` as the `src`.
  * **Initialize the [Payment Page SDK](https://docs.praxis.tech/docs/payment-page-sdk)** directly on your frontend using the received `auth_token`.
  
  Note: When providing `session_configuration.promocode_options` in the request, each promocode object may include a new optional boolean property `default_selected`. Set it to `true` or `false` to control whether that promocode is pre-selected in the Cashier UI. The value is stored on the session and returned as part of the session object.
  
  **Important:** This must be done from a browser so required headers like **Origin** and **Referer** are included for request validation.

  **Optional:** Include a `validation_url` when creating the session. This will trigger a validation webhook after the customer submits their payment details in Cashier and before the transaction processing starts.
</Accordion>

<Accordion title="2. Validate Payment Details" icon="fa-credit-card">
  The customer interacts with the Cashier UI to select a payment method and submit their payment details.

  If a `validation_url` was provided in step 1, Cashier immediately sends a [**validation webhook**](https://docs.praxis.tech/reference/paymentvalidation) to your server. This allows your system to approve or reject the submission based on business logic **before the transaction is processed**.

  **Validation rules:**

  * Triggered only if `validation_url` was provided in the session request.
  * `"status": 0` → validation successful; payment proceeds.
  * Any other status → validation failed; the `"description"` field is shown to the customer as the reason.
  * Timeout or malformed responses (missing fields, incorrect types, non-JSON, or invalid JSON object) → validation failure, transaction fails with a generic error.
</Accordion>

<Accordion title="3. Complete the Transaction and Receive Notification" icon="fa-circle-check">
  After validation is successful, the payment is processed by Cashier.

  **After payment is processed:**

  1. Cashier sends a [**transaction outcome notification**](https://docs.praxis.tech/reference/paymentnotification) to your server. Use this to update order status or trigger business logic.
  2. The customer is redirected to your `return_url`, where you can display a confirmation page or show the payment outcome.
</Accordion>