# SurchargeEffectiveStatePolicyDto

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

One state's row in the effective state-policy view: the platform's seeded rule, the merchant's own
override, and the outcome of merging the two. Returned when you read a merchant's effective
surcharge state policies. Read-only: nothing here is stored, and the merchant half is edited
through `SurchargeStatePolicyDto`.

## Fields
- `stateCode` (string): Two-letter US state or territory code, uppercase. (nullable)
- `hasMerchantOverride` (boolean): Whether the merchant has an entry of their own for this state. Reported separately from  `merchantRestrictionType` because a null restriction cannot distinguish "no  entry" from "an entry that never recorded one".
- `merchantRestrictionType` ([SurchargeStateRestrictionType](https://devportal.demo.winkpg.io/docs/api/models/SurchargeStateRestrictionType.md)): The merchant's configured restriction for this state, or `null` when the merchant has no  entry for it (in which case the platform layer alone governs). Check  `hasMerchantOverride` to tell that apart from an entry with no restriction recorded. (nullable)
  Values:
  - `Prohibited`: Surcharging is prohibited outright in the state.
  - `Restricted`: Surcharging is allowed but constrained (e.g. a state cap or disclosure rules).
  - `Permissive`: Surcharging is permitted with no state-specific restriction beyond network rules.
- `merchantCapRate` (number(double)): The merchant's configured cap for this state (decimal fraction), if any. (nullable)
- `platformRestrictionType` ([SurchargeStateRestrictionType](https://devportal.demo.winkpg.io/docs/api/models/SurchargeStateRestrictionType.md)): The platform-seeded restriction governing this state on the evaluation date, or `null` when  the platform seeds no rule for it. (nullable)
  Values:
  - `Prohibited`: Surcharging is prohibited outright in the state.
  - `Restricted`: Surcharging is allowed but constrained (e.g. a state cap or disclosure rules).
  - `Permissive`: Surcharging is permitted with no state-specific restriction beyond network rules.
- `platformCapRate` (number(double)): The platform-seeded cap for this state (decimal fraction), if any. (nullable)
- `platformCitation` (string): The statute the platform rule cites, for display beside the row. Rationale text only; nothing  branches on it. (nullable)
- `effectiveIsProhibited` (boolean): Whether surcharging is prohibited in this state by the merged outcome. Reflects the enforcement  gate: with platform rules unenforced, only the merchant layer can produce a prohibition.
- `prohibitionSource` ([SurchargeStateRuleSource](https://devportal.demo.winkpg.io/docs/api/models/SurchargeStateRuleSource.md)): Which layer produced `effectiveIsProhibited`.
  Values:
  - `None`: Neither layer produced an outcome (no rule for the state).
  - `MerchantConfiguration`: The merchant's own SurchargeStatePolicy entry produced the outcome. Merchant policy can only tighten a platform rule, never relax one.
  - `PlatformPolicy`: The platform's seeded reference data (SurchargePlatformStatePolicyLookup) produced the outcome.
- `effectiveCapRate` (number(double)): The merged cap (decimal fraction), or `null` when neither layer imposes one. (nullable)
- `capSource` ([SurchargeStateRuleSource](https://devportal.demo.winkpg.io/docs/api/models/SurchargeStateRuleSource.md)): Which layer produced `effectiveCapRate`.
  Values:
  - `None`: Neither layer produced an outcome (no rule for the state).
  - `MerchantConfiguration`: The merchant's own SurchargeStatePolicy entry produced the outcome. Merchant policy can only tighten a platform rule, never relax one.
  - `PlatformPolicy`: The platform's seeded reference data (SurchargePlatformStatePolicyLookup) produced the outcome.
- `merchantEntryIsIneffective` (boolean): Whether the merchant's entry for this state is inert: it exists, but the merged outcome is  identical to what the platform layer produces alone, so removing it would change nothing. The  usual cause is an entry trying to relax a platform prohibition, which the merge ignores by  design. Computed server-side so the UI does not have to re-derive the merge to detect it.

## See also

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