Designed for finance exports
The parser recognises date, description, amount, debit/credit, memo, category, and transaction id fields, including headers like Narration or Withdrawal Amt. used by many banks.
Finance file converter
List the payments in a pain.001 credit-transfer file as CSV rows for review. Upload a file or paste its contents, check the parsed transactions, then download the CSV file.
1 · Source
2 · Result
Nothing converted yet
A sample XML file is loaded — press “Convert to CSV” to see how the output looks.
The parser recognises date, description, amount, debit/credit, memo, category, and transaction id fields, including headers like Narration or Withdrawal Amt. used by many banks.
Each conversion shows the parsed transactions with money in, money out, and date range, plus warnings about ambiguous dates or missing account details.
PDFs and text files are read by your browser and never sent to a server. Close the tab and the data is gone.
A pain.001 file is the ISO 20022 customer credit transfer initiation message. It is the file a company builds to ask its bank to pay a batch of SEPA transfers, and it lists each payment with a payee name, an IBAN, an amount, an end-to-end reference and a remittance text. Before a batch is sent, someone has to check it, and a long XML file is a poor place to do that.
This pain.001 to CSV Converter lists every credit transfer in the file as a CSV row. Each row has the requested execution date, the creditor name as the description, the amount shown as a negative outgoing payment, the creditor IBAN and remittance text in the memo, and the end-to-end id in the ID column. The file is read in your browser and is not uploaded.
A pain.001 document holds one or more payment information blocks (PmtInf). Each block has a requested execution date (ReqdExctnDt), a debtor account, and one or more credit transfer transactions (CdtTrfTxInf). Each transaction has an instructed amount (InstdAmt) with a currency attribute, the creditor (Cdtr) and creditor account (CdtrAcct), and optional remittance lines (RmtInf / Ustrd).
The converter reads the execution date from each PmtInf block and applies it to that block’s transactions, so a file with several dates produces rows with several dates. Namespace prefixes are accepted, so files from different banks and software packages read the same way.
The converter finds each PmtInf block and reads its execution date. Within each block it reads every CdtTrfTxInf transaction, pulls out the creditor name, the instructed amount, the creditor IBAN, the remittance text and the end-to-end id, then writes one row.
Amounts are written as negative values, because a pain.001 file instructs outgoing payments from the debtor account.
pain.001 (one payment, trimmed)
<PmtInf>
<ReqdExctnDt><Dt>2026-05-10</Dt></ReqdExctnDt>
<CdtTrfTxInf>
<PmtId><EndToEndId>INV-4411</EndToEndId></PmtId>
<Amt><InstdAmt Ccy="EUR">250.00</InstdAmt></Amt>
<Cdtr><Nm>Supplier Office GmbH</Nm></Cdtr>
<CdtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></CdtrAcct>
<RmtInf><Ustrd>Invoice 4411 March services</Ustrd></RmtInf>
</CdtTrfTxInf>
</PmtInf>CSV
date,description,amount,memo,category,id,type
2026-05-10,Supplier Office GmbH,-250.00,Invoice 4411 March services | IBAN DE89370400440532013000,,INV-4411,PaymentExpecting the batch total in the file. The converter lists transactions and does not check the control sum (CtrlSum) in the header against them. Add the amounts yourself and compare.
Expecting the payment to have been sent. A pain.001 file is an instruction, not a confirmation. Bank status reports (pain.002) are separate files.
Expecting the debtor account in each row. The debtor account sits in the PmtInf block and is not repeated on every row.
Reading the minus sign as an error. Outgoing payments are shown as negative amounts, so the total of the column is the net outflow.
Does the converter check that the IBANs are valid?
No. It copies the IBAN as written. Validation rules belong to the bank and to your payment software, so check unusual IBANs before the batch is sent.
Is the currency shown?
The amount is written without the currency code. If a batch mixes currencies, check the Ccy attribute in the XML before you add the column.
For more background on data formats and conversion workflows, read our format guides.