Showing results for 
Search instead for 
Did you mean: 

Is it possilbe to set x_duplicate_window when calling CIM method CreateCustomerProfile?

Hello. I have a successful integration up and running with the following platform details:


Integration method: CIM

Platform: .NET/C#

IDE: Visual Studio 2008

Proxy: WCF web service (ServiceSoapClient)


When using the CreateCustomerProfileTransaction method I am taking advantage of the ability to specify transacton options using the extraOptions parameter in the method call as in the following:



CreateCustomerProfileTransactionResponseType response = cimProxy.CreateCustomerProfileTransaction( credentials, transaction, "x_test_request=FALSE&x_delim_data=TRUE&x_delim_char=|&x_encap_char=;&x_email_customer=FALSE&x_relay_response=FALSE&x_version=3.1&x_duplicate_window=30" )



The x_duplicate_window parameter here works great - does exactly what I expect it to. What I'm noticing, however, is that I'm still encountering the default two minute duplicate time window when calling the CreateCustomerProfile method as in the following:



CreateCustomerProfileResponseType response = client.CreateCustomerProfile( this.Credentials, profile, ValidationModeEnum.liveMode );



The problem is that if users make a mistake, say, entering their CVC, when attempting to save their card info, they have to wait two minutes in order to try again.


Based on this, here are my questions:


  1. Is there any way to specify x_duplicate_window when calling the CIM CreateCustomerProfile method?

  2. If I decide to move away from using the generated WCF proxy class and manually create the xml for the CIM calls, would I have the ability to specify extraOptions then?

  3. If neither of the above are possible, can I specify a global setting for this in the Merchant Interface?


Thank you.



1. No, you must include <validationMode>testMode</validationMode> in order to prevent a transaction from being attempted during the profile creation if you want to bypass the duplicate window.


2. No, the XML would be the same. You can only use the <extraOptions> element with the createCustomerProfileTransaction function.


3. No, you cannot. Again, the best way to bypass the duplicate window would be to process test mode transactions using the <validationMode> element when submitting the create profile function and then follow it with a createCustomerProfileTransaction function to charge the customer, if needed.





Trusted Contributor
Trusted Contributor



I am using the API examples for C# dotnet and I try adding the extra options when creating a transaction but it doesn't work.  I still get the "A duplicate transaction has been submitted" message.  Below is the code from the sample.  All I did was add the extra options string


CreateCustomerProfileTransactionResponseType response = Service.CreateCustomerProfileTransaction(MerchantAuthentication, trans, "<extraOptions><x_duplicate_window=1></extraOptions>");


When I try to bill the same profile 2 times with the same amount within seconds of each other, I get the duplicate message.  Am I doing something wrong?



For C#,

CreateCustomerProfileTransactionResponseType response = Service.CreateCustomerProfileTransaction(MerchantA

 uthentication, trans, "x_duplicate_window=1");


If you have more options just add and & in between. e.g. "x_version=3.1&x_delim_char=|"



Thanks!  That worked like a charm.

So, just to make sure I understand this, are you suggesting that if we actually want to run a transaction to fully validate the customer's card info (including CCV check, AVS check) AND we want to make this a repeatable process in case the customer makes a mistake, we need to do the following?


  1. specify testMode for the validation parameter, meaning no transaction is sent to the processor
  2. manually authorize our own test transaction with the newly created profile, using a random or incremented amount to avoid the duplicate detection
  3. manually void the test transaction

Is this what everyone does, or do people just cross their fingers and hope that the customer won't make a mistake?  That seems a little crazy to me.




I am wondering the same thing as #jonathanmgrimm.  I understand that for his step #2, we can send our own test $.01 transaction with the duplicate transaction window set to 0, and we won't have to increment like he suggested.  But other than that, his solution is the same one I'm looking at right now since we have people who enter their CCV incorrectly who are then unknowingly blocked for 2.5 minutes since we can't send a duplicate transaction window with the CreateCustomerPaymentProfile call.  If there is really no other way around it than that, then I understand, but would like someone to confirm.

As far as I know, that is still the only workaround.

Has anyone found a better way to deal with this?


One way around this is to use a field in the customer that is not needed like 'Company' and put a variable  value in that fields on every CreateCustomerPaymentProfile or UpdateCustomerPaymentProfile call to ensure that its not a duplicate transaction each time. But this is a hack


I would like to find a way to keep the liveMode for validation mode so certain aspects are validated like CVV but be able to not have this Duplicate Transaction Window used.


I am using the CIM SOAP API and have found no way to pass the x_duplicate_window parameter into the CreateCustomerPaymentProfile method


I spoke with and they referred me to this forum for help


Anyone have any new ideas on this topic?



I don't have a better solution for you with the existing API. However, I would be interested in suggestions on how we could improve the response if we find an existing profile matching the submission.