ValidateFin

pain.001.001.03 — nine-character BIC

A pain.001 whose creditor agent BIC is nine characters long. ISO 9362 allows 8 (institution + country + location) or 11 (plus a 3-character branch code) — never 9 or 10. "BNPAFRPPX" is what a truncated or hand-padded branch code looks like, and it is the one defect in this file that both layers catch: the official XSD rejects it on its BIC pattern, and the rulebook layer rejects it on its length.

pain.001.001.03 — Invalid

A pain.001 whose creditor agent BIC is nine characters long. ISO 9362 allows 8 (institution + country + location) or 11 (plus a 3-character branch code) — never 9 or 10. "BNPAFRPPX" is what a truncated or hand-padded branch code looks like, and it is the one defect in this file that both layers catch: the official XSD rejects it on its BIC pattern, and the rulebook layer rejects it on its length.

SEPA Credit Transfer (pain.001) pain.001.001.03 ISO 20022 / ISO 9362Expected result: Invalid — 2 errors

What this file shows

A pain.001 whose creditor agent BIC is nine characters long. ISO 9362 allows 8 (institution + country + location) or 11 (plus a 3-character branch code) — never 9 or 10. "BNPAFRPPX" is what a truncated or hand-padded branch code looks like, and it is the one defect in this file that both layers catch: the official XSD rejects it on its BIC pattern, and the rulebook layer rejects it on its length.

Transactions1
Total€640.00
SchemeSEPA
Date in the file2026-03-06

The defects it carries

  • BICInvalid BIC for creditor Boulangerie Petit SARL: BNPAFRPPX

Quoted verbatim from the validator, not paraphrased.

Last verified: License: CC-BY-4.0

Every party, IBAN and amount below is fictitious. The IBANs are structurally valid — they pass the mod-97 check — but they belong to no real account.

File content

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ValidateFin sample file — SEPA Credit Transfer, pain.001.001.03, BROKEN ON PURPOSE.
  Expected validation result: INVALID — the creditor agent BIC is nine characters long.

  A BIC is 8 characters (institution + country + location) or 11 (plus a 3-character
  branch code). NEVER 9 or 10. "BNPAFRPPX" is what a truncated or hand-padded branch
  code looks like: it survives a naive length>=8 test and is rejected by the bank.
  Everything else in this file is correct — IBANs pass mod-97, the totals add up.

  All parties and account numbers are fictitious.
  Reference page: https://validatefin.com/en/resources/samples/sepa-pain001-invalid-bic
  License: CC-BY-4.0
-->
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>CT-BADBIC-2026-0001</MsgId>
      <CreDtTm>2026-03-02T08:00:00</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>640.00</CtrlSum>
      <InitgPty>
        <Nm>ACME Corporation SA</Nm>
      </InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>PMT-BADBIC-20260302</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>640.00</CtrlSum>
      <PmtTpInf>
        <SvcLvl>
          <Cd>SEPA</Cd>
        </SvcLvl>
      </PmtTpInf>
      <ReqdExctnDt>2026-03-06</ReqdExctnDt>
      <Dbtr>
        <Nm>ACME Corporation SA</Nm>
      </Dbtr>
      <DbtrAcct>
        <Id>
          <IBAN>FR7630006000011234567890189</IBAN>
        </Id>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId>
          <BIC>BNPAFRPP</BIC>
        </FinInstnId>
      </DbtrAgt>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>E2E-BADBIC-001</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">640.00</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BIC>BNPAFRPPX</BIC>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>Boulangerie Petit SARL</Nm>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>FR1420041010050500013M02606</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Facture BP-2026-0117 - fournitures</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

How we know these results hold

Every file in this library is run through the site's own validator on each build. The expected result stated above is asserted by an automated test — if a file stopped matching what this page claims, the build would fail. Two inherited fixtures were repaired this way before publication: three IBANs failed the mod-97 check and several names used characters outside the basic SEPA character set.

SEPA Credit Transfer (pain.001)