This is not an exhaustive checklist, but covers some of the not so obvious stuff.
1) A visual inspection of the output X12 document is not enough.
2) Open the EDI output in any editor that can show hex values. If your trading partner expects 0x0A (Linefeed LF), then look for 0a. Ensure that you don’t see 0d in the output)
3) If your trading partner expects CR(Carriage return) followed by LF(Line Feed), then look for 0d followed by 0a.
4) Ensure that the last row (IEA segment) is followed by a segment terminator. (Easy to spot if the segment terminator is ‘~’ or ‘^’, needs more effort if the segment terminator is CR or LF)
5) Some parsers can parse the document even if last segment terminator is not there, but some can’t.
6) If you are posting the document to an FTP server, use a host name instead of the IP address. IP addresses can change, host names will change less frequently.
7) Get the correct directory to which you have to post the files. Use the proper path separator.
8 ) Some partners expect the filename to have your ID, document standard and current time. Get the exact specifications, else the file may be posted, but may not be picked by the recipient.
9) Some EDI Parsers can’t parse the document if it contains an Ampersand (&). Check with your trading partner and replace with space if required.
10) Sometimes the EDI parser can handle the ampersand, but when the partner creates an XML document from the EDI/X12 document, the ampersand may not be properly escaped in the XML, causing further problems.
11) Ensure data is rounded as documented in the SEF. If the SEF says a field is of type N0, ensure that there are no decimal places (ex: 49 instead of 49.0).
12) Ensure there are no blank lines in X12 documents. Sometimes an address might have a new line character. If it is mapped to the output without checks, the generated X12 document will not be parsed by your trading partner.