Manifest-025 'ChecksumAugmentationNum' Issue on .net

799 Views Asked by At

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.

2

There are 2 best solutions below

4
Russ On

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.

7
Russ On

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();
}