pain.001.001.03 — nine-character BIC
Un pain.001 cuyo BIC del banco del beneficiario tiene nueve caracteres. La norma ISO 9362 admite 8 (entidad + país + localidad) u 11 (más un código de sucursal de 3 caracteres), nunca 9 ni 10. «BNPAFRPPX» es el aspecto típico de un código de sucursal truncado o rellenado a mano, y es el defecto que ambas capas detectan: el XSD oficial lo rechaza por su patrón de BIC y la capa de reglas por su longitud.
pain.001.001.03 — Inválido
Un pain.001 cuyo BIC del banco del beneficiario tiene nueve caracteres. La norma ISO 9362 admite 8 (entidad + país + localidad) u 11 (más un código de sucursal de 3 caracteres), nunca 9 ni 10. «BNPAFRPPX» es el aspecto típico de un código de sucursal truncado o rellenado a mano, y es el defecto que ambas capas detectan: el XSD oficial lo rechaza por su patrón de BIC y la capa de reglas por su longitud.
Lo que muestra este fichero
Un pain.001 cuyo BIC del banco del beneficiario tiene nueve caracteres. La norma ISO 9362 admite 8 (entidad + país + localidad) u 11 (más un código de sucursal de 3 caracteres), nunca 9 ni 10. «BNPAFRPPX» es el aspecto típico de un código de sucursal truncado o rellenado a mano, y es el defecto que ambas capas detectan: el XSD oficial lo rechaza por su patrón de BIC y la capa de reglas por su longitud.
| Transacciones | 1 |
|---|---|
| Total | 640,00 € |
| Esquema | SEPA |
| Fecha en el fichero | 2026-03-06 |
Los defectos que contiene
- BICInvalid BIC for creditor Boulangerie Petit SARL: BNPAFRPPX
Citado literalmente del validador, sin parafrasear.
Todas las partes, IBAN e importes siguientes son ficticios. Los IBAN son estructuralmente válidos —superan el mod-97— pero no corresponden a ninguna cuenta real.
Contenido del fichero
<?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>
Cómo sabemos que estos resultados se sostienen
Cada fichero de esta biblioteca pasa por el propio validador del sitio en cada build. El resultado esperado indicado arriba lo verifica un test automatizado: si un fichero dejara de coincidir con lo que afirma esta página, el build fallaría. Dos fixtures heredadas se repararon así antes de publicarse: tres IBAN no superaban el mod-97 y varios nombres usaban caracteres fuera del juego SEPA básico.
Transferencia SEPA (pain.001)
- pain.001.001.03 — valid credit transfer
- pain.001.001.09 — valid, hybrid address
- pain.001.001.03 — CtrlSum mismatch
- pain.001.001.03 — invalid IBAN
- pain.001.001.03 — NbOfTxs mismatch
- pain.001.001.03 — unstructured address after 2026-11-15
- pain.001.001.11 — valid, fully structured address, executed after 2026-11-15
- pain.001.001.09 — valid, two payment batches with different execution dates
- pain.001.001.03 — accent and ampersand outside the SEPA character set
- pain.001.001.03 — 250 transfers, high-volume payroll run
- pain.001.001.03 — unstructured address, executed before 2026-11-15 (warning only)