(I also work in payments. Bank's SFTP sites have under-defined failure modes.)
Don't get me started on sending ASCII as binary to the mainframe to compensate for the EBCDIC formatting. Or the lack of carriage return and line feed characters that cause so many fun issues.
All of that to say that none of it's pretty, but all of it works. The balancing is key as are the extra staff needed to verify them against each other.
(An issue w/ whole file checksums is that there are cases where partial file processing is desirable, but that's not to say there's not use of checksums.)
Or their process gets stuck in an infinite loop and resends you the same message millions of times, etc.
It's obviously not ideal, compared to a well-thought-out purpose-built API and a complete set of tools, but that takes work, and isn't always better faster than the refined hack.