Surcharging: Quotes surcharge eligibility for a card BIN prefix and amount.
POST
/api/surcharging/quote
deprecated
Requires: Surcharging.Configuration.View, merchant scope.
**Required permissions**: `Surcharging.Configuration.View` **Scope**: merchant
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a SurchargeQuoteRequestDto. See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|---|---|
merchantId
required |
string (uuid) | The merchant the quote is for. |
binPrefix
required |
string | The card BIN prefix: 6 to 8 digits only. A full PAN (or any value longer than 8 digits) is rejected at validation. Used to resolve the card brand, funding source, and issuer country. nullablepattern ^[0-9]{6,8}$ |
amount
required |
number (double) | The base transaction amount a surcharge would apply to, in the transaction currency. min 0 |
cardholderState
required |
string | The cardholder billing state code (2-letter, e.g. CO), or null when unknown. Governs the per-state cap / prohibition. Merchant-state rules are applied authoritatively at auth time. Conditional: When CardholderState is not empty. nullable |
channel
required |
all of TransactionSource | The presentment channel the quote is for. Defaults to `Api`, the natural channel for a direct integrator; surcharge eligibility is channel-restricted. |
This request body has no documented fields.
Responses
200 OK
Body: SurchargeQuoteResultDto
Each item has these fields.
| Field | Type | Description |
|---|---|---|
eligible
required |
boolean | Whether the transaction may be surcharged. |
surchargeRate
required |
number (double) | The applied surcharge rate as a decimal fraction (0.03 = 3%); null when ineligible. nullable |
surchargeAmount
required |
number (double) | The computed surcharge amount, in the transaction currency; null when ineligible. nullable |
baseAmount
required |
number (double) | The base transaction amount the quote was computed against, in the transaction currency. |
totalWithSurcharge
required |
number (double) | The base amount plus the computed surcharge, in the transaction currency; equals `baseAmount` when ineligible. |
ineligibilityReason
required |
string | The ineligibility reason code (the `SurchargeIneligibilityReason` name, e.g. DebitCard, NonUsIssuedCard), or null when eligible. nullable |
requiresDisclosure
required |
boolean | Whether the caller must present a surcharge disclosure to the cardholder before payment. |
disclosureText
required |
string | The ready-to-render disclosure text (rate stated plus the does-not-exceed-cost-of-acceptance statement), matching what the Virtual Terminal and Hosted Payment Page show the same cardholder. Non-null only when `eligible` is true. nullable |
This response has no documented body fields.
403 Forbidden
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
401 Unauthorized
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
400 Bad Request
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
404 Not Found
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
501 Not Implemented
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
500 Internal Server Error
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.
Body: RateLimitProblemDetails
Each item has these fields.
| Field | Type | Description |
|---|---|---|
type
required |
string | The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable |
title
required |
string | A short, human-readable summary of the problem type. nullable |
status
required |
integer (int32) | The HTTP status code, repeated in the body as the problem-details format defines. |
detail
required |
string | A human-readable explanation of this occurrence of the problem. nullable |
retryAfterSeconds
required |
integer (int32) | How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again. |
This response has no documented body fields.
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.