ConvertCSV

Finance file converter

pain.001 (SEPA Payments) to CSV 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.

  • No signup
  • Files stay on your device
  • Transaction preview
  • Download ready

1 · Source

Add your XML file

.xml.csv

2 · Result

Output preview

Nothing converted yet

A sample XML file is loaded — press “Convert to CSV” to see how the output looks.

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.

Check before you import

Each conversion shows the parsed transactions with money in, money out, and date range, plus warnings about ambiguous dates or missing account details.

Private browser workflow

PDFs and text files are read by your browser and never sent to a server. Close the tab and the data is gone.

pain.001 to CSV Converter

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.

Key features

  • Lists each CdtTrfTxInf transaction in the file as one CSV row.
  • Reads the requested execution date from each payment block.
  • Keeps the creditor IBAN and remittance text together in Memo.
  • Uses the end-to-end id as the ID so the row can be matched to the invoice.
  • Runs in the browser with no upload.

About the pain.001 XML to CSV format

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.

How it works

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.

Common use cases

  • A finance manager checks a SEPA payment batch of 200 supplier payments before the bank processes it.
  • A controller compares the total of the batch with the approved list of invoices.
  • An accounts payable clerk finds which payee in a batch has the wrong IBAN by searching the CSV.

How to use this tool

  1. Export the pain.001 file from your payment software or download it from the bank’s file folder.
  2. Open the pain.001 to CSV converter and upload the .xml file or paste its text.
  3. Check the preview: the row count should match the number of payments in the batch.
  4. Download the CSV and compare the total with the approved amount before the file is sent.

Example

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,Payment

Tips for best results

  • Sort by Amount to see the largest payments first, then check those against the approval.
  • Search the Memo column for an invoice number to find the payment that matches it.
  • Compare the row count with the number of transactions the batch reports. The CSV lists transactions, not the batch control totals.
  • Keep the original XML with the approval record. The file is what the bank will process.

Common pitfalls

Expecting 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.

Frequently asked questions

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.