> For the complete documentation index, see [llms.txt](https://docs.omni.integratedcommerce.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.omni.integratedcommerce.io/hosted-payment-form/screens.md).

# Form and response screens

What the customer sees in the form, and on the default success, issue, and expiry screens.

## The payment form

For card sessions, the Hosted Payment Form collects:

* Cardholder name
* Card number, expiration date, and security code
* Billing address details

The form is responsive and works on mobile, tablet, and desktop devices.

<figure><img src="https://2831455276-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZEhfhCESvZbNNPd1VI61%2Fuploads%2Fgit-blob-90024147a36326086453df7991d9a7ddc304b100%2Fhpf.png?alt=media" alt="Hosted Payment Form with cardholder name, card fields, and a full billing address"><figcaption><p>The card payment form in full billing mode.</p></figcaption></figure>

How much billing information appears is controlled by [`formConfig.billingInfoCaptureLevel`](/hosted-payment-form/form-configuration.md).

### ACH bank transfers

For ACH sale and tokenization sessions, the form shows a Personal Account / Business Account toggle above the name fields. Personal Account is selected by default and collects first, optional middle, and last name. Selecting Business Account replaces those fields with a required Business Name field.

Both choices collect the routing number, account number, Checking or Savings account type, and full US billing address. See [Personal and business accounts](/payments/ach.md#personal-and-business-accounts) for name requirements and selection behavior. The same controls appear in the Payment SDK.

## Default success and issue screens

When no `returnUrl` is provided and the `useJavaScriptCallback` flag is not used, customers will see success or issue screens that provide immediate visual feedback about their transaction status.

{% columns %}
{% column %}

<figure><img src="https://2831455276-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZEhfhCESvZbNNPd1VI61%2Fuploads%2Fgit-blob-d664dca704d9951d2cbf6ffda8f7eea08cbd8199%2Fsuccess-screen.png?alt=media" alt="Payment success screen"><figcaption><p>Success screen shown after completed payment.</p></figcaption></figure>
{% endcolumn %}

{% column %}

<figure><img src="https://2831455276-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZEhfhCESvZbNNPd1VI61%2Fuploads%2Fgit-blob-32643eacc69a6f3c8ec8b98a5d82ecb8a26d7d47%2Fissue-screen.png?alt=media" alt="Payment issue screen"><figcaption><p>Issue screen shown when payment problems occur.</p></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

## Session expiry screen

An expired or invalid payment session can show an error screen such as this one:

<figure><img src="https://2831455276-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZEhfhCESvZbNNPd1VI61%2Fuploads%2Fgit-blob-4a1bac3673f9efbbb1b0fe393082579a6ee01838%2Fproblem-screen.png?alt=media" alt="Session error screen"><figcaption><p>An error screen for an unavailable session.</p></figcaption></figure>

{% hint style="info" %}
Sessions expire 10 minutes after creation, at `expirationTimestamp`. An invalid or expired session can show an error page or produce an error callback, depending on when it is detected. See [Best practices](/hosted-payment-form/best-practices.md#handle-timeouts-gracefully).
{% endhint %}

## Taking control of the completion experience

These default screens are the fallback. To keep the customer inside your own flow, supply a `returnUrl`, use `useJavaScriptCallback`, or both - see [Flow completion](/hosted-payment-form/hosted-payment-form.md#flow-completion).
