Hosted Payment Pages
Overview
Hosted Payment Pages (HPP) allow you to generate a branded, shareable payment link without building a custom checkout UI. Each page is pre-configured with a merchant ID, optional amount, and customer data fields — and can be sent directly to a customer for self-service payment.
For creating a new HPP, see the POST /api/v1/hpp endpoint in the API reference.
Edit a Hosted Payment Page
Updates an existing hosted payment page. Existing fields are preserved unless overridden — this endpoint does not remove fields that are omitted from the request body.
Request Fields
hpp_options Fields
Each entry in the hpp_options array configures a form field on the payment page:
Request Example
Response Fields
Response Example
Redirect after payment
By default, a customer who pays on a hosted payment page ends on the Run success page (or the Run decline page). To send them back to your own site instead, set one or both of these fields on POST /api/v1/hpp or PUT /api/v1/hpp/{hpp_client_id}:
Both are optional. A field that is not set keeps the standard Run page for that outcome. Both create and edit responses return the two fields as stored, or null when unset.
URL rules
A destination must:
- start with
https://; - use a domain name with a top-level domain, such as
shop.example.com(no IP addresses, nolocalhost, noxn--punycode labels, host at most 253 characters); - have no port, or port
443; - have no username or password (
https://user:pass@…); - contain no spaces, control characters or backslashes.
An invalid destination returns 400 with an error message naming the field, and nothing is saved.
A valid destination is stored in canonical form: the scheme and host are lower-cased and :443 is removed. The path, query and fragment are kept exactly as you sent them. For example, HTTPS://Shop.Example.com:443/Thanks?ref=hpp is stored as https://shop.example.com/Thanks?ref=hpp.
Include a path in your destination, for example https://shop.example.com/ rather than https://shop.example.com.
Editing and clearing
On PUT /api/v1/hpp/{hpp_client_id}, a redirect field you omit keeps its stored value. Send null or "" to clear it and return that outcome to the standard Run page.
What your page receives
When a payment completes and a destination is set for that outcome, the customer is redirected with two query parameters added:
transaction_id comes first, then result. Any query string already on your destination is kept, and the parameters are added before any #fragment. For example, https://shop.example.com/thanks?order=42#top becomes:
Treat these parameters as a hint for what to show the customer, not as proof of payment: anyone can type them into a URL. Confirm the transaction through the API or a webhook before fulfilling an order.
Things to know
- Vault and card-on-file pages never redirect. When a page saves a card rather than charging it, the customer always lands on the standard Run page.
- One-time links are still used up. If
disable_after_paymentis on, an approved payment that redirects disables the link just as the Run success page would. A declined payment does not.