Table of Contents
- Overview
- Requirements
- How to initiate a DCC transaction with the Payment Device SDK
- Event Callbacks
- Card Prompts
Overview
Dynamic Currency Conversion (DCC), also known as Cardholder Preferred Currency, is where the cost of a transaction is converted from local currency to the cardholder currency at the point of sale.
If the Payment Device SDK detects that a card is foreign and DCC eligible, the cardholder will be prompted to proceed with the transaction either on the home/card's currency or the local/merchant's currency.
Requirements
- Payment Device SDK 1.14+ - DCC support was added in 1.14, and is a minimum requirement when performing DCC transactions.
- Ingenico iPP350 - The Ingenico iPP350 is currently the only device supported for DCC with NMI, with a minimum firmware of RAM1600.
- Test cards that support DCC - Please speak with your test card distributor to get test cards that support DCC. If the card does not support DCC, you will not see the prompts when the card is presented.
- Certification - A specific certification is required in order for DCC to be used in a production environment. Please ensure you check with NMI that DCC is certified for the Payment Provider & Protocol you wish to use.
- Enablement - A request will need to be sent to NMI support to enable DCC on your terminal and to set-up the correct DCC information on your merchant account.
How to initiate a DCC transaction with the Payment Device SDK
Initiating a transaction with DCC enabled is straight-forward, and only requires an extra parameter before calling StartTransaction()
. The key ParameterKey.Dcc will need to passed into the method with a value of "True" to start a DCC transaction. The default for this key is False. Please see a modified example of the PerformStartTransaction() function within the Windows SDK below of how to perform this:
private void PerformStartTransaction() { var parameters = new ParameterSet(); parameters.Add(ParameterKeys.Amount, "123"); parameters.Add(ParameterKeys.AmountType, "Actual"); parameters.Add(ParameterKeys.Reference, "User Reference"); parameters.Add(ParameterKeys.TransactionType, "Sale"); parameters.Add(ParameterKeys.TippingSupport, "Default"); // Enable DCC parameters.Add(ParameterKeys.Dcc, "True"); parameters.Add(GetExtraParams("StartTransaction")); Response response = chipDnaClientLib.StartTransaction(parameters); string errors; if (response.GetValue(ParameterKeys.Errors, out errors)) { Console.WriteLine(ErrorsString("StartTransaction Errors", errors)); } }
Note: Your terminal will need to be configured for use with DCC. To do this, please contact NMI support, providing your terminal details.
Event Callbacks
A DCC Rate Information Callback Event was added in Payment Device SDK 2.06, and provides a wealth of information on the results of the DCC platform query:
DccRateInformationEvent -> Parameters: [ Key: PAYMENT_DEVICE_MODEL, Value: Ingenico-iPP350-RAM ], [ Key: PAYMENT_DEVICE_IDENTIFIER, Value: 0012345678 ], [ Key: TOTAL_AMOUNT, Value: USD1.79 ], [ Key: LOCAL_TOTAL_AMOUNT, Value: GBP1.23 ], [ Key: CURRENCY_CONVERSION_RATE, Value: 1.454900 ], [ Key: CURRENCY_CONVERSION_PROVIDER, Value: Elavon Merchant Services ], [ Key: CURRENCY_CONVERSION_DISCLAIMER, Value: I have been offered a choice of currencies and have chosen to accept DCC and pay in "DCC Currency" at today's exchange rate. More information on Elavon Best Rate at www.Elavon.eu/bestrate. DCC Provided by Elavon Merchant Services. Elavon Merchant Services receive Foreign Exchange Transaction Services from US Bancorp. ],
The receipt data returned from a DCC transaction will also include the following:
TransactionCurrencyCharCode
CurrencyConversionRate
CurrencyConversionProvider
CurrencyDisclaimer
TotalAmount
- LocalTotalAmount
Note: Payment Device SDK 2.06 added the additional MarkUp
ReceiptEntryID for DCC transactions and renamed ConversionDisclaimer
to CurrencyConversionDisclaimer
.
Card Prompts
When a DCC transaction has been enabled, and all requirements met, the following on-device prompts will change:
1) After startTransaction()
has been called, the device will prompt for a card to be inserted/presented:
2) After the card has been inserted, if the card supports DCC, an additional screen showing the exchange rate will be shown. The customer can choose one of the options shown, using the F2 (up) and F3 (down) buttons and selecting their option with the enter (green) button. Selecting the Print Quote option will display more information on the transaction, such as the markup, etc:
3) After selection, the customer will then be prompted to enter their PIN: