title: Always "This transaction is invalid..." on live PayPal for ASP.NET
body: <p>I am developing web application on ASP.NET. In application users can purchase article  for money.
  For work with PayPal I using PayPal Merchant SDK for .NET package. Application work good with sandbox but with live display error: <code>"This transaction is invalid"</code>. Please return to the recipient's website to complete your transaction using their regular checkout flow."
  When user click on purchase button I execute code:</p>
  
  <pre><code>// only for live
  var paypalConfig = new Dictionary&lt;string, string&gt; { 
                  {"account1.applicationId", "&lt;APP-LIVEID&gt;"},
  
                  {"account1.apiUsername", "&lt;username&gt;"},
                  {"account1.apiPassword", "&lt;pass&gt;"},
                  {"account1.apiSignature", "&lt;signature&gt;"},
                  {"mode", "live"}};
  
  try
          {
              var currency = CurrencyCodeType.USD;
              var paymentItem = new PaymentDetailsItemType
              {
                  Name = "item",
                  Amount = new BasicAmountType(currency, amount.ToString()),
                  ItemCategory = ItemCategoryType.DIGITAL,
              };
  
              var paymentItems = new List&lt;PaymentDetailsItemType&gt;();
              paymentItems.Add(paymentItem);
  
              var paymentDetail = new PaymentDetailsType();
              paymentDetail.PaymentDetailsItem = paymentItems;
              paymentDetail.PaymentAction = PaymentActionCodeType.SALE;
              paymentDetail.OrderTotal = new BasicAmountType(currency, amount.ToString());
              paymentDetail.SellerDetails = new SellerDetailsType {
                  PayPalAccountID= sellerEmail
              };
              var paymentDetails = new List&lt;PaymentDetailsType&gt;();
              paymentDetails.Add(paymentDetail);
  
              var ecDetails = new SetExpressCheckoutRequestDetailsType { 
                  ReturnURL = returnUrl,
                  CancelURL = cancelUrl,
                  PaymentDetails = paymentDetails,
  
              };
  
  
              var request = new SetExpressCheckoutRequestType
              {
                  Version = "104.0",
                  SetExpressCheckoutRequestDetails = ecDetails,
              };
  
              var wrapper = new SetExpressCheckoutReq
              {
                  SetExpressCheckoutRequest = request
              };
  
              var service = new PayPalAPIInterfaceServiceService(paypalConfig);
              var setECResponse = service.SetExpressCheckout(wrapper);
  
              if (sandbox)
                  return "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&amp;token={0}".FormatWith(setECResponse.Token);
  
              return "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&amp;TOKEN={0}".FormatWith(setECResponse.Token);
  
          }
          // # Exception log    
          catch (System.Exception ex)
          {
              // Log the exception message       
  
              Console.WriteLine("Error Message : " + ex.Message);
          }
  </code></pre>
  
  <p>After all I redirect user to url with received TOKEN.</p>
  
  <p>For my application, registered on PayPal, I set in options only <strong>"Adaptive Payments > Basic Payments > Checkout, Send Money or Parallel Payments"</strong> </p>
  
  <p>Why live paypal payments can not work? What is the reason?</p>