# HostedPaymentPageUpdateDto

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

## 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.signapay-sbx.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.signapay-sbx.winkpg.io/docs/api/models/URLConfig.md)): Gets or sets the URL to use when the payment is submitted.
  - `edit` ([URLConfig](https://devportal.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.winkpg.io/docs/api/models/HostedPageDonationAmount.md)>): Gets or sets the list of predefined donation amount options. (nullable)
- `theme` ([HostedPageTheme](https://devportal.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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. A Classic page reads this flag on its own. A Streamlined page reads it together with `fixedAmount` and `allowCustomAmount`: when `allowCustomAmount` is true the customer can change the amount whatever this flag says, and this flag applies only while the page has no positive `fixedAmount`. The Streamlined builder saves this flag from its Amount and Allow Custom Amount settings: true when the amount is empty or a custom amount is allowed, and false on a card capture page or a page that sells catalog products. A create or update through the API stores the value you send.
  - `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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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`
  - `tipPresetPercentages` (array<integer(int32)>): Gets or sets the tip percentages the payer can choose with one tap, in display order: one to four distinct whole percentages, each 1 to 100. `null` or empty means the single free-entry tip field with no buttons. (nullable)
  - `defaultTipSelection` ([HppTipPresetDefault](https://devportal.signapay-sbx.winkpg.io/docs/api/models/HppTipPresetDefault.md)): Gets or sets what a page with tip presets selects before the payer chooses. `null` is treated as `NoTip`. (nullable)
    Values:
    - `NoTip`: Nothing is preselected: the tip is empty and the custom amount input stays closed until the payer chooses Custom.
    - `Preset`: One of the presets is preselected, named by defaultTipPercentage, and the tip opens at that percentage of the amount.
    - `Custom`: Custom is preselected: the custom amount input is open and empty.
  - `defaultTipPercentage` (integer(int32)): Gets or sets the preset selected by default, as a whole percent (20 means 20%). Required when `defaultTipSelection` is `Preset`, where it must be one of `tipPresetPercentages`, and refused at save otherwise. (nullable)
  - `fieldPurchaseOrder` ([HppFieldVisibility](https://devportal.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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)
  - `cardConsentMerchantTerms` (string): Optional per-page merchant terms shown under the card stored-credential consent text when the page saves a card. Plain text: it is HTML-encoded at render, never interpreted as markup. The terms add to the platform consent text and never replace it. A consent captured on the page records a version hash of the terms shown beside the consent text version. (nullable, max length 2000)
- `customText` ([HostedPageCustomText](https://devportal.signapay-sbx.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 for the button that submits the payment. Defaults to `Process`. (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.signapay-sbx.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.signapay-sbx.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.
- `maxFailedAttempts` (integer(int32)): How many declined or refused payments a payment link created against this page accepts before it pauses itself, from 1 to 20. `null` inherits the tenant default, which is no limit unless an administrator set one. (nullable, min 1, max 20)
- `requireTermsAcceptance` (boolean): (nullable)
- `termsUrl` (string): Conditional: When TermsUrl is not empty. Max length: 500. (nullable)
- `callToActionText` (string): Optional wording for the pay button on a Streamlined page, shown followed by the total the payer is charged, for example `Donate $23.45`. On a Streamlined page it takes precedence over `customText.processButtonText`; leave it empty to use that value instead. A Classic page shows `customText.processButtonText`. (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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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.signapay-sbx.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)
  - `managementUrl` (string): The HTTPS address of a page where the payer can update or cancel this recurring payment. Apple Pay shows it on the recurring payment sheet and requires it on a recurring request, so a plan without one never asks Apple Pay for a merchant token, and Apple Pay is not offered on its sessions. Optional, 200 characters or fewer. Snapshotted onto the session with the rest of the plan, so a payer enrolls under the address that was in effect when their link was created. (nullable, max length 200)
- `captureMode` ([HppCaptureMode](https://devportal.signapay-sbx.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)
- `requireSession` (boolean): Close the sessionless route for this page. When `true`, opening the page's own address shows the payer a notice asking for a payment link instead of the payment form, and only a payment session (its short link or its session id) renders the form. `null` or `false` is the default and keeps the page payable on both routes.  For a page priced only through payment sessions. Sessions are still created through the API or the back office, and a session against this page resolves and renders as it does for any other page. The flag decides which address renders the form; a locked session amount, not this flag, is what stops a payer changing the price. (nullable)
- `billLookupEnabled` (boolean): Offer a bill lookup on the page's own address. When `true` on a page whose purpose is Payment, opening the page's own address asks the payer for a bill number and the `billLookupSecondFactor`, shows the balance due, and sends the payer to that bill's payment link. `null` or `false` is the default and renders the page as before.  Available only when bill lookup is enabled for your account; until then the page renders as if the flag were off. A payment link for the page renders the payment form whatever this flag says, because the link already names its bill. (nullable)
- `billLookupSecondFactor` ([HppBillLookupSecondFactor](https://devportal.signapay-sbx.winkpg.io/docs/api/models/HppBillLookupSecondFactor.md)): What the payer types beside the bill number when `billLookupEnabled` is `true`: `PostalCode` (the billing postal code on the bill) or `Email` (the address the bill was sent to). Required when `billLookupEnabled` is `true`, because a bill number alone is not enough to show a payer's balance. Required: When BillLookupEnabled is true. (nullable)
  Values:
  - `PostalCode`: The billing postal code on the bill. Compared on letters and digits only, ignoring case.
  - `Email`: The email address the bill was sent to. Compared ignoring case.
- `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.signapay-sbx.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)
- `concurrencyStamp` (string): (nullable)

## See also

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