# `mountFields` reference

> 🧪 **Beta.** Hosted Payment Fields is in Beta and available on request.


```typescript
cashier.mountFields({
  sessionId: string,
  fields: {
    cardNumber?: { containerId: string },
    expiry?:     { containerId: string },
    cvv?:        { containerId: string },
    cardholder?: { containerId: string },
  },
  styles?: HpfStyles,
}): { submit(options?): void; destroy(): void }
```

- **`sessionId`** — from your card session (`POST /v3/public/cashier/session` with `paymentTypes: ["CARD"]`). **No `token`** — HPF never uses the Cashier token.
- **`fields`** — a container element ID per hosted field (`cardNumber`, `expiry`, `cvv`, `cardholder`).
- **`styles`** — optional, constrained styling. See [Styling](/hosted-payment-fields/styling).


## The returned handle

`mountFields(...)` returns a handle:

- **`submit(options?)`** — `options.saveCard?: boolean` (default `false`); `options.amount?: number | string` (required only for dynamic-amount sessions; ignored when the session has a fixed amount).
- **`destroy()`** — removes all field iframes and the internal coordinator.


You can also call `cashier.submit(...)` and `cashier.destroyFields()` directly.

## Build it →

- [Styling](/hosted-payment-fields/styling) · [Events](/hosted-payment-fields/events) · [Integration steps](/hosted-payment-fields/integrate)