GET request
with the card Bank Identification Number (BIN), the transaction
amount, and the merchant or ATM identifier. DHS (Dynamic Host
Server) checks whether the card is eligible for DCC and returns
the converted amount, exchange rate, and margin.
This guide covers the primary DCC use case: requesting a rate
offer for a single transaction using a BIN and base amount. For
retrieving exchange rates in bulk for multi-currency pricing
(MCP), see
Request MCP exchange rates.
Before you start
You need the following to request a DCC offer using Rate Service Classic:- A DHS host URL provided by your Fexco project manager. See Environments for the full list of base URLs and certificate endpoints.
- An acquirer ID (three-letter alphabetic code assigned by Fexco).
- At least one boarded merchant with a merchant ID (MID). In Fexco’s systems, the MID corresponds to the Merchant Originator Tag.
Request a rate offer
The following steps walk through a single-card DCC offer request for a merchant. For ATM integrations, use the ATM variant of the endpoint (/acquirers/{acquirerId}/atms/{atmId}/dccoffers).
For the full list of parameters and response fields, see
Request a DCC offer
in the API reference.
1
Send the request
Send aGET request to the
Request a DCC offer
endpoint with the following parameters:- In the URL path, replace
TSTwith your acquirer ID and11111111with your merchant ID. - Set
binto the first 11 digits of the card number. - Set
baseamountto the transaction amount in the merchant’s base currency, including the decimal point (for example,123.45). - Set
posentrymodeto the terminal’s POS entry mode.
posentrymode value is a three-character code defined
by ISO 8583. The first two digits indicate how the card
number was captured (for example, 07 for contactless ICC
EMV), and the third digit indicates PIN entry capability
(for example, 1 for PIN capable). In the example below,
071 means contactless ICC EMV with PIN entry capability.Fexco recommends sending 11 digits in the
bin field
for optimal accuracy in card currency recognition. If
your integration captures fewer than 11 digits, you can
send the first 6 digits in bin and the remaining
digits (up to 6 more) in the optional cid (Currency
ID) parameter. See the
API reference
for details.A response with
foreignAmount and exchangeRate means
the card is eligible for DCC. Proceed to step 2. If the
response body is empty ({}), the card is not eligible.
Charge in the merchant’s local currency instead. See
Handle domestic and unsupported cards.2
Read the response fields
When the card is eligible for DCC, the response contains the exchange rate and converted amount you need to present the cardholder with their payment options. The table below describes the key fields in the response:For the complete field reference, see
Request a DCC offer
in the API reference.
3
Present the offer to the cardholder
Display the DCC offer to the cardholder so they can choose to pay in their home currency or the merchant’s local currency. The offer must include the following information for regulatory compliance:- The transaction amount in the merchant’s base currency
(
baseAmount). - The converted amount in the cardholder’s currency
(
foreignAmount). - The exchange rate (
exchangeRate.rate). - The margin percentage (
exchangeRate.marginPercentage). - The rate source and timestamp
(
exchangeRate.source,exchangeRate.sourceTimestamp).
expiry
timestamp. If the offer expires before the cardholder
responds, discard it and request a new one. See
Handle rate expiry.Next steps
- Handle rate expiry: understand what happens when a DCC offer expires and how to handle it.
- Handle domestic and unsupported cards: manage the no-offer scenario when a card is not eligible for DCC.
- Request MCP exchange rates: retrieve bulk exchange rates for multi-currency pricing.
- Troubleshoot rate service errors: resolve common Rate Service Classic error responses.
