Financial institutions have considerable flexibility following the OFX standard. So the program cannot depend on specific information being in a given field. In the OFX standard, the mandatory field,
<NAME>, can be the “Name of payee or description of transaction.” An optional field,
<EXTDNAME>, can be an “Extended name of payee or description of transaction.” There is no definition of what constitutes an extended name or description.
So sometimes you get a name only in one field, sometimes split across two, and sometimes mixed with transaction description information, even though there is an earlier mandatory field,
<TRNTYPE>, that describes the transaction. To make things more complicated, those fields can be followed by another optional field,
<MEMO>, containing “Extra information (not in
<NAME>).” So it is possible for a bank to put the transaction description into
<NAME> and the payee into
<MEMO> and still be fully compliant. (And, of course, many institutions are not fully compliant to begin with.)
That’s a lot of detail to explain that different banks could put the seemingly simple information of a payee’s name and transaction description into several different places. And when you import a statement, the program has to pull things from whichever fields that particular bank uses to try to populate a database that has a different structure entirely.
In other words, while the information is “available,” it might not be as available as you would think. In some ways, it is a miracle imports work in most situations.