A Chase checking statement is not one table. It opens with a CHECKING SUMMARY block and then breaks the month into separately headed all-caps sections — DEPOSITS AND ADDITIONS, CHECKS PAID, ATM & DEBIT CARD WITHDRAWALS and their siblings — each with its own column set, and a DAILY ENDING BALANCE table sitting apart from the transactions entirely. There is no running balance beside each line, which removes the easiest way to catch a missing row. Amounts sit in a single AMOUNT column with direction implied by the section heading above them, and CHECKS PAID adds a CHECK NO. and a DATE PAID column the other sections do not have. Get the section boundaries wrong and every amount underneath inherits the wrong sign.
- Section headers are read as structure, not as transactions, so a "checks paid" heading never becomes a phantom row.
- Direction is taken from the section a row belongs to and written into the Debit or Credit column, keeping withdrawals and deposits apart.
- The daily ending balance table is treated as a check, not as extra transactions to be appended to the file.
- The summary block's beginning and ending balances are used to verify the conversion, so a dropped row shows up as a DISCREPANCY.