1

I am submitting the ACA forms(tax year:2016) to the IRS, getting the below error

<ns3:FormBCTransmitterSubmissionDtl xmlns="urn:us:gov:treasury:irs:ext:aca:air:ty16" xmlns:ns2="urn:us:gov:treasury:irs:common" xmlns:ns3="urn:us:gov:treasury:irs:msg:form1094-1095BCtransmittermessage">
<ACATransmitterSubmissionDetail>
    <TransmitterErrorDetailGrp>
        <ns2:ErrorMessageDetail>
            <ns2:ErrorMessageCd>MANIFEST-025</ns2:ErrorMessageCd>
            <ns2:ErrorMessageTxt>Manifest 'ChecksumAugmentationNum' must match the IRS-calculated 'ChecksumAugmentationNum' value of the transmission</ns2:ErrorMessageTxt>
        </ns2:ErrorMessageDetail>
    </TransmitterErrorDetailGrp>
</ACATransmitterSubmissionDetail>

Attached is our MTOM format we are using to send it through A2A.

https://www.dropbox.com/home?preview=samplemtom.txt

I am also tried the ChecksumAugmentationNum value set as Lower case also.

user1389320
  • 201
  • 1
  • 4
  • 9

2 Answers2

0

Have you successfully transmitted for Tax Year 2015? I have seen another post related to this issue, but have not run into this issue while sending TY2015 (to AATS or Production) or TY2016 records to AATS. My checksum calculation has not changed, and is very simple.

Russ
  • 678
  • 8
  • 26
  • Tax Year 2015 is working fine for me. Only issue on Tax year 2016. – user1389320 Feb 27 '17 at 03:48
  • When I transmit to AATS for TY2016, I am receiving Accepted status. Using the same code-base for TY2015 to Production, the process works as expected. We have not yet transmitted 2016 data; however, will be doing that in the next few weeks. I am expecting this to work without critical errors. – Russ Feb 27 '17 at 16:18
  • Fortunately, I have not run into the error you are having. – Russ Mar 21 '17 at 01:38
  • Hi RUSS any update on this. Still not working for us. – user1389320 Mar 22 '17 at 13:10
0

I have two methods I use to create the checksum: GetChecksum(string) and GetMD5Hash(MD5, string). This approach worked for TY2015, and I expect it to work for TY2016. IIRC, I took this approach directly from MSDN.

The string I pass into the GetChecksum method is the contents of the Form Data Attachment. In my process, I output the XML document into the file system for audit purposes, so the attachment is a physical file for me to use and reference. I read the attachment into a string variable using File.ReadAllText(string path) method.

After generating the checksum my process also will check the checksum against the database and return whether or not that checksum exists (meaning it was used by another form). In the case where this is true, then I update the Contact Suffix, regenerate the Form Data and then regenerate the checksum; this is per the IRS rules for transmission.

This is what is currently working for me, and hopefully this helps you.

Application Callers:
This is what I am doing to call the Checksum calculation functions/routines. It should be noted, I am physically writing each Form Data XML file to the File System, then reading from that.

string AttachmentFileContents = "";

AttachmentFileContents = File.ReadAllText(FormDataFilePath);

string checkSumAugmentationNumber = new Checksum().GetChecksum(AttachmentFileContents);

Checksum Methods:
These are the two methods I use for Checksum Calculation.

public string GetChecksum(string stringToEncrpyt)
{
    string hash = "";

    using(MD5 md5Hash = MD5.Create())
    {
        hash = GetMD5Hash(md5Hash, stringToEncrpyt);
    }

    return hash;
}

private string GetMD5Hash(MD5 md5Hash, string input)
{
    byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < data.Length; i++)
    {
        sb.Append(data[i].ToString("x2"));
    }

    return sb.ToString();
}
Russ
  • 678
  • 8
  • 26
  • We tried the above way of the solution, it's not working, the same error repeated. – user1389320 Feb 28 '17 at 15:12
  • We are used A2A process. Please do the needfull. – user1389320 Feb 28 '17 at 15:18
  • Please edit your original post to include the application code you have which is creating your checksum. Maybe that will help me help you. However, the code I provided above has been working without issue since last year's transmission. It is very simple and a slightly modified example straight from Microsoft's sample. – Russ Mar 23 '17 at 17:11
  • public static string ComputeChecksumByFilePath(string path) { string checksumStr = ""; using (var md5 = MD5.Create()) { using (var stream = File.OpenRead(path)) { byte[] check = md5.ComputeHash(stream); checksumStr = BitConverter.ToString(check).Replace("-", string.Empty); } } return checksumStr; } – user1389320 Mar 24 '17 at 16:46
  • I have mentioned checksum logic. It's working for me AATS upload. But i have working AIR a2a aca same checksum logic, IRS return checksum augumention error – user1389320 Mar 24 '17 at 16:49
  • I have added more code to my post. One thing I noticed that you are doing is that you appear to be doing a lot more work calculating `checksumStr`. I am not replacing any characters in mine. The value that I get from the hash, in my case, is both being written to a database and transmitted. – Russ Mar 24 '17 at 20:31
  • Russ Mar, We have tried with the code you given to calculate the checksum, still we are facing the same error through A2A . – user1389320 Mar 29 '17 at 15:16