> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.runpayments.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.runpayments.io/_mcp/server.

# 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`](/reference/payments-api/create-hosted-payment-page) endpoint in the API reference.

---

## Edit a Hosted Payment Page

```
PUT https://javelin.runpayments.io/api/v1/hpp/{hpp_client_id}
```

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

| Field                   | Format | Required | Editable | Description                                                                                               |
| ----------------------- | ------ | -------- | -------- | --------------------------------------------------------------------------------------------------------- |
| `cc_mid`                | string | Yes      | No       | Merchant ID associated with the hosted payment page. Cannot be changed after creation.                    |
| `name`                  | string | No       | Yes      | Display name of the hosted payment page.                                                                  |
| `name_on_account`       | string | No       | Yes      | Customer name to pre-populate on the payment form.                                                        |
| `amount`                | string | No       | Yes      | Fixed amount for the payment.                                                                             |
| `lock_amount`           | string | No       | Yes      | `"true"` or `"false"`. When `"true"`, the customer cannot change the amount. Requires `amount` to be set. |
| `disable_after_payment` | string | No       | Yes      | `"true"` or `"false"`. When `"true"`, the payment page is deactivated after a single successful payment.  |
| `min_amount`            | string | No       | Yes      | Minimum amount the customer may enter. Only valid when `lock_amount` is `"false"`. May equal `amount`.    |
| `max_amount`            | string | No       | Yes      | Maximum amount the customer may enter. Only valid when `lock_amount` is `"false"`. May equal `amount`.    |
| `hpp_options`           | array  | No       | Yes      | Array of optional form field configurations. See below.                                                   |

#### `hpp_options` Fields

Each entry in the `hpp_options` array configures a form field on the payment page:

| Field         | Type   | Description                                                                                             |
| ------------- | ------ | ------------------------------------------------------------------------------------------------------- |
| `name`        | string | Field identifier. Supported values: `address`, `phone`, `email`, `invoice_id`, `custom_01`–`custom_05`. |
| `value`       | string | Pre-populated default value for the field.                                                              |
| `is_readonly` | string | `"true"` or `"false"`. When `"true"`, the customer cannot edit the field.                               |
| `is_required` | string | `"true"` or `"false"`. When `"true"`, the field must be completed before payment.                       |

### Request Example

```json
{
  "name": "GS2 Payment Link",
  "name_on_account": "Testing Payments",
  "cc_mid": "800000001780",
  "amount": "99.99",
  "lock_amount": "false",
  "disable_after_payment": "false",
  "min_amount": "50.00",
  "max_amount": "200.00",
  "hpp_options": [
    {
      "name": "email",
      "value": "test@test.com",
      "is_readonly": "false",
      "is_required": "true"
    },
    {
      "name": "phone",
      "value": "2150462839",
      "is_readonly": "false",
      "is_required": "true"
    }
  ]
}
```

### Response Fields

| Field     | Format  | Description                                    |
| --------- | ------- | ---------------------------------------------- |
| `success` | boolean | `true` if the update was applied successfully. |
| `message` | string  | Confirmation message.                          |
| `url`     | string  | The updated payment page URL.                  |

### Response Example

```json
{
  "success": true,
  "message": "HPP updated successfully",
  "url": "https://hpp.runpayments.io/payment?client_id=2DF1A41172BA157090D8E26EC83E0CE0"
}
```