SFTP Bank format
This page specifies the bank transaction files you send to Monk over SFTP, for Cash App. Each file lists your bank transactions, and Monk matches the incoming payments in it to your open invoices, the same way it matches payments from any other bank connection. For how the integration works, see File integration (SFTP), and for how to connect and authenticate, see Connecting. Bank files are separate from the batches your ERP sends. They have their own folder, need no manifest, and can arrive on their own schedule, such as when your bank’s prior-day file is ready each morning. If your bank exports transactions in any other format, whether CSV or its own, talk to your Monk contact.Folders and file names
Upload each file directly into the bank folder, with no subfolders. Each file
is imported on its own, and file names are lowercase:
- Files are named
<timestamp>_transactions.csv, where<timestamp>is when your job produced the file, in UTC, asyyyymmdd-hhmmss. Each file has its own timestamp, and Monk processes files in timestamp order. - A file whose name Monk already processed is ignored. File names are case-sensitive, so a name with uppercase letters is not picked up.
- Upload each file under a temporary name ending in
.tmpand rename it once the upload is complete. Monk ignores.tmpfiles, so it never reads a partly written file.
File conventions
The CSV conventions are the same as for the files your ERP sends; see File conventions. In short: CSV (RFC 4180), UTF-8, comma-delimited, with a header row using the exact column names below, in any order. Columns not on this page are ignored and listed as warnings. In addition:posted_atas an ISO 8601 date and time with a time zone, such as2026-10-19T14:32:00Z. If your bank reports only a date, send midnight in your bank’s time zone, such as2026-10-19T00:00:00-05:00.- Amounts as decimals in major units with a dot, such as
1234.50, with no currency symbols or thousands separators, below 100,000,000.00. Amounts are signed: positive for money into the account, such as a customer payment, and negative for money out.
Columns
One row per transaction, as it appears on your bank statement.
Monk imports rows marked
pending or processing but does not create a
payment-reconciliation task for them yet. When a later file re-sends the same
transaction as posted, Monk updates it and creates its task.
- Money out. Send every transaction, including debits. Monk imports them with the rest, but only matches money in to invoices.
- Who paid. Monk uses
counterparty,bank_description, andnoteto identify the customer who paid. Whencounterpartyis blank, Monk reads the payer frombank_descriptionwhere it can. - Invoice references. Monk matches invoice numbers and amounts found in
note,memoandbank_description, so pass the bank’s remittance text through as it is.
Example
Sending transactions again
Monk recognizes a transaction by the date of itsposted_at, its amount, and
its counterparty (compared ignoring case and extra spaces). When several rows
in one file match on all of these, such as two equal payments from the same
customer on the same day, Monk tells them apart by their order in the file.
A row that matches a transaction Monk imported from an earlier file on all of
these, and also on memo and bank_description, is the same transaction sent
again, such as when two of your bank’s files overlap. It is not imported twice:
Monk updates that transaction’s note and status from the latest file and
counts the row as already imported in sync history.
A row that matches on posted_at, amount, and counterparty but has a
different memo or bank_description is never merged: Monk imports it as a
separate transaction and flags both for review in sync history. If your bank
rewrites descriptions between files, these flags show where.
Files only add or update transactions, so a transaction missing from a later
file stays in Monk. Do not change a transaction’s counterparty between files,
or Monk imports it as a new transaction.
Validation
A rejected file blocks nothing. Fix it and send it again with a new
timestamp. Every file appears in Monk’s sync history with the rows accepted
and rejected, any warnings, and a downloadable error report. During setup,
upload test files to validate your export without importing anything.