DualPricingSettings
A model the API reference uses in a request or a response. The operation pages link every field typed as this model here.
A merchant's dual pricing program: a cash price and a higher card price posted before the payer chooses how to pay, the card price being the cash price plus `rate` of it or, in `Fixed` mode, plus `fixedAmount`. Stored on the merchant aggregate as a nullable owned reference, and carried on the merchant create, update and read contracts.
Values
Fields
| Field | Type | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
enabled
required |
boolean | The per-merchant program switch. Null reads as off. Changing it requires the
`Merchants.DualPricing.Enable` permission, which the merchant's own users do not hold.
nullable
Values:
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.
| ||||||||||||||||||
mode
required |
DualPricingMode DualPricingMode | How the card price is derived from the cash price: a percentage rate, or a fixed amount. Null
reads as `Percentage` (`GetMode`), so a configuration
written before the fixed-amount mode existed keeps pricing exactly as it did.
nullable
Values:
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.
| ||||||||||||||||||
rate
required |
number (double) | The card price uplift, stored as a fraction of the cash price (`0.04` is 4 percent). Read
through `DualPricingRate`, the one place the fraction and the percent an operator
types are converted, so the editor and the validator never disagree about what a value means.
nullablegreater than 0max 0.10
Values:
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.
| ||||||||||||||||||
fixedAmount
required |
number (double) | The card price uplift in `Fixed` mode, in the merchant's currency
(`2.50` adds 2.50 to every payment the card price applies to). Read only in that mode; the
percentage mode reads `rate` alone. Bounded above by the platform ceiling
`Merchants.DualPricing.MaxFixedAmount` (`DualPricingLimits`).
nullablegreater than 0max 100.00
Values:
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.
| ||||||||||||||||||
includesShipping
required |
boolean | Whether the rate also applies to the shipping amount. Null reads as no: by default the card price
uplift is computed on the cash price alone. A fixed amount does not depend on the base, so in
`Fixed` mode the election is not read (`RateIncludesShipping`).
nullable
Values:
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.
| ||||||||||||||||||
treatAchAsCash
required |
boolean | Whether a bank (ACH) payment is charged the cash price. Null reads as yes. Only `true` is
accepted at save: what a bank payment is charged when the merchant does not treat it as cash is
an open product and legal decision, so the platform implements no outcome for it and refuses the
election rather than guessing one.
nullable
Values:
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.
| ||||||||||||||||||
channels
required |
DualPricingChannels DualPricingChannels | The channels the program applies to. Null reads as none, so the runtime applies the card price on
no channel until at least one is chosen. Only `Supported`
members are accepted at save. 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:
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.
| ||||||||||||||||||
bothPricesPostedAttested
required |
boolean | The merchant's attestation that both prices are posted wherever it takes payment outside the
platform's own surfaces (signage, menus, a card-present counter). Required before the program can
be switched on.
nullable
Values:
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.
| ||||||||||||||||||
bothPricesPostedAttestedAt
required |
string (date-time) | When `bothPricesPostedAttested` was set. Server-owned: stamped by the merchant app
service on the save that sets the attestation, carried forward unchanged after that, and cleared
with it.
nullableread only
Values:
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.
| ||||||||||||||||||
bothPricesPostedAttestedBy
required |
string | Who set `bothPricesPostedAttested`. Server-owned on the same terms as
`bothPricesPostedAttestedAt`.
nullableread only
Values:
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.
| ||||||||||||||||||
terminalSignageAttested
required |
boolean | The merchant's attestation that both prices are posted at every card-present point of sale: the
counter signage a payer reads before handing over a card at a terminal, which no platform surface
renders. Required to name `Terminal`, whatever the program switch,
and read again by the decider, so a card-present sale is never charged the card price without it.
Null reads as not attested.
nullable
Values:
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.
| ||||||||||||||||||
terminalSignageAttestedAt
required |
string (date-time) | When `terminalSignageAttested` was set. Server-owned on the same terms as
`bothPricesPostedAttestedAt`.
nullableread only
Values:
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.
| ||||||||||||||||||
terminalSignageAttestedBy
required |
string | Who set `terminalSignageAttested`. Server-owned on the same terms as
`bothPricesPostedAttestedAt`.
nullableread only
Values:
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.
| ||||||||||||||||||
displayCopyTemplate
required |
string | The merchant-editable price panel sentence. It must carry `{cashPrice}`, `{cardPrice}`
and the mode's own token (`{rate}` in percentage mode, `{amount}` in fixed-amount mode)
and no other brace-delimited placeholder (see `DualPricingDisplayCopy`). Null, or
blank, means the platform default copy for the mode.
Conditional: When IsConfigured(DisplayCopyTemplate) is true.
nullablemax length 1000
Values:
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.
| ||||||||||||||||||
configurationVersion
required |
integer (int32) | A counter bumped on every save that changes this configuration, so a decision recorded against a
transaction can name the configuration it was computed under. Server-owned.
nullableread only
Values:
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.
| ||||||||||||||||||
enabledChangedAt
required |
string (date-time) | When `enabled` last changed. Server-owned.
nullableread only
Values:
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.
| ||||||||||||||||||
enabledChangedBy
required |
string | Who last changed `enabled`. Server-owned.
nullableread only
Values:
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.
|
This model has no documented fields.