# Hosted Payment Fields

**Hosted Payment Fields (HPF)** let you build a fully custom, fully branded checkout page while Omno hosts only the sensitive card inputs. Instead of embedding the whole Cashier, you embed four small Omno-hosted iframe fields — **card number, expiry, CVV and cardholder name** — into your own layout.

> ℹ️ **Beta.** Hosted Payment Fields is in Beta and available on request. Ask your Omno integration team to enable it.


## Why use it

- **Your UI, Omno's fields.** You control the entire page; Omno owns only the card inputs.
- **Lower PCI scope.** Raw card data is entered inside cross-origin Omno iframes, so your page and server never touch the card number or CVV. This keeps your PCI scope at **SAQ A / A-EP** instead of the full SAQ D you take on by handling raw card data yourself.
- **No redirect.** The payment completes against the existing session in-page; your page receives a success, decline or error event.


## When to use it vs the Cashier

- Use **HPF** when you want your own checkout UI but do not want raw card data in your environment.
- Use the **[Cashier](/guides/concepts/cashier)** when you're happy to embed Omno's full UI, or when you need APM, crypto, withdrawals or saved-card management.


## Scope

- **Card pay-in only** in this release.
- The Cashier token does **not** apply to HPF — field iframes load with the `sessionId` only.
- Your checkout domain must be **registered with Omno** (a `frame-ancestors` policy), or the browser blocks the field iframes.


## How it works

```mermaid
sequenceDiagram
    participant FE as Your Checkout Page
    participant BE as Your Backend
    participant Omno
    participant PSP as Payment Provider
    BE->>Omno: Create a card session (/v3/public/cashier/session)
    Omno-->>BE: sessionId
    BE->>FE: sessionId
    FE->>Omno: mountFields() — four hosted iframes load
    FE->>Omno: submit() — card data stays in Omno iframes
    Omno->>PSP: Process the payment
    PSP-->>Omno: Result
    Omno-->>FE: PAYMENT_SUCCESS / FAILED / PENDING (UI only)
    Omno-->>BE: Webhook (authoritative final status)
```

## Build it →

- [Hosted Payment Fields overview](/hosted-payment-fields) · [Integration steps](/hosted-payment-fields/integrate)