# HostedPaymentPageCreateDto

A model the API reference uses in a request or a response. The operation pages link every field typed as this model here.

Defines the configuration and content for a hosted payment page, including merchant, activation state, theming, fields and panels, action URLs, donation options, receipts/notifications, disclosures, and customizable texts. Suitable for SaaS-style multi-tenant deployments and payment gateway best practices.

## Fields
- `name` (string): (nullable, min length 5, max length 100)
- `merchantId` (string(uuid)) required
- `isActive` (boolean)
- `title` (string): Conditional: When Title is not empty. Min length: 5. (nullable, max length 100)
- `bannerImage` (string): Filename of the header banner image to display on the page, as returned by the portal image  uploader (for example `3f2a5b90-7c41-4d2e-9f0a-1b8c6d5e4f21.png`). This is not a URL:  the public page resolves the filename against the hosted-page image CDN container. Upload the  image in the page builder's appearance section, then send the filename it returns. Leave empty  for no banner, or set `hideBanner` to suppress an image without discarding it.  Validated by `HppImageBlobName`. (nullable)
- `hideBanner` (boolean)
- `supportRetail` (boolean)
- `usePostOnSubmit` (boolean)
- `useCaptcha` (boolean)
- `supportTokenization` (boolean)
- `pageActions` ([HostedPaymentPageActionUrls](https://devportal.demo.winkpg.io/docs/api/models/HostedPaymentPageActionUrls.md)): Represents the set of action URLs for the hosted payment page, including submit, edit, continue, and  cancel (Back) actions.
  Fields:
  - `submit` ([URLConfig](https://devportal.demo.winkpg.io/docs/api/models/URLConfig.md)): Gets or sets the URL to use when the payment is submitted.
  - `edit` ([URLConfig](https://devportal.demo.winkpg.io/docs/api/models/URLConfig.md)): Gets or sets the URL to use on the hosted receipt page to return to the transaction page.
  - `continue` ([URLConfig](https://devportal.demo.winkpg.io/docs/api/models/URLConfig.md)): Gets or sets the URL to use on the hosted receipt page to navigate to a different page.
  - `cancel` ([URLConfig](https://devportal.demo.winkpg.io/docs/api/models/URLConfig.md)): Gets or sets the address the payer's Back link returns to from the payment form, before paying  (typically the merchant's cart). A session-level `cancelUrl` overrides it.
- `donations` ([HostedPageDonations](https://devportal.demo.winkpg.io/docs/api/models/HostedPageDonations.md)): Represents donation configuration for the hosted payment page, including enablement and predefined amounts.
  Fields:
  - `enableDonationAmounts` (boolean): Gets or sets a value indicating whether donation amounts are enabled.
  - `donationAmounts` (array<[HostedPageDonationAmount](https://devportal.demo.winkpg.io/docs/api/models/HostedPageDonationAmount.md)>): Gets or sets the list of predefined donation amount options. (nullable)
- `theme` ([HostedPageTheme](https://devportal.demo.winkpg.io/docs/api/models/HostedPageTheme.md)): Represents theme settings for the hosted payment page, including colors, fonts, and header styles.
  Fields:
  - `panelBackColor` (string): Gets or sets the background color of the panels. (nullable, max length 20)
  - `panelBorderColor` (string): Gets or sets the border color of the panels. (nullable, max length 20)
  - `buttonColor` (string): Gets or sets the border color of the form buttons. (nullable, max length 20)
  - `buttonBorderColor` (string): Gets or sets the border color of the buttons. (nullable, max length 20)
  - `inputFieldBorderColor` (string): Gets or sets the border color of the form input fields. (nullable, max length 20)
  - `inputFieldBackgroundColor` (string): Gets or sets the color of the form input fields background. (nullable, max length 20)
  - `inputFieldFontSize` (integer(int32)): Gets or sets the size of the input fields font. (nullable)
  - `inputFieldFontColor` (string): Gets or sets the color of the form input fields font. (nullable, max length 20)
  - `inputFieldBackgroundFocusColor` (string): Gets or sets the color of the form input fields background when the field has focus. (nullable, max length 20)
  - `backColor` (string): Gets or sets the page background color. (nullable, max length 20)
  - `fontColor` (string): Gets or sets the font color. (nullable, max length 20)
  - `font` (string): Gets or sets the name of the font to use for the body. (nullable, max length 50)
  - `fontSize` (integer(int32)): Gets or sets the size of the font. (nullable)
  - `headerFont` (string): Gets or sets the name of the font to use for header text. (nullable, max length 50)
  - `headerFontColor` (string): Gets or sets the font color to use for the header text. (nullable, max length 20)
  - `headerFontSize` (integer(int32)): Gets or sets the font size to use for the header text. (nullable)
  - `headerBackColor` (string): Gets or sets the background color to use for the header text. (nullable, max length 20)
  - `headerBorderColor` (string): Gets or sets the background color to use for the header text. (nullable, max length 20)
  - `customCSS` (string): Gets or sets custom css for the HPP (nullable, max length 3000)
- `fieldsAndPanels` ([HostedPageFieldsAndPanels](https://devportal.demo.winkpg.io/docs/api/models/HostedPageFieldsAndPanels.md)): Represents the configuration of fields and panels for the hosted payment page, including display options and custom labels.
  Fields:
  - `fieldInvoice` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets a value indicating whether to display the invoice number field.
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `fieldTax` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets the visibility of the tax amount field.
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `fieldConvenienceFee` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets the visibility of the convenience fee field.
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `fieldShipping` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets the visibility of the shipping amount field.
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `fieldTotal` (boolean): Gets or sets a value indicating whether to display the total amount field.
  - `fieldBillingAddr` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets a value indicating whether to display the billing address fields.
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `fieldShipAddr` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets a value indicating whether to display the shipping address fields.
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `panelWidthOrder` (integer(int32)): Gets or sets an optional width for the order detail panel. (nullable)
  - `panelWidthCustom` (integer(int32)): Gets or sets an optional width for the custom fields panel. (nullable)
  - `panelWidthAddress` (integer(int32)): Gets or sets an optional width for the address panels. (nullable)
  - `panelWidthCard` (integer(int32)): Gets or sets an optional width for the card detail panel. (nullable)
  - `amountSetByCustomer` (boolean): Gets or sets a value indicating whether the total amount can be set by the customer.
  - `panelWidthResult` (integer(int32)): Gets or sets an optional width for the result panel. (nullable)
  - `customerSetsInvoiceNumber` (boolean): Gets or sets a value indicating whether the customer can set the invoice number.
  - `fieldCustomerEmail` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets a value indicating whether to display the customer email field.
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `fieldCustomerNameOnCard` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets a value indicating whether to display the customer Name on card.
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `hideHeaderMenu` (boolean): Gets or sets a value indicating whether to hide the header menu/panel.
  - `orderPanelCustomText` (string): Gets or sets an optional custom label for the order panel. (nullable, max length 125)
  - `customizeOrderPanelText` (boolean): Gets or sets a value indicating whether to replace the default order panel label with a custom label.
  - `customFieldPanelCustomText` (string): Gets or sets an optional custom label for the custom field panel. (nullable, max length 125)
  - `customizeCustomFieldPanelText` (boolean): Gets or sets a value indicating whether to replace the default custom field panel label with a custom label.
  - `addressPanelCustomText` (string): Gets or sets an optional custom label for the address panel. (nullable, max length 125)
  - `customizeAddressPanelText` (boolean): Gets or sets a value indicating whether to replace the default address panel label with a custom label.
  - `cardPanelCustomText` (string): Gets or sets an optional custom label for the card detail panel. (nullable, max length 125)
  - `customizeCardPanelText` (boolean): Gets or sets a value indicating whether to replace the default card panel label with a custom label.
  - `resultPanelCustomText` (string): Gets or sets an optional custom label for the result panel. (nullable, max length 125)
  - `customizeResultPanelText` (boolean): Gets or sets a value indicating whether to replace the default result panel label with a custom label.
  - `showOrderPanelText` (boolean): Gets or sets a value indicating whether to display header label for the order panel.
  - `showCustomFieldsText` (boolean): Gets or sets a value indicating whether to display the header label for the custom fields panel.
  - `showAddressPanelText` (boolean): Gets or sets a value indicating whether to display the header label for the address panel.
  - `showCardPanelText` (boolean): Gets or sets a value indicating whether to display the header label for the card detail panel.
  - `showResultPanelText` (boolean): Gets or sets a value indicating whether to display the header label for the result panel.
  - `hideAddressAndPhone` (boolean): Gets or sets a value indicating whether to hide the address and phone number fields.
  - `fieldTip` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets the visibility of the tip amount field. `null` is treated as  `Hidden`. (nullable)
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `fieldPurchaseOrder` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets the visibility of the customer code / purchase order field. `null` is  treated as `Hidden`. (nullable)
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `fieldContactPhone` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets the visibility of the contact phone field. `null` means the page has never  configured it and the older control decides: the Streamlined `CollectPhone` toggle, or  on a Classic page the always-rendered phone input behind `hideAddressAndPhone`. (nullable)
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `fieldLevel3Amount` ([HppFieldVisibility](https://devportal.demo.winkpg.io/docs/api/models/HppFieldVisibility.md)): Gets or sets the visibility of the read-only Level 3 summary a session can carry.  `null` means the page has never configured it and the older  `AllowLevel3LineItems` toggle decides. (nullable)
    Values:
    - `Hidden`
    - `Optional`
    - `Required`
  - `shippingAmountMode` ([HppShippingAmountMode](https://devportal.demo.winkpg.io/docs/api/models/HppShippingAmountMode.md)): Gets or sets where this page's shipping amount comes from. `null` is treated as  `CardholderEntered`. (nullable)
    Values:
    - `CardholderEntered`: The cardholder types the shipping amount into the shipping field (today's behaviour, and what a persisted null mode coalesces to).
    - `Flat`: The merchant fixed a single shipping amount for this page. The field renders visible, seeded with that amount, and non-editable, and the create path stamps the configured value server-side. An amount of zero is free shipping, which is a configured value like any other.
    - `ProviderCalculated`: The shipping amount comes from a carrier rate quote the cardholder selects. The page quotes the shipping address once it is complete, re-quotes whenever it changes, and preselects an option so a cardholder who ignores the selector still has a valid total. The submit carries only the quote and option identifiers; the create path re-reads the stored quote and charges its amount. What happens when no rate can be quoted is the page's shippingQuoteFailureBehavior. A session that locks a shipping amount wins over this mode, and the selector does not render for it at all.
  - `flatShippingAmount` (number(double)): Gets or sets the fixed shipping amount this page charges. Meaningful only in  `Flat` mode; the save-time validator refuses a non-null value  in any other mode so a stale amount cannot sit in the document waiting to be reactivated by a  later mode change. (nullable)
  - `shippingQuoteFailureBehavior` ([HppShippingQuoteFailureBehavior](https://devportal.demo.winkpg.io/docs/api/models/HppShippingQuoteFailureBehavior.md)): Gets or sets what a `ProviderCalculated` page does when no  carrier rate can be quoted. `null` is treated as  `BlockPayment`. (nullable)
    Values:
    - `BlockPayment`: The payment cannot be taken until a rate is quoted. The default, and what a persisted null coalesces to: the safest reading of a page that never chose.
    - `ChargeFallbackAmount`: The page charges its configured fallback shipping amount (shippingFallbackAmount), which may be zero.
    - `ChargeNoShipping`: The payment proceeds with no shipping charged.
  - `shippingFallbackAmount` (number(double)): Gets or sets the shipping amount, in the transaction currency, that a  `ProviderCalculated` page charges when no carrier rate can be  quoted and the page is set to `ChargeFallbackAmount`.  Zero is a valid configured value. (nullable)
  - `taxAmountMode` ([HppTaxAmountMode](https://devportal.demo.winkpg.io/docs/api/models/HppTaxAmountMode.md)): Gets or sets where this page's tax amount comes from. `null` is treated as  `CardholderEntered`. (nullable)
    Values:
    - `CardholderEntered`: The cardholder types the tax amount into the tax field, or the merchant's own auto-calculated tax rate fills it. The default, and what a persisted null mode coalesces to.
    - `FlatRate`: The merchant picked one of its invoicing tax rates for this page. The tax field renders read-only, filled with that rate applied to the taxable amount, and the server computes and charges the same figure whatever the browser submitted.
    - `ProviderCalculated`: The rate comes from the merchant's tax provider, looked up for the customer's address. The tax field renders read-only, is quoted when the address is complete and re-quoted when it changes, and the server re-derives the rate for the submitted address and refuses a submit whose tax disagrees with it. A provider that cannot answer blocks the payment rather than charging no tax.
  - `flatTaxRateId` (string(uuid)): Gets or sets the identifier of the merchant's invoicing tax rate this page charges. Meaningful  only in `FlatRate` mode; the save-time validator refuses a non-null  value in any other mode so a stale rate cannot be reactivated by a later mode change. (nullable)
  - `taxQuoteAddress` ([HppTaxQuoteAddress](https://devportal.demo.winkpg.io/docs/api/models/HppTaxQuoteAddress.md)): Gets or sets which of the customer's addresses a  `ProviderCalculated` page looks the tax rate up for. `null` is  treated as `Billing`. The save-time validator refuses a non-null  value in any other mode. (nullable)
    Values:
    - `Billing`: The billing address. What a persisted null coalesces to.
    - `Shipping`: The shipping address, for a merchant that ships goods and owes tax where they are delivered. A page in this setting must show the shipping address panel.
  - `panelLayout` (array<[HppPanelDefinition](https://devportal.demo.winkpg.io/docs/api/models/HppPanelDefinition.md)>): Optional explicit panel ordering and sizing for the public form. When `null`, the page  uses the default panel layout. (nullable)
- `receiptAndNotifications` ([HostedPageReceipts](https://devportal.demo.winkpg.io/docs/api/models/HostedPageReceipts.md)): Represents receipt and notification settings for the hosted payment page, including callback URLs, email options, and notification recipients.
  Fields:
  - `callbackUrl` (string): Gets or sets an optional URL to receive a webhook notification when a hosted page transaction is processed. Conditional: Conditional (see validator source). Max length: 200. Conditional: When CallbackUrl is not empty. (nullable)
  - `enableWebhookNotification` (boolean): (nullable)
  - `enableCustomerEmail` (boolean): (nullable)
  - `customerEmailLogo` (string): Gets or sets a logo to include on email receipts sent to the customer. (nullable)
  - `customerEmailFooter` (string): Gets or sets optional footer text to include in customer email receipts. (nullable, max length 1000)
  - `customerEmailBody` (string): Gets or sets optional body text for customer email receipts. (nullable, max length 3000)
  - `useHostedConfirm` (boolean): Gets or sets a value indicating whether to use the hosted confirmation/receipt page.
  - `receiptAdditionalText` (string): Gets or sets optional additional text to include on receipts. (nullable, max length 1000)
  - `customerEmailAsPdf` (boolean): Gets or sets a value indicating whether customer receipts are sent as PDF attachments.
  - `emailPurchaseNotifications` (boolean): Gets or sets a value indicating whether to notify email addresses of transactions completed via the hosted payment page.
  - `purchaseNotifyEmails` (array<[HostedPagePurchaseNotificationEmail](https://devportal.demo.winkpg.io/docs/api/models/HostedPagePurchaseNotificationEmail.md)>): Gets or sets the list of email addresses to notify of completed purchases. (nullable)
- `disclosures` ([HostedPageDisclosures](https://devportal.demo.winkpg.io/docs/api/models/HostedPageDisclosures.md)): Represents disclosure information for a hosted payment page, including display and acceptance requirements.
  Fields:
  - `disclosureText` (string): Gets or sets the body text to display as a disclosure before processing a transaction. (nullable, max length 3000)
  - `showDisclosures` (boolean): Gets or sets a value indicating whether to show disclosure text.
  - `requireDisclosureAccept` (boolean): Gets or sets a value indicating whether the customer must accept the disclosure before completing a transaction.
  - `achWebAuthorizationText` (string): Optional per-page override for the NACHA WEB single-debit ACH authorization wording shown on  the ACH consent checkbox. Blank/unset renders the platform default. Supports the  `{MerchantName}` placeholder, substituted with the merchant's display name at render.  When set it is captured verbatim (with a content version hash) on each resulting ACH WEB  debit, so custom language a merchant's bank/ODFI approved becomes the recorded authorization.  The save-time validator guarantees a configured override never renders blank, so the  submit-time fail-closed gate is never reached with a blank override. Conditional: When AchWebAuthorizationText is not empty. Max length: 2000. (nullable)
  - `achRecurringWebAuthorizationText` (string): Optional per-page override for the NACHA WEB <b>recurring</b> ACH authorization wording shown on  the ACH consent checkbox of a Save-Card-with-Initial-Charge page. Blank/unset renders the  platform default recurring language. Supports the `{MerchantName}` placeholder and the  `{RecurringSchedule}` placeholder (substituted with the plan's schedule summary at render).  Used only when the ACH debit establishes a recurring arrangement; a one-off ACH debit uses  `achWebAuthorizationText`. Captured verbatim (with a content version hash) on the  resulting initial ACH WEB debit. Conditional: When AchRecurringWebAuthorizationText is not empty. Max length: 2000. (nullable)
  - `achSaveOnlyWebAuthorizationText` (string): Optional per-page override for the NACHA <b>save-only</b> (storage) ACH authorization wording  shown on the ACH consent checkbox of a store-bank-account-no-charge page. Blank/unset renders  the platform default save-only language. Supports the `{MerchantName}` placeholder,  substituted with the merchant's display name at render. Used only when the account is stored  without any debit being taken now; a one-off debit uses `achWebAuthorizationText`  and an initial-charge recurring arrangement uses `achRecurringWebAuthorizationText`.  Captured verbatim (with a content version hash) on the resulting save. Conditional: When AchSaveOnlyWebAuthorizationText is not empty. Max length: 2000. (nullable)
- `customText` ([HostedPageCustomText](https://devportal.demo.winkpg.io/docs/api/models/HostedPageCustomText.md)): Represents custom text and links for a hosted payment page, including terms, promo, support, and privacy policy.
  Fields:
  - `termsAndConditionsLink` (string): Gets or sets an optional URL for a link to your terms and conditions. Conditional: Conditional (see validator source). Max length: 200. Conditional: When TermsAndConditionsLink is not empty. (nullable)
  - `aboutUsLink` (string): Gets or sets an optional URL for a link to your 'about us' page. Conditional: Conditional (see validator source). Max length: 200. Conditional: When AboutUsLink is not empty. (nullable)
  - `processButtonText` (string): Gets or sets optional custom text to display in place of 'Process' on the process button. (nullable, max length 50)
  - `headerText` (string): Gets or sets optional text to display at the top of the hosted page. (nullable, max length 100)
  - `promoText` (string): Gets or sets optional text to display as a highlighted announcement or promotion. (nullable, max length 200)
  - `promoLink` (string): Gets or sets an optional URL to make the promo text a link. Conditional: Conditional (see validator source). Max length: 200. Conditional: When PromoLink is not empty. (nullable)
  - `supportLink` (string): Gets or sets an optional URL for hosted page customers to access support in processing a transaction. Conditional: Conditional (see validator source). Max length: 200. Conditional: When SupportLink is not empty. (nullable)
  - `poweredByText` (string): Gets or sets optional text to use as a 'powered by' caption at the bottom of the page. (nullable, max length 100)
  - `copyrightText` (string): Gets or sets optional text to use as a copyright statement. (nullable, max length 100)
  - `shippingInfoLink` (string): Gets or sets an optional URL to more information about shipping policies and terms. Conditional: Conditional (see validator source). Max length: 200. Conditional: When ShippingInfoLink is not empty. (nullable)
  - `privacyPolicyLink` (string): Gets or sets an optional link to your privacy policy. Conditional: Conditional (see validator source). Max length: 200. Conditional: When PrivacyPolicyLink is not empty. (nullable)
- `isTemplate` (boolean): Deprecated. Templates live in the shared template store, not on the page. During the  deprecation window this still drives that store: `true` saves a template from this page  (creating the store row, or refreshing the existing one with the page's current values, name  and description); `false`, or leaving the field out, removes the template saved from this  page, which is what the field always meant on a full-replace update. The page itself is not  changed either way. (deprecated)
- `templateName` (string): Deprecated. The template's name when `isTemplate` is `true`; the page's own  name is used when this is empty. (nullable, deprecated)
- `templateDescription` (string): Deprecated. The template's description when `isTemplate` is `true`. (nullable, deprecated)
- `shareTemplate` (boolean): Deprecated. Whether the template saved from this page is shared beyond its merchant; written to  the store row's published state when `isTemplate` is `true`. (deprecated)
- `createdFromTemplateId` (string(uuid)): The template this page is being created from, or `null` for a page started blank. The  designers stamp it when Load Template is applied and the create-from-template path sets it  server-side; it is recorded on the page and never copied into a template. (nullable)
- `pageMode` ([HostedPaymentPageMode](https://devportal.demo.winkpg.io/docs/api/models/HostedPaymentPageMode.md)): (nullable)
  Values:
  - `Classic`: The original full-control builder with accordion sections and comprehensive configuration.
  - `Streamlined`: A simplified, Stripe-inspired builder with live preview and a clean two-column public form.
- `collectBusinessName` (boolean): (nullable)
- `collectPhone` (boolean): Older Streamlined control for the payer phone field. Honored only while  `fieldsAndPanels.fieldContactPhone` is `null`; once that visibility is set it decides  what the page renders, and this toggle is overwritten from it on every save, so a write here  alongside a set visibility is discarded. Write `fieldsAndPanels.fieldContactPhone` instead. (nullable)
- `allowPromoCodes` (boolean): (nullable)
- `collectTaxId` (boolean): Deprecated and inert. No hosted payment page renders a tax ID field, so setting this collects  nothing and no tax ID is stored. To capture a buyer tax ID, define a merchant custom field and  make it visible on hosted payment pages. (nullable)
- `savePaymentDetails` (boolean): (nullable)
- `declineRetryMode` ([HppDeclineRetryMode](https://devportal.demo.winkpg.io/docs/api/models/HppDeclineRetryMode.md)): What a payment link created against this page does when a payment is declined. `null`  inherits the tenant default, which is the historical single-use behavior: any declined  payment spends the link permanently. Conditional: When DeclineRetryMode is not null. (nullable)
  Values:
  - `ConsumeOnDecline`: The historical behavior, and the default at every level of the resolution chain. Any processor answer spends the link permanently: the session stays Consumed and a payer who reloads it is told the link has already been used.
  - `ReleaseOnDecline`: A definite issuer decline hands the link back to Pending so the payer can correct their card and resubmit on the same URL, instead of having to ask the merchant for a new link.
- `requireTermsAcceptance` (boolean): (nullable)
- `termsUrl` (string): Conditional: When TermsUrl is not empty. Max length: 500. (nullable)
- `callToActionText` (string): (nullable, max length 50)
- `productName` (string): (nullable, max length 100)
- `productDescription` (string): (nullable, max length 500)
- `productImageBlobName` (string): Filename of the product image shown in the Streamlined checkout order summary, as returned by  the portal image uploader (for example `3f2a5b90-7c41-4d2e-9f0a-1b8c6d5e4f21.png`). Same  contract as `bannerImage`: this is not a URL, and the public page resolves the  filename against the hosted-page image CDN container. Upload the image in the Streamlined page  builder, then send the filename it returns. Leave empty for no product image. Validated by  `HppImageBlobName`. (nullable)
- `fixedAmount` (number(double)): Conditional: When FixedAmount is not null. Must be >= 0. Conditional: Conditional (see validator source). Conditional: When IsCardCapture(PagePurpose) is true. (nullable)
- `allowCustomAmount` (boolean): Conditional: Conditional (see validator source). Conditional: When IsCardCapture(PagePurpose) is true. (nullable)
- `successRedirectUrl` (string): Conditional: When SuccessRedirectUrl is not empty. Max length: 500. (nullable)
- `successRedirectDelaySeconds` (integer(int32)): How long the hosted confirmation panel is shown, in seconds, before the payer is sent to the  configured post-payment address. Accepts 0 to 30; `0` redirects as soon as the panel has  rendered. Omit it (or send `null`) to inherit the platform-configured delay, which  defaults to 5 seconds. The payer always gets a `Continue now` button that skips the wait.  Ignored when no post-payment address is configured, and on an embedded session, which never  redirects. (nullable, min 0, max 30)
- `paymentMethods` (array<string>): (nullable)
- `customFieldNames` (array<string>): Optional per-page allow-list of merchant custom-field names this page shows and accepts.  `null` means "all of the merchant's HPP-visible custom fields" (the default; existing pages  that never set this stay unchanged). An explicit empty list means "no merchant custom fields on  this page". A populated list intersects with the enabled / HPP-visible / save-card-purpose gates.     This property is full-replace on update: because the update DTO carries the operator's complete  selection, sending `null` on a round-trip clears a previously configured list back to the  all-fields default, and sending `[]` scopes the page to no custom fields. A client that omits  the property on update therefore resets it. The editors always send the operator's actual selection. Conditional: When CustomFieldNames is not null. (nullable, max items 100)
- `allowedEmbeddingDomains` (array<string>): (nullable, max items 20)
- `checkoutLayout` ([CheckoutLayout](https://devportal.demo.winkpg.io/docs/api/models/CheckoutLayout.md)): Conditional: When CheckoutLayout is not null. (nullable)
  Values:
  - `Standard`: Two-column layout: order summary on the left, payment form on the right. This is the default layout matching the original Streamlined mode design.
  - `Compact`: Single centered column with an inline summary at the top, form fields below, and a prominent CTA button. Minimal chrome, max-width ~480px.
  - `Split`: Full-width hero header with product image and summary information, then a centered narrower column (~560px) with the payment form below.
  - `Embedded`: Frameless minimal layout designed for iframe embedding. No order summary panel, just payment fields and CTA with minimal padding.
- `allowLevel3LineItems` (boolean): Older control for the read-only Level 3 line-item summary. Honored only while  `fieldsAndPanels.fieldLevel3Amount` is `null`; once that visibility is set it decides  what the page renders, and this toggle is overwritten from it on every save, so a write here  alongside a set visibility is discarded. Write `fieldsAndPanels.fieldLevel3Amount` instead. (nullable)
- `pagePurpose` ([HppPagePurpose](https://devportal.demo.winkpg.io/docs/api/models/HppPagePurpose.md)): Instance-level page purpose. `null` resolves to  `Payment`. `SaveCard` dedicates the  page to card capture (zero-dollar verification, no charge). A card-capture page cannot enable  amount-bearing settings such as donation amounts or the tax, shipping and convenience fee  fields; a request that does is rejected with a validation error. Conditional: Conditional (see validator source). Conditional: When PagePurpose is not null. (nullable)
  Values:
  - `Payment`: The default, historical behavior: a chargeable payment page. null resolves here, so every pre-existing HPP instance keeps behaving exactly as before.
  - `SaveCard`: A card-capture page: the cardholder's card is validated via a zero-dollar account verification (authorize $0 + AVS/CVV, immediate void), then vaulted with stored-credential consent. No charge is taken. Amount-bearing configuration (tax, shipping, convenience fee, invoice amounts, donations, tip) is irrelevant and is hidden in the builder / rejected by the validator. Requires the merchant's processor to advertise SupportsZeroDollarVerification.
  - `SaveCardWithInitialCharge`: A card-capture page that also charges the first of a recurring schedule. The cardholder's card is charged a real initial sale (the first payment of a referenced reusable recurring plan, framed as the customer-initiated transaction that establishes the credential-on-file agreement), vaulted with Recurring stored-credential consent, and a customer Contract is created for the remaining payments. Like SaveCard, the amount-bearing builder configuration (tax, shipping, convenience, invoice, donations, tip, customer-set amount) is hidden: the charged amount is driven entirely by the inlined recurring definition, not by per-page amount fields. Requires a complete inlined recurring definition (RecurringPlan).
- `recurringPlan` ([HppRecurringPlan](https://devportal.demo.winkpg.io/docs/api/models/HppRecurringPlan.md)): The inlined recurring-schedule definition whose first payment a  `SaveCardWithInitialCharge` page charges. Required (validated)  when `pagePurpose` is `SaveCardWithInitialCharge`; `null` otherwise. Required: When RequiresRecurringPlan(PagePurpose) is true. Conditional: Conditional (see validator source).
  Fields:
  - `recurringAmount` (number(double)): The amount charged on each recurring payment after the initial charge. (greater than 0)
  - `frequency` ([Frequency](https://devportal.demo.winkpg.io/docs/api/models/Frequency.md)): The frequency unit of the recurring schedule (e.g. Monthly, Weekly).
    Values:
    - `Secondly`
    - `Minutely`
    - `Hourly`
    - `Daily`
    - `Weekly`
    - `Monthly`
    - `Yearly`
  - `interval` (integer(int32)): The interval multiplier for `frequency` (e.g. `Frequency = Monthly` with  `Interval = 3` is every three months). Defaults to 1. (min 1)
  - `numberOfPayments` (integer(int32)): Total number of payments in the schedule, <b>including</b> the initial charge. A Contract  instantiated from this definition covers the payments after the initial charge  (`GetScheduledPaymentCount`). (min 2)
  - `initialChargeAmount` (number(double)): Optional override for the first (initial) charge amount. When `null`, the initial charge  uses `recurringAmount`. Lets a merchant charge a different amount up front (e.g. a  setup fee bundled into payment one) while the recurring schedule stays at  `recurringAmount`. Conditional: When InitialChargeAmount is not null. Must be > 0. (nullable)
- `captureMode` ([HppCaptureMode](https://devportal.demo.winkpg.io/docs/api/models/HppCaptureMode.md)): Capture timing for the chargeable Payment flow: `Sale` (default;  `null` resolves here) authorizes and captures now; `Authorize`  authorizes now and defers capture. Composes with the save-card option to produce the  "save card + delayed capture" combination. `Authorize` is rejected  on the card-capture page purposes (`SaveCard` and  `SaveCardWithInitialCharge`). Conditional: When CaptureMode is not null. Conditional: When IsCardCapture(PagePurpose) is true. (nullable)
  Values:
  - `Sale`: Authorize and capture funds in a single step (the historical, default behavior). null resolves here, so every pre-existing chargeable page keeps doing an implicit Sale.
  - `Authorize`: Authorize now, capture later (delayed capture). The resulting transaction is an Authorization in an Authorized state, eligible for capture and void per the action matrix; the capture is completed later against the resulting transaction id via the existing capture action path (including the Apple Pay single-use token case).
- `allowTransparentEmbedding` (boolean): Opt-in to a see-through backdrop when this page is rendered inside a merchant iframe, so the  merchant's own page shows through behind the payment form. `null`/`false` is the  default and keeps the page fully opaque.     The transparent render additionally requires that the request is genuinely framed (resolved  server-side from the browser-set `Sec-Fetch-Dest` header) and that  `allowedEmbeddingDomains` is configured, so it applies only inside the parents  the merchant allowlisted. A page opened directly as a standalone payment link always paints  its own background. Only the backdrop clears: the payment form keeps its own paint. (nullable)
- `allowDeveloperPortalEmbedding` (boolean): Allow the developer portal to embed this page, so a developer can try it in the portal's embed  SDK playground without adding the portal's host to `allowedEmbeddingDomains`.  `null`/`false` is the default and leaves embedding exactly as the allowlist defines it.     When `true`, the developer portal's public origin, as configured for this environment, is  accepted as a session's `parentOrigin`, and is added to the page's iframe allowlist when  `allowedEmbeddingDomains` is configured. It admits that one origin and no other. A  page with no allowed embedding domains can still be framed by any site, as before. Has no effect  when the environment has no developer portal address configured. (nullable)
- `hideTitle` (boolean): Suppress the page `title` on the payer-facing page (both the Classic and the  Streamlined renderer). `null`/`false` is the default and renders the title exactly as  before. Display-only: the title is still stored, still returned, and still shown on the  administrative surfaces (grid, quick view, favorites subtitle). (nullable)
- `hideMerchantName` (boolean): Suppress the merchant business-name line in the Streamlined identity header on the payer-facing  page. `null`/`false` is the default. The banner image in that same header stays  governed by `hideBanner`.     Display-only, and deliberately narrow: the merchant name still reaches the Apple Pay / Paze sheet  total label and the NACHA ACH consent copy (and the consent evidence captured with an ACH  authorization), which must name the real merchant regardless of this flag. (nullable)
- `hideLoadingIndicator` (boolean): Suppress the gateway's own loading chrome on the payer-facing page: the loading card shown  while the page resolves, and the connecting affordance drawn over the prerendered form before  the circuit is live. `null`/`false` is the default and shows them exactly as before.     For an integrator who embeds the page and paints a loading state of their own, revealing the  frame on the `ready` event. Display-only: the session, the payment and the events the  page emits are untouched. Honored on the initial document, which the embedding-restriction  feature resolves the page for; a deployment with that feature off shows the chrome as before. (nullable)
- `campaignId` (string(uuid)): Optional campaign this page belongs to. Sessions created from this page inherit it when the  create request names no campaign of its own, so a merchant can attach a whole page to a  campaign once instead of naming it on every link. (nullable)
- `products` (array<[HppPageProduct](https://devportal.demo.winkpg.io/docs/api/models/HppPageProduct.md)>): The catalog products this page sells, in display order, or `null` for a page priced by a  single `productName` with a `fixedAmount` or a payer-entered amount.  Each entry references an invoicing catalog product owned by this page's merchant; the price,  name and quantity limits are read from the catalog when a link is created and snapshotted onto  that link, so editing the catalog never reprices a link already in a payer's hands. Conditional: When Products is not null. (nullable, max items 50)
  Fields of each item:
  - `productId` (string(uuid)) required: The invoicing catalog product this entry sells.
  - `displayOrder` (integer(int32)): Zero-based position of the product in the payer-facing list. (min 0)
  - `isOptional` (boolean): `true` for an add-on the payer may leave out; `false` for a product every purchase  on this page includes.
  - `allowQuantityChange` (boolean): Whether the payer may change the quantity from `defaultQuantity`.
  - `defaultQuantity` (number(double)): The quantity the page starts at. Must sit inside the effective quantity bounds, and is the  only quantity a payer can buy when `allowQuantityChange` is `false`. Conditional: When MinimumQuantity is not null. Must be >= . Conditional: When MaximumQuantity is not null. Must be <= . (greater than 0, max 9999)
  - `minimumQuantity` (number(double)): Optional page-level floor on the quantity, applied on top of the product's own  `MinimumQuantity`. The effective minimum is the larger of the two. Conditional: When MinimumQuantity is not null. Must be > 0. (nullable)
  - `maximumQuantity` (number(double)): Optional page-level ceiling on the quantity, applied on top of the product's own  `MaximumQuantity`. The effective maximum is the smaller of the two. Conditional: When MaximumQuantity is not null. Must be > 0. Conditional: When MinimumQuantity is not null and MaximumQuantity is not null. Must be >= . (nullable)

## See also

- [All documentation](https://devportal.demo.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
