Contact us
About us
Payneteasy is a leading payment platform provider. Our state-of-the-art technologies and multiple layers of flexibility boost the fastest and most efficient integration and customization.
Business type
Our clients have advantage with the full-fledged FinTech tools. Payneteasy offers technological processing solutions for different payment industry players and large-scale online businesses.
Events

Meet us at conferences around the world

SBC Summit Lisbon

SBC Summit Lisbon

29 Sep-1 Oct, 2026 Lisbon, Portugal
SiGMA Europe

SiGMA Europe

2–5 Nov, 2026 Rome, Italy
View all Upcoming Events

Hosted Fields: keep your checkout, keep card data out of your systems

Accept cards directly on your own checkout page, while raw card data is collected directly by Payneteasy instead of your systems.

16.09.2026
6 min read
Table of contents
  1. What Hosted Fields is
  2. How it works
  3. Smaller PCI DSS scope
  4. For PSPs and white-label partners
  5. What this means for you
  6. Get started
Do you have a question?
Contact author
Do you have a question?
Contact author

You have spent time getting your checkout right. The layout, the wording, the order of the fields, the light and dark themes — all of it tuned to the way your payers actually behave. Then compliance enters the room. The moment your page handles a raw card number, that page, its JavaScript and your backend become part of the PCI DSS scope you have to manage. The usual escape is a hosted payment page: you send the payer to a page you don’t control, and the checkout you designed disappears at the most sensitive step.

Hosted Fields removes that trade-off. You keep your checkout. Your page code and backend never receive the raw card data.

What Hosted Fields is

Hosted Fields lets you build the payment form on your own site and drop the sensitive card inputs into it as fields served by Payneteasy. Three fields — card number, expiry date and CVV — are each loaded as a separate, cross-origin iframe from the Payneteasy domain. Everything around them — name, email, cardholder name, your headings, your “Pay” button — stays yours.

To the payer, it looks and behaves like a single form. Technically, the three card fields are isolated: their contents live in Payneteasy-origin iframes that your page code cannot read, so the card number, expiry and CVV never enter your page’s DOM or JavaScript, the requests to your server, or your logs. That isolation also keeps card data away from the third-party scripts on your page — analytics, tag managers, chat widgets — which on a regular form have the same access to the inputs as your own code does.

You keep your design — including the theme

You control the placement, spacing, borders, backgrounds and field containers with your regular CSS. The inputs inside the hosted fields are styled through the Hosted Fields SDK, so they match the rest of your checkout — including light and dark themes.

The screenshots below show the same checkout in light and dark themes: when you switch the theme, the card number, MM/YY and CVV fields are restyled to match the rest of the form, instead of standing out as a foreign block.

Hosted Fields checkout in light theme
Hosted Fields checkout in light theme
Hosted Fields checkout in dark theme
Hosted Fields checkout in dark theme

The most sensitive step of checkout stays on your page, in your brand, with the UX you have already optimised. No redirect at the moment the card is entered, no unfamiliar page, no lost context.

How it works

Hosted Fields payment flow: your checkout page collects the card in Payneteasy card fields (three cross-origin iframes), which return a single-use hostedFieldsToken valid for 5 minutes; your server sends only that token to the Sale API
  1. Your server requests a single-use ephemeralTicket from Payneteasy and places it on the checkout page. The ticket lives for 15 minutes and authorises exactly one tokenization attempt. Your private RSA signing key stays on your server and never reaches the browser — only the ticket does.
  2. The payer enters their card details into the hosted fields on your page.
  3. On “Pay”, the SDK exchanges those details for a hostedFieldsToken — a single-use token, valid for 5 minutes, that stands in for the card details in the next request. Your page code never sees the raw card data, only this token.
  4. Your server sends the hostedFieldsToken to the Sale (or Preauth) API in place of the card parameters.

The two objects do different jobs:

ephemeralTicket → authorises one tokenization attempt (issued server-side, safe to place on the page).
hostedFieldsToken → represents the card details in the subsequent Sale request (single-use, and the card cannot be reconstructed from it).

On the payment API side, the change is small: four card parameters (credit_card_number, expire_month, expire_year, cvv2) are replaced by one hosted_fields_token. The other Sale parameters stay the same. The token is accepted by Sale and Preauth (and, for deposit-to-card transfers, for the receiving card).

What the integration looks like

The basic front-end setup starts with one script tag and one SDK initialization:

<!-- sandbox or production host, see the integration guide -->
<script src="https://GATEWAY_HOST/assets/libs/hosted-fields/latest/index.js"></script>

const sdk = HostedFields.init({
  endpointId: ENDPOINT_ID,
  fields: {
    cardNumber: { type: 'pan', placeholder: '1234 1234 1234 1234' },
    expiryDate: { type: 'exp' },
    cvv:        { type: 'cvv' }
  },
  onReady: () => { payButton.disabled = false; },
  onToken: token => sendToYourServer({ hosted_fields_token: token }),
  onError: error => showError(error.payerMessage)
});

payButton.addEventListener('click', () => sdk.tokenize(EPHEMERAL_TICKET));

cardNumber, expiryDate and cvv are the ids of empty <div> elements in your markup; the SDK creates a Payneteasy-origin iframe inside each. You style the containers with your own CSS and pass input styles through the SDK; the SDK toggles hf-field--focus, hf-field--filled and hf-field--error on the containers so your CSS can react to what happens inside the iframe.

Load the SDK with a plain <script> tag straight from the Payneteasy domain — it is not an npm package, and it must not be self-hosted: a copy served from your site would create the fields on your own origin, the very thing Hosted Fields exists to avoid, and init refuses to start. If your page sets a Content Security Policy, allow the Payneteasy domain in script-src and frame-src.

What about 3-D Secure?

Hosted Fields changes how the card is collected, not how the payment is authenticated. When the issuer requires a 3-D Secure challenge, the order status response carries it as a URL or as ready-to-render HTML, and you decide how to show it: render it in an iframe inside your checkout so the payer never leaves your page, or redirect to it and return. Authentication itself runs through Payneteasy’s 3DS Adapter, exactly as in a server-to-server integration.

Smaller PCI DSS scope

Card data collection is isolated from your website by design. The card fields live in iframes served from the Payneteasy domain, so the raw card details are captured by Payneteasy — not by your page, your server calls or your logs. Payneteasy handles the card data inside its PCI DSS Level 1 Service Provider environment, while your systems work only with the token.

That isolation is what reduces the PCI DSS scope you have to defend and evidence: you still run the checkout your customers see, but you stop handling raw card data on it.

Hosted Fields reduces PCI DSS scope; it does not remove PCI DSS obligations altogether. The SAQ and controls applicable to a particular merchant depend on the overall integration and should be confirmed with the merchant’s acquirer or QSA.

For PSPs and white-label partners

If you run a white-label installation of the Payneteasy platform, Hosted Fields is available to your merchants on the same terms. The SDK and the card fields are served under your installation’s own domain, and every ticket and token is bound to that installation — a ticket issued on one installation is rejected on another. Your merchants get the same integration guide and the same reference examples, and their card data stays inside your PCI DSS perimeter rather than theirs.

What this means for you

Keep your checkout and your brand. Payers stay on your page, in your design, at the moment they enter the card — and if 3-D Secure asks for a challenge, you choose whether it opens inside your page or on the issuer’s.
Keep card data out of your systems — and reduce PCI DSS scope. The raw card number, expiry and CVV never reach your page, servers or logs, so the scope you have to defend shrinks while you keep full control of the checkout your customers see.
Small change on the payment API side. Four card parameters are replaced by one hosted_fields_token; the rest of your Sale request stays the same.
Nothing long-lived on the page. A ticket lives 15 minutes and admits one tokenization; a token lives 5 minutes and is accepted once. Your RSA key never leaves your server.

Get started

Hosted Fields is available in the sandbox now and is rolling out to production in September 2026. Ask your account manager to enable it for your endpoints, then start with the integration guide or one of the reference implementations.

Do you have a question?

Ask the author about integration or PCI DSS scope.

Contact author
Talk to a payment expert