<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Getting E00007 - User Authentication Failed on Production with Authorize.net PHP SDK in Integration and Testing</title>
    <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Getting-E00007-User-Authentication-Failed-on-Production-with/m-p/95204#M58808</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;I'm integrating Authorize.net into my PHP application using the official Authorize.net PHP SDK (&lt;A href="https://github.com/AuthorizeNet/sdk-php" target="_blank"&gt;https://github.com/AuthorizeNet/sdk-php&lt;/A&gt;) and I'm running into the following error only on the Production environment:&lt;/P&gt;&lt;P&gt;E00007 - User authentication failed due to invalid authentication values.&lt;/P&gt;&lt;P&gt;The confusing part is that everything works perfectly in the Sandbox environment - transactions go through without any issues using my Sandbox API Login ID and Transaction Key against &lt;A href="https://apitest.authorize.net/xml/v1/request.api" target="_blank"&gt;https://apitest.authorize.net/xml/v1/request.api&lt;/A&gt;. The moment I switch to my Production credentials and point to the Production endpoint, I get E00007.&lt;/P&gt;&lt;P&gt;I have already confirmed that:&lt;/P&gt;&lt;P&gt;- My Production API Login ID and Production Transaction Key are correctly copied from the Authorize.net Merchant Interface - no typos, no extra spaces, no hidden characters.&lt;BR /&gt;- I am pointing to the correct Production endpoint: &lt;A href="https://api.authorize.net/xml/v1/request.api" target="_blank"&gt;https://api.authorize.net/xml/v1/request.api&lt;/A&gt;&lt;BR /&gt;- The same code structure that works in Sandbox is being used for Production, with only the credentials and endpoint swapped.&lt;/P&gt;&lt;P&gt;Here is the relevant portion of my PHP code:&lt;/P&gt;&lt;P&gt;$merchantAuthentication = new MerchantAuthenticationType();&lt;BR /&gt;$merchantAuthentication-&amp;gt;setName('7h******N6s');&lt;BR /&gt;$merchantAuthentication-&amp;gt;setTransactionKey('4L3******Pk6');&lt;/P&gt;&lt;P&gt;$refId = 'ref' . time();&lt;/P&gt;&lt;P&gt;$creditCard = new CreditCardType();&lt;BR /&gt;$creditCard-&amp;gt;setCardNumber("4111111111111111");&lt;BR /&gt;$creditCard-&amp;gt;setExpirationDate("2038-12");&lt;BR /&gt;$creditCard-&amp;gt;setCardCode("123");&lt;/P&gt;&lt;P&gt;$paymentOne = new PaymentType();&lt;BR /&gt;$paymentOne-&amp;gt;setCreditCard($creditCard);&lt;/P&gt;&lt;P&gt;$order = new OrderType();&lt;BR /&gt;$order-&amp;gt;setInvoiceNumber("10101");&lt;BR /&gt;$order-&amp;gt;setDescription("Golf Shirts");&lt;/P&gt;&lt;P&gt;$customerAddress = new CustomerAddressType();&lt;BR /&gt;$customerAddress-&amp;gt;setFirstName("Ellen");&lt;BR /&gt;$customerAddress-&amp;gt;setLastName("Johnson");&lt;BR /&gt;$customerAddress-&amp;gt;setCompany("Souveniropolis");&lt;BR /&gt;$customerAddress-&amp;gt;setAddress("14 Main Street");&lt;BR /&gt;$customerAddress-&amp;gt;setCity("Pecan Springs");&lt;BR /&gt;$customerAddress-&amp;gt;setState("TX");&lt;BR /&gt;$customerAddress-&amp;gt;setZip("44628");&lt;BR /&gt;$customerAddress-&amp;gt;setCountry("USA");&lt;/P&gt;&lt;P&gt;$customerData = new CustomerDataType();&lt;BR /&gt;$customerData-&amp;gt;setType("individual");&lt;BR /&gt;$customerData-&amp;gt;setId("99999456654");&lt;BR /&gt;$customerData-&amp;gt;setEmail("EllenJohnson@example.com");&lt;/P&gt;&lt;P&gt;$duplicateWindowSetting = new SettingType();&lt;BR /&gt;$duplicateWindowSetting-&amp;gt;setSettingName("duplicateWindow");&lt;BR /&gt;$duplicateWindowSetting-&amp;gt;setSettingValue("60");&lt;/P&gt;&lt;P&gt;$merchantDefinedField1 = new UserFieldType();&lt;BR /&gt;$merchantDefinedField1-&amp;gt;setName("customerLoyaltyNum");&lt;BR /&gt;$merchantDefinedField1-&amp;gt;setValue("1128836273");&lt;/P&gt;&lt;P&gt;$merchantDefinedField2 = new UserFieldType();&lt;BR /&gt;$merchantDefinedField2-&amp;gt;setName("favoriteColor");&lt;BR /&gt;$merchantDefinedField2-&amp;gt;setValue("blue");&lt;/P&gt;&lt;P&gt;$transactionRequestType = new TransactionRequestType();&lt;BR /&gt;$transactionRequestType-&amp;gt;setTransactionType("authCaptureTransaction");&lt;BR /&gt;$transactionRequestType-&amp;gt;setAmount(20.00);&lt;BR /&gt;$transactionRequestType-&amp;gt;setOrder($order);&lt;BR /&gt;$transactionRequestType-&amp;gt;setPayment($paymentOne);&lt;BR /&gt;$transactionRequestType-&amp;gt;setBillTo($customerAddress);&lt;BR /&gt;$transactionRequestType-&amp;gt;setCustomer($customerData);&lt;BR /&gt;$transactionRequestType-&amp;gt;addToTransactionSettings($duplicateWindowSetting);&lt;BR /&gt;$transactionRequestType-&amp;gt;addToUserFields($merchantDefinedField1);&lt;BR /&gt;$transactionRequestType-&amp;gt;addToUserFields($merchantDefinedField2);&lt;/P&gt;&lt;P&gt;$request = new CreateTransactionRequest();&lt;BR /&gt;$request-&amp;gt;setMerchantAuthentication($merchantAuthentication);&lt;BR /&gt;$request-&amp;gt;setRefId($refId);&lt;BR /&gt;$request-&amp;gt;setTransactionRequest($transactionRequestType);&lt;/P&gt;&lt;P&gt;$controller = new CreateTransactionController($request);&lt;BR /&gt;$response = $controller-&amp;gt;executeWithApiResponse('&lt;A href="https://api.authorize.net/xml/v1/request.api" target="_blank"&gt;https://api.authorize.net/xml/v1/request.api&lt;/A&gt;');&lt;/P&gt;&lt;P&gt;if ($response != null) {&lt;BR /&gt;if ($response-&amp;gt;getMessages()-&amp;gt;getResultCode() == "Ok") {&lt;BR /&gt;$tresponse = $response-&amp;gt;getTransactionResponse();&lt;BR /&gt;if ($tresponse != null &amp;amp;&amp;amp; $tresponse-&amp;gt;getMessages() != null) {&lt;BR /&gt;echo " Successfully created transaction with Transaction ID: " . $tresponse-&amp;gt;getTransId() . "\n";&lt;BR /&gt;echo " Transaction Response Code: " . $tresponse-&amp;gt;getResponseCode() . "\n";&lt;BR /&gt;echo " Message Code: " . $tresponse-&amp;gt;getMessages()[0]-&amp;gt;getCode() . "\n";&lt;BR /&gt;echo " Auth Code: " . $tresponse-&amp;gt;getAuthCode() . "\n";&lt;BR /&gt;echo " Description: " . $tresponse-&amp;gt;getMessages()[0]-&amp;gt;getDescription() . "\n";&lt;BR /&gt;} else {&lt;BR /&gt;echo "Transaction Failed \n";&lt;BR /&gt;if ($tresponse-&amp;gt;getErrors() != null) {&lt;BR /&gt;echo " Error Code : " . $tresponse-&amp;gt;getErrors()[0]-&amp;gt;getErrorCode() . "\n";&lt;BR /&gt;echo " Error Message : " . $tresponse-&amp;gt;getErrors()[0]-&amp;gt;getErrorText() . "\n";&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;} else {&lt;BR /&gt;echo "Transaction Failed \n";&lt;BR /&gt;$tresponse = $response-&amp;gt;getTransactionResponse();&lt;BR /&gt;if ($tresponse != null &amp;amp;&amp;amp; $tresponse-&amp;gt;getErrors() != null) {&lt;BR /&gt;echo " Error Code : " . $tresponse-&amp;gt;getErrors()[0]-&amp;gt;getErrorCode() . "\n";&lt;BR /&gt;echo " Error Message : " . $tresponse-&amp;gt;getErrors()[0]-&amp;gt;getErrorText() . "\n";&lt;BR /&gt;} else {&lt;BR /&gt;echo " Error Code : " . $response-&amp;gt;getMessages()-&amp;gt;getMessage()[0]-&amp;gt;getCode() . "\n";&lt;BR /&gt;echo " Error Message : " . $response-&amp;gt;getMessages()-&amp;gt;getMessage()[0]-&amp;gt;getText() . "\n";&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;} else {&lt;BR /&gt;echo "No response returned \n";&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;What I have already verified:&lt;BR /&gt;- Sandbox integration is fully working with Sandbox credentials on &lt;A href="https://apitest.authorize.net/xml/v1/request.api" target="_blank"&gt;https://apitest.authorize.net/xml/v1/request.api&lt;/A&gt;&lt;BR /&gt;- Production API Login ID and Transaction Key are correctly copied from the Merchant Interface (Production account)&lt;BR /&gt;- The endpoint is explicitly set to &lt;A href="https://api.authorize.net/xml/v1/request.api" target="_blank"&gt;https://api.authorize.net/xml/v1/request.api&lt;/A&gt; (Production)&lt;BR /&gt;- Regenerated the Production Transaction Key from the dashboard to rule out an expired or revoked key&lt;BR /&gt;- No extra whitespace or hidden characters in the credentials&lt;BR /&gt;- The code logic is identical between Sandbox and Production - only the credentials and endpoint differ&lt;/P&gt;&lt;P&gt;My questions:&lt;BR /&gt;1. Since Sandbox works fine, what specifically about the Production account could still cause E00007?&lt;BR /&gt;2. Could account-level restrictions such as IP whitelisting, account not fully activated, or account status issues trigger this error even with correct credentials?&lt;BR /&gt;3. Is there anything special that needs to be enabled or confirmed on the Production account before API access is allowed?&lt;/P&gt;&lt;P&gt;Any guidance would be greatly appreciated. Thank you!&lt;/P&gt;</description>
    <pubDate>Thu, 07 May 2026 20:51:29 GMT</pubDate>
    <dc:creator>asankaherath</dc:creator>
    <dc:date>2026-05-07T20:51:29Z</dc:date>
    <item>
      <title>Getting E00007 - User Authentication Failed on Production with Authorize.net PHP SDK</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Getting-E00007-User-Authentication-Failed-on-Production-with/m-p/95204#M58808</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;I'm integrating Authorize.net into my PHP application using the official Authorize.net PHP SDK (&lt;A href="https://github.com/AuthorizeNet/sdk-php" target="_blank"&gt;https://github.com/AuthorizeNet/sdk-php&lt;/A&gt;) and I'm running into the following error only on the Production environment:&lt;/P&gt;&lt;P&gt;E00007 - User authentication failed due to invalid authentication values.&lt;/P&gt;&lt;P&gt;The confusing part is that everything works perfectly in the Sandbox environment - transactions go through without any issues using my Sandbox API Login ID and Transaction Key against &lt;A href="https://apitest.authorize.net/xml/v1/request.api" target="_blank"&gt;https://apitest.authorize.net/xml/v1/request.api&lt;/A&gt;. The moment I switch to my Production credentials and point to the Production endpoint, I get E00007.&lt;/P&gt;&lt;P&gt;I have already confirmed that:&lt;/P&gt;&lt;P&gt;- My Production API Login ID and Production Transaction Key are correctly copied from the Authorize.net Merchant Interface - no typos, no extra spaces, no hidden characters.&lt;BR /&gt;- I am pointing to the correct Production endpoint: &lt;A href="https://api.authorize.net/xml/v1/request.api" target="_blank"&gt;https://api.authorize.net/xml/v1/request.api&lt;/A&gt;&lt;BR /&gt;- The same code structure that works in Sandbox is being used for Production, with only the credentials and endpoint swapped.&lt;/P&gt;&lt;P&gt;Here is the relevant portion of my PHP code:&lt;/P&gt;&lt;P&gt;$merchantAuthentication = new MerchantAuthenticationType();&lt;BR /&gt;$merchantAuthentication-&amp;gt;setName('7h******N6s');&lt;BR /&gt;$merchantAuthentication-&amp;gt;setTransactionKey('4L3******Pk6');&lt;/P&gt;&lt;P&gt;$refId = 'ref' . time();&lt;/P&gt;&lt;P&gt;$creditCard = new CreditCardType();&lt;BR /&gt;$creditCard-&amp;gt;setCardNumber("4111111111111111");&lt;BR /&gt;$creditCard-&amp;gt;setExpirationDate("2038-12");&lt;BR /&gt;$creditCard-&amp;gt;setCardCode("123");&lt;/P&gt;&lt;P&gt;$paymentOne = new PaymentType();&lt;BR /&gt;$paymentOne-&amp;gt;setCreditCard($creditCard);&lt;/P&gt;&lt;P&gt;$order = new OrderType();&lt;BR /&gt;$order-&amp;gt;setInvoiceNumber("10101");&lt;BR /&gt;$order-&amp;gt;setDescription("Golf Shirts");&lt;/P&gt;&lt;P&gt;$customerAddress = new CustomerAddressType();&lt;BR /&gt;$customerAddress-&amp;gt;setFirstName("Ellen");&lt;BR /&gt;$customerAddress-&amp;gt;setLastName("Johnson");&lt;BR /&gt;$customerAddress-&amp;gt;setCompany("Souveniropolis");&lt;BR /&gt;$customerAddress-&amp;gt;setAddress("14 Main Street");&lt;BR /&gt;$customerAddress-&amp;gt;setCity("Pecan Springs");&lt;BR /&gt;$customerAddress-&amp;gt;setState("TX");&lt;BR /&gt;$customerAddress-&amp;gt;setZip("44628");&lt;BR /&gt;$customerAddress-&amp;gt;setCountry("USA");&lt;/P&gt;&lt;P&gt;$customerData = new CustomerDataType();&lt;BR /&gt;$customerData-&amp;gt;setType("individual");&lt;BR /&gt;$customerData-&amp;gt;setId("99999456654");&lt;BR /&gt;$customerData-&amp;gt;setEmail("EllenJohnson@example.com");&lt;/P&gt;&lt;P&gt;$duplicateWindowSetting = new SettingType();&lt;BR /&gt;$duplicateWindowSetting-&amp;gt;setSettingName("duplicateWindow");&lt;BR /&gt;$duplicateWindowSetting-&amp;gt;setSettingValue("60");&lt;/P&gt;&lt;P&gt;$merchantDefinedField1 = new UserFieldType();&lt;BR /&gt;$merchantDefinedField1-&amp;gt;setName("customerLoyaltyNum");&lt;BR /&gt;$merchantDefinedField1-&amp;gt;setValue("1128836273");&lt;/P&gt;&lt;P&gt;$merchantDefinedField2 = new UserFieldType();&lt;BR /&gt;$merchantDefinedField2-&amp;gt;setName("favoriteColor");&lt;BR /&gt;$merchantDefinedField2-&amp;gt;setValue("blue");&lt;/P&gt;&lt;P&gt;$transactionRequestType = new TransactionRequestType();&lt;BR /&gt;$transactionRequestType-&amp;gt;setTransactionType("authCaptureTransaction");&lt;BR /&gt;$transactionRequestType-&amp;gt;setAmount(20.00);&lt;BR /&gt;$transactionRequestType-&amp;gt;setOrder($order);&lt;BR /&gt;$transactionRequestType-&amp;gt;setPayment($paymentOne);&lt;BR /&gt;$transactionRequestType-&amp;gt;setBillTo($customerAddress);&lt;BR /&gt;$transactionRequestType-&amp;gt;setCustomer($customerData);&lt;BR /&gt;$transactionRequestType-&amp;gt;addToTransactionSettings($duplicateWindowSetting);&lt;BR /&gt;$transactionRequestType-&amp;gt;addToUserFields($merchantDefinedField1);&lt;BR /&gt;$transactionRequestType-&amp;gt;addToUserFields($merchantDefinedField2);&lt;/P&gt;&lt;P&gt;$request = new CreateTransactionRequest();&lt;BR /&gt;$request-&amp;gt;setMerchantAuthentication($merchantAuthentication);&lt;BR /&gt;$request-&amp;gt;setRefId($refId);&lt;BR /&gt;$request-&amp;gt;setTransactionRequest($transactionRequestType);&lt;/P&gt;&lt;P&gt;$controller = new CreateTransactionController($request);&lt;BR /&gt;$response = $controller-&amp;gt;executeWithApiResponse('&lt;A href="https://api.authorize.net/xml/v1/request.api" target="_blank"&gt;https://api.authorize.net/xml/v1/request.api&lt;/A&gt;');&lt;/P&gt;&lt;P&gt;if ($response != null) {&lt;BR /&gt;if ($response-&amp;gt;getMessages()-&amp;gt;getResultCode() == "Ok") {&lt;BR /&gt;$tresponse = $response-&amp;gt;getTransactionResponse();&lt;BR /&gt;if ($tresponse != null &amp;amp;&amp;amp; $tresponse-&amp;gt;getMessages() != null) {&lt;BR /&gt;echo " Successfully created transaction with Transaction ID: " . $tresponse-&amp;gt;getTransId() . "\n";&lt;BR /&gt;echo " Transaction Response Code: " . $tresponse-&amp;gt;getResponseCode() . "\n";&lt;BR /&gt;echo " Message Code: " . $tresponse-&amp;gt;getMessages()[0]-&amp;gt;getCode() . "\n";&lt;BR /&gt;echo " Auth Code: " . $tresponse-&amp;gt;getAuthCode() . "\n";&lt;BR /&gt;echo " Description: " . $tresponse-&amp;gt;getMessages()[0]-&amp;gt;getDescription() . "\n";&lt;BR /&gt;} else {&lt;BR /&gt;echo "Transaction Failed \n";&lt;BR /&gt;if ($tresponse-&amp;gt;getErrors() != null) {&lt;BR /&gt;echo " Error Code : " . $tresponse-&amp;gt;getErrors()[0]-&amp;gt;getErrorCode() . "\n";&lt;BR /&gt;echo " Error Message : " . $tresponse-&amp;gt;getErrors()[0]-&amp;gt;getErrorText() . "\n";&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;} else {&lt;BR /&gt;echo "Transaction Failed \n";&lt;BR /&gt;$tresponse = $response-&amp;gt;getTransactionResponse();&lt;BR /&gt;if ($tresponse != null &amp;amp;&amp;amp; $tresponse-&amp;gt;getErrors() != null) {&lt;BR /&gt;echo " Error Code : " . $tresponse-&amp;gt;getErrors()[0]-&amp;gt;getErrorCode() . "\n";&lt;BR /&gt;echo " Error Message : " . $tresponse-&amp;gt;getErrors()[0]-&amp;gt;getErrorText() . "\n";&lt;BR /&gt;} else {&lt;BR /&gt;echo " Error Code : " . $response-&amp;gt;getMessages()-&amp;gt;getMessage()[0]-&amp;gt;getCode() . "\n";&lt;BR /&gt;echo " Error Message : " . $response-&amp;gt;getMessages()-&amp;gt;getMessage()[0]-&amp;gt;getText() . "\n";&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;} else {&lt;BR /&gt;echo "No response returned \n";&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;What I have already verified:&lt;BR /&gt;- Sandbox integration is fully working with Sandbox credentials on &lt;A href="https://apitest.authorize.net/xml/v1/request.api" target="_blank"&gt;https://apitest.authorize.net/xml/v1/request.api&lt;/A&gt;&lt;BR /&gt;- Production API Login ID and Transaction Key are correctly copied from the Merchant Interface (Production account)&lt;BR /&gt;- The endpoint is explicitly set to &lt;A href="https://api.authorize.net/xml/v1/request.api" target="_blank"&gt;https://api.authorize.net/xml/v1/request.api&lt;/A&gt; (Production)&lt;BR /&gt;- Regenerated the Production Transaction Key from the dashboard to rule out an expired or revoked key&lt;BR /&gt;- No extra whitespace or hidden characters in the credentials&lt;BR /&gt;- The code logic is identical between Sandbox and Production - only the credentials and endpoint differ&lt;/P&gt;&lt;P&gt;My questions:&lt;BR /&gt;1. Since Sandbox works fine, what specifically about the Production account could still cause E00007?&lt;BR /&gt;2. Could account-level restrictions such as IP whitelisting, account not fully activated, or account status issues trigger this error even with correct credentials?&lt;BR /&gt;3. Is there anything special that needs to be enabled or confirmed on the Production account before API access is allowed?&lt;/P&gt;&lt;P&gt;Any guidance would be greatly appreciated. Thank you!&lt;/P&gt;</description>
      <pubDate>Thu, 07 May 2026 20:51:29 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Getting-E00007-User-Authentication-Failed-on-Production-with/m-p/95204#M58808</guid>
      <dc:creator>asankaherath</dc:creator>
      <dc:date>2026-05-07T20:51:29Z</dc:date>
    </item>
  </channel>
</rss>

