# Hosted payment page

> The integration path where the customer pays on a page hosted by Tilopay and your server receives the result.

- kind: guide
- status: stable
- api_version: v1
- last_verified: 2026-08-28
- url: https://tilopay.com/en/developers/hosted-payment-page

## What it is [#que-es]

Your server requests a payment URL from the API, redirects the customer to that Tilopay page
and receives the result on your callback URL.

Card data is typed on a Tilopay page: **you never see a card number** and your
merchant server stays out of that flow.

The API operation for this path lives in [API · processPayment](/en/developers/api/hosted-payment-page/process-payment).

## Difference from a payment link [#diferencia-link]

- **Hosted payment page**: your server requests a payment URL via API and redirects the customer to it. Best for integrated checkout flows in your site or app.
- **Payment link**: a reusable URL created via API or the dashboard and shared by message, email, social media or QR. The customer pays when convenient; no redirect from your flow is needed.
- In short: HPP for integrated, one-time checkout; payment links for shared, low-front-end charges.

## Who it is for [#para-quien]

For teams that take payments with their own code but prefer not to build or maintain the card
form. What you need is backend work: request the URL and handle the callback.

## What you need before starting [#requisitos]

1. **Your own credentials.** There are no shared sandbox credentials: every developer gets
   theirs through [developer registration](/en/developers/registro).
2. **API authentication.** See [authentication](/en/developers/api/autenticacion).
3. **A callback URL of yours** that can receive the transaction result.

## How to confirm the state of a charge [#confirmacion]

The result arriving on your callback is not the only signal available, and not every error
response travels with an HTTP 4xx:

- Read [how to read an error response](/en/developers/api/procesos-operativos/errors) before declaring success.
- Configure [webhooks](/en/developers/api/webhooks) for the events you care about.
- If a call fails without a clear response, resolve the state with
  [safe retries](/en/developers/reintentos-seguros).

## Environments [#entornos]

Testing and production share the same host. See
[environments](/en/developers/entornos) before taking real money.

## Compliance [#cumplimiento]

Together with the no-code path, this is the one that exposes your infrastructure the least.
Confirm the applicable scope with your compliance team.

## If you prefer the form on your own site [#alternativa]

Use the [JavaScript SDK](/en/developers/sdk): the design is yours and the data still does not
pass through your server.
