# CreateSurchargeConfigurationDto

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

Input for creating a merchant's initial surcharge configuration. One configuration exists per
merchant; creating a second for the same merchant is rejected.

## Fields
- `defaultRate` (number(double)): Default surcharge rate (decimal fraction, 0.03 = 3%) when no network override applies. Conditional: When DefaultRate is not null. Range: 0 to 0.03. Conditional: When DefaultRate is not null and AttestedCostOfAcceptanceRate is not null. Must be <= . (nullable)
- `attestedCostOfAcceptanceRate` (number(double)): The merchant's attested effective cost of acceptance (decimal fraction, 0.024 = 2.4%), sourced  from their statement analysis. A surcharge may never exceed this, so a configured rate above it  (or above the 3% network cap) is rejected at save. Supplying a value records the attestation with  the acting user and a timestamp; null leaves it unattested and withdraws any prior attestation. Conditional: When AttestedCostOfAcceptanceRate is not null. Range: 0 to 1. (nullable)
- `channelRestrictions` ([SurchargeChannelFlags](https://devportal.demo.winkpg.io/docs/api/models/SurchargeChannelFlags.md)): A combination of channel flags. Send member names separated by a comma and a space (for example  "Api, HostedPaymentPage") or the integer sum (VirtualTerminal = 1, Api = 2, HostedPaymentPage = 4,  RecurringBilling = 8). None (0) turns surcharging off on every channel. Replaced on update; null  or omitted stores no channels. Conditional: When ChannelRestrictions is not null. Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names. (nullable)
  Values:
  - `None`: No channels enabled.
  - `VirtualTerminal`: Merchant-operated virtual terminal.
  - `Api`: Direct API integrations.
  - `HostedPaymentPage`: Hosted payment pages.
  - `RecurringBilling`: Recurring / scheduled billing.
- `networkPolicies` (array<[SurchargeNetworkPolicyDto](https://devportal.demo.winkpg.io/docs/api/models/SurchargeNetworkPolicyDto.md)>): Per-network surcharge policies. Replaces the stored set in full on update. Conditional: When NetworkPolicies is not null. (nullable)
  Fields of each item:
  - `network` (string) required: The card network this policy applies to. Required, and it must be one of these spellings: Visa;  Mastercard, Master Card or MC; Discover; Amex or American Express; JCB; Diners, Diners Club or  Diners Club International; UnionPay, Union Pay, China Union Pay, China UnionPay or CUP; Interac.  Case and surrounding spaces are ignored, and the name is stored and returned as sent. A  configuration names each network once: two spellings of one network (Mastercard and MC) are the  same network. (nullable, max length 64)
  - `isAllowed` (boolean) required: Whether surcharging is allowed on this network. (nullable)
  - `customRate` (number(double)): Optional network-specific rate override (decimal fraction); null uses the default rate. Conditional: When CustomRate is not null. Range: 0 to 0.03. (nullable)
- `differentialNetworkRatesAttested` (boolean): Attests that differing surcharge rates across the allowed card networks carry documented legal  signoff. Must be true whenever `networkPolicies` resolves to more than one distinct  rate across the allowed networks; ignored otherwise. Card-brand non-discrimination and parity  provisions are what make the signoff necessary. (nullable)
- `disclosureCopyTemplate` (string): The merchant's own surcharge disclosure copy, written in the token grammar defined by  `SurchargeDisclosureCopy`: it must carry `{rate}` and `{costOfAcceptance}`,  may carry `{amount}`, and may carry no other brace-delimited placeholder. Null or blank  leaves every surface on its platform default copy. Conditional: When IsConfigured(DisclosureCopyTemplate) is true. (nullable, max length 1000)
- `merchantId` (string(uuid)) required: The merchant to create the configuration for.
- `holdPromotion` (boolean): Whether to place an explicit promotion hold on the configuration as it is created, so it can  never be promoted out of the waiting period until the hold is released. (nullable)
- `promotionHoldReason` (string): Why the promotion is being withheld, recorded when `holdPromotion` is set. Ignored  when it is not. (nullable, max length 500)

## See also

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