Showing results for 
Search instead for 
Did you mean: 

Partial/Split Tender transactions and the sdk-dotnet library

I'm using the AuthorizeNet SDK library from Nuget/Github in my C# MVC project, but I'm trying to add support for partial/split tender transactions, and I'm confused as to how. There's lots of API documentation, but next to nothing on the SDK.


I can send an AuthoriztionRequest() with includeCapture:false and then set AllowPartialAuth = "true" with the test zip 46225. The IGatewayResponse that comes back will fail with a ResponseReasonCode of 295, which means I can then convert the IGatewayResponse to a full GatewayResponse and then read the SplitTenderId from that. So far, so good.


Now I can do another transaction like above, but use a different zip code to not trigger the test behavior and set the amount for the remainder of the transaction. I can add the SplitTenderId from above to this request, and it approves as expected.


At this point, I can log into the web admin for Authorize.Net, and I see both transactions as Authorized/Pending Capture, and the summary box at the top of the transaction detail lists both transactions, so it knows those two are linked together. So the first half of this process seems to work just fine.


My understanding based on reading API documentation is that I'm supposed to not pass in a TransactionId for capture, and supply the SplitTenderId instead (using both throws the expected error). I create a PriorAuthCaptureRequest() with the amount for the full order, and pass a null transactionId. Then on the request object I get back, I set the SplitTenderId to what was given to me on the partial auth and passed to the second auth. The response that comes back from the server is a simple "This transaction has been approved." with a transactionId of "0". Checking the status of the transaction in the web admin for Authorize.Net, both still show as Authorized/Pending Capture. The SDK seems to have done a silent NOP.


I can go in and pass the TransactionId for each in two separate Capture requests without the SplitTenderId, and then they show up as Captured/Pending Settlement, as expected, but I didn't think that's how the process was supposed to work. If I still have to capture each individually, what's the purpose of passing around this SplitTenderId, or even having one at all?


I'm not sure about that, because if you try to void the transactions with the splitTenderId it works just fine. I have also contacted the support about this in the past and told me that this functionality works fine for them, so I guessed that it's an issue with Test accounts. But the same happens in live too. :(