What I am sending
<?xml version="1.0" encoding="utf-8"?><createTransactionRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"><merchantAuthentication><name>XXXXX</name><transactionKey>XXXXXX</transactionKey></merchantAuthentication><clientId>sdk-dotnet-1.9.3</clientId><transactionRequest><transactionType>authCaptureTransaction</transactionType><amount>7.45</amount><profile><customerProfileId>1914XXXXX</customerProfileId><paymentProfile><paymentProfileId>18276XXXX</paymentProfileId></paymentProfile></profile><order><invoiceNumber>86b87e40-9053-4f30-a</invoiceNumber><description /></order></transactionRequest></createTransactionRequest>
Response:
<?xml version="1.0" encoding="utf-8"?><createTransactionResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"><messages><resultCode>Error</resultCode><message><code>E00142</code><text>RecurringBilling setting is a required field for recurring tokenized payment transactions.</text></message></messages><transactionResponse /></createTransactionResponse>
The integration I am setting up handles subscription-based payments, but does not use ARB.
This happens whenever I charge an amount against a profile where the credit card has expired, then try to rebill the same customer for the same amount, but with a different, valid credit card. The transaction fails on authCaptureTransaction as well as fails on a separate authorize call.
I do not believe this is AuthNet's protection against repeated similar transactions.
I have never seen this error before, and it's not documented anywhere. What exactly does it mean, and what can I do to avoid getting this error in the future? I have tried to set recurringBilling to true/false and that didn't work either.
Solved! Go to Solution.
06-13-2018 08:24 AM
Hi @authorize
Are you passing this field "isPaymentToken": true the request when adding or updating a payment profile for credit card ?
This shouldnt be passed in if you are adding a creditCard or bankAccount . This is only needed if you passing in a network Token for card .
You can use the updatePaymentProfile to remove this field and try again .
Thanks
06-14-2018 02:42 PM - edited 06-14-2018 02:43 PM
Hi,
1) Can you kindly run this API (https://developer.authorize.net/api/reference/index.html#customer-profiles-get-customer-payment-prof...) and tell us what the response is for your payment profile ?
2) How are you charging the customer the second time. Are you updating the customer profile or are you simply charging a new valid credit card ?
06-14-2018 02:01 AM
1.
{ "paymentProfile": { "customerProfileId": "1914010837", "customerPaymentProfileId": "1827684746", "payment": { "creditCard": { "cardNumber": "XXXX8713", "expirationDate": "XXXX", "cardType": "Visa", "issuerNumber": "455651", "isPaymentToken": true } }, "customerType": "individual", "billTo": { "phoneNumber": "XX", "firstName": "newcard", "lastName": "forsubscription", "address": "asdfa", "city": "XX", "state": "XX", "zip": "XX", "country": "United States" } }, "messages": { "resultCode": "Ok", "message": [ { "code": "I00001", "text": "Successful." } ] } }
For the second charge, I had created a new payment profile to attach to the profile for the attempt, then made the call. It shows up as void from the dev portal.
06-14-2018 09:54 AM - edited 06-14-2018 09:55 AM
Hi @authorize
Are you passing this field "isPaymentToken": true the request when adding or updating a payment profile for credit card ?
This shouldnt be passed in if you are adding a creditCard or bankAccount . This is only needed if you passing in a network Token for card .
You can use the updatePaymentProfile to remove this field and try again .
Thanks
06-14-2018 02:42 PM - edited 06-14-2018 02:43 PM
That worked, thank you!
06-15-2018 07:17 AM