201 on a commit, 200 on a dry run: { dry_run, layout, header, columns, confident, date_format, date_format_ambiguous, flip_sign, sample[][], column_count, row_count, duplicate_count, rows[] (first 200: line, date, amount_cents, name, note, account_name, duplicate, envelope_id), unreadable[] ({ line, reason }), unreadable_count, accounts[] ({ name, account_id|null, rows }), categories[]|null }, and on a commit also imported, duplicate_lines[], transaction_ids[], adopted[] (and filed when file_by_category; transfers, the rows whose payee is Transfer : <account> for another hand-kept account in this budget, landed as a transfer between the two; the other half, in this file or a later one, is skipped as a duplicate). Send dry_run: true first and show the person what it read: layout names a recognised export (ynab | rbc | chase | amex | headed | headerless); confident: false means the columns were guessed from content: confirm or send columns (zero-based indexes: date, payee, amount OR outflow+inflow, memo, category, category_group, account, external_id, cleared), which replaces detection. Dates: year-first and month-name forms read one way; numeric slash dates are month-first unless the file proves otherwise. When it cannot, date_format_ambiguous is true and a commit is refused (400) until you send date_format: mdy|dmy. Amounts accept $, thousands commas, (19.00), CR/DR; a decimal comma or a fraction of a cent is unreadable, never rounded. Amex writes charges positive, so its flip_sign defaults true; send flip_sign to override for any file. Account: account_id (an existing manual account), or account (a name; created if new), or account_from_file: true to send each row to its Account column (YNAB). file_by_category: true files each row whose category names exactly one open envelope in the budget (by name, told apart by category group) through the ordinary filing path; others wait in the inbox. The commit is POST /v1/transactions/import per account underneath: same identity, same re-import safety (a re-import reports every row in duplicate_lines), same free-plan cap, same bill adoption. Up to 5,000 rows and 1 MB per file.