ValidateFin
Volver al blog
·Actualizado 11 mar 2026·Guía·Por Eliel Nicaise

Entender el formato SEPA pain.001: una guía completa

El archivo pain.001 es el formato estándar para las transferencias de crédito SEPA. En esta guía explicamos su estructura XML, los campos obligatorios y los errores comunes que hay que evitar.

¿Qué es pain.001?

pain.001 (Payment Initiation) es el mensaje XML estandarizado por el EPC (European Payments Council) para iniciar transferencias de crédito SEPA. Lo utilizan las empresas para transmitir órdenes de pago a su banco.

Este formato se basa en el estándar ISO 20022 y forma parte de la familia de mensajes Customer Credit Transfer Initiation. Es aceptado por todos los bancos de la zona SEPA, que abarca 36 países.

El pain.001 ha reemplazado en gran medida a los formatos nacionales de pago más antiguos (como CFONB en Francia, DTA en Alemania y CLIEOP en los Países Bajos). Un único archivo pain.001 puede contener miles de transacciones de pago individuales, lo que lo convierte en el estándar para el procesamiento por lotes de nóminas, pagos a proveedores y operaciones de tesorería. Su formato complementario, pain.008, gestiona el flujo inverso: los adeudos directos SEPA (SDD) para cobrar dinero a los deudores.

Estructura del archivo XML

Un archivo pain.001 se estructura en tres niveles: GroupHeader (información global), PaymentInformation (información de adeudo) y CreditTransferTransactionInformation (detalles de cada transferencia):

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>MSG-20260210-001</MsgId>
      <CreDtTm>2026-02-10T10:00:00</CreDtTm>
      <NbOfTxs>3</NbOfTxs>
      <CtrlSum>4500.00</CtrlSum>
      <InitgPty><Nm>ACME SA</Nm></InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>PMT-001</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <ReqdExctnDt><Dt>2026-02-12</Dt></ReqdExctnDt>
      <Dbtr><Nm>ACME SA</Nm></Dbtr>
      <DbtrAcct>
        <Id><IBAN>BE68539007547034</IBAN></Id>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId><BIC>GEBABEBB</BIC></FinInstnId>
      </DbtrAgt>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>INV-2026-001</EndToEndId>
        </PmtId>
        <Amt><InstdAmt Ccy="EUR">1500.00</InstdAmt></Amt>
        <CdtrAgt>
          <FinInstnId><BIC>ABNANL2A</BIC></FinInstnId>
        </CdtrAgt>
        <Cdtr><Nm>Supplier NV</Nm></Cdtr>
        <CdtrAcct>
          <Id><IBAN>NL91ABNA0417164300</IBAN></Id>
        </CdtrAcct>
      </CdtTrfTxInf>
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

El elemento raíz debe incluir el espacio de nombres XML correcto (xmlns) correspondiente a la versión utilizada. El GroupHeader aparece exactamente una vez y contiene el ID del mensaje, la marca de tiempo de creación, el número de transacciones y la suma de control. Cada bloque PmtInf agrupa las transacciones que comparten la misma cuenta de deudor y fecha de ejecución. Dentro de cada PmtInf, uno o más elementos CdtTrfTxInf describen las transferencias de crédito individuales.

Campos obligatorios

Estos son los campos esenciales requeridos en cualquier archivo pain.001 válido:

  • MsgIdIdentificador único del mensaje (máx. 35 caracteres, único por envío)
  • CreDtTmFecha y hora de creación en formato ISO 8601 (p. ej. 2026-02-10T10:00:00)
  • NbOfTxsNúmero total de transacciones en el archivo
  • CtrlSumSuma de control: total de todos los importes de las transferencias
  • IBANIBAN del deudor y de cada acreedor en formato europeo estándar
  • PmtInfIdIdentificador de información de pago — único dentro del archivo. Identifica un grupo de transacciones que comparten el mismo deudor y fecha de ejecución. Utilizado para la conciliación.
  • PmtMtdMétodo de pago: 'TRF' para transferencia de crédito. Este campo indica al banco qué tipo de instrucción SEPA debe ejecutar.
  • ReqdExctnDtFecha de ejecución solicitada en formato AAAA-MM-DD. Debe ser un día hábil bancario futuro. Los bancos suelen aceptar fechas hasta 30 días en el futuro.
  • DbtrAcct / IBANIBAN del deudor — la cuenta a cargar. Debe superar la validación de suma de verificación mod-97 y corresponder a una cuenta registrada para SEPA con su banco.
  • EndToEndIdIdentificador de extremo a extremo para cada transacción (máx. 35 caracteres). Recorre toda la cadena de pago y aparece en el extracto bancario del acreedor. Fundamental para la conciliación.

Errores comunes

Estos errores se encuentran frecuentemente durante la validación:

CtrlSum incorrecto

La suma de control no coincide con la suma de los importes individuales. Compruebe el redondeo (máx. 2 decimales).

IBAN no válido

Un IBAN mal formado o con suma de verificación incorrecta. Utilice un validador de IBAN antes de integrar los datos.

Fecha de ejecución en el pasado

El ReqdExctnDt (fecha de ejecución solicitada) debe ser hoy o una fecha futura.

MsgId duplicado

Los bancos rechazan archivos con un MsgId ya procesado. Utilice una combinación de marca de tiempo y número de secuencia único. Nunca reutilice MsgIds, incluso en diferentes relaciones bancarias.

Versión de espacio de nombres incorrecta

El espacio de nombres XML debe coincidir con la versión esperada por su banco. Usar el espacio de nombres pain.001.001.03 con una estructura pain.001.001.09 causará un error de validación de esquema. Confirme con su banco qué versión admiten.

Caracteres especiales en campos de texto

SEPA solo permite un conjunto de caracteres limitado en campos de texto: a-z, A-Z, 0-9 y algunos caracteres especiales (/ - ? : ( ) . , ' + espacio). Los caracteres con tilde como ä, ö, ü, é, ñ deben transliterarse. El símbolo del euro (€) no está permitido en campos de texto.

Versiones de pain.001: ¿cuál debería usar?

El formato pain.001 ha evolucionado a través de varias versiones desde su introducción. Cada versión añade nuevos campos y capacidades manteniendo la compatibilidad hacia atrás. Su banco puede admitir una o más versiones — consulte siempre su guía de implementación.

VersiónEspacio de nombresAñoCambios clave
pain.001.001.03urn:iso:std:iso:20022:tech:xsd:pain.001.001.032009Versión SEPA original, aún ampliamente soportada. Campos básicos de transferencia de crédito.
pain.001.001.09urn:iso:std:iso:20022:tech:xsd:pain.001.001.092019Añade información de remesa estructurada, informes regulatorios y códigos de propósito. Recomendación actual del EPC.
pain.001.001.11urn:iso:std:iso:20022:tech:xsd:pain.001.001.112023Última versión ISO. Soporte LEI mejorado, campos de dirección adicionales. La adopción varía según el banco.

ValidateFin admite las tres versiones principales. Para nuevas implementaciones, se recomienda pain.001.001.09, ya que ofrece el mejor equilibrio entre funcionalidades y compatibilidad bancaria. Si su banco aún requiere .03, ValidateFin validará contra ese esquema. Pruebe siempre con su banco antes de cambiar de versión en producción.

Buenas prácticas para generar archivos pain.001

Siga estas pautas probadas para minimizar rechazos y garantizar un procesamiento de pagos fluido:

  • Valide antes de enviarValide siempre su archivo pain.001 contra el esquema XSD antes de subirlo a su banco. ValidateFin detecta el 100% de los errores estructurales y la mayoría de las infracciones de reglas de negocio en segundos.
  • Use identificadores únicos de forma consistenteMsgId, PmtInfId y EndToEndId deben seguir una convención de nomenclatura predecible (p. ej. prefijos basados en fecha). Esto simplifica enormemente la conciliación y la resolución de problemas.
  • Agrupe las transacciones con criterioAgrupe los pagos por fecha de ejecución y divisa en el mismo bloque PmtInf. Esto reduce las comisiones de procesamiento en algunos bancos y hace la conciliación más limpia.
  • Gestione correctamente la codificación de caracteresGenere siempre los archivos en UTF-8. Translitere los caracteres no SEPA (é→e, ß→ss, ü→ue) antes de construir el XML. Los caracteres sin transliterar causan rechazos silenciosos en algunos bancos.
  • Pruebe primero con lotes pequeñosCuando implemente un nuevo generador pain.001 o cambie de versión, comience con un archivo que contenga 2-3 transacciones de prueba. Verifique que el banco las acepta y procesa correctamente antes de enviar volúmenes de producción.

Para operaciones de pago de alto volumen, considere implementar la validación automatizada como parte de su pipeline de pagos. Genere el XML, valide con ValidateFin (o integre la validación de esquema en su código) y solo envíe al banco si la validación pasa. Esto evita archivos rechazados y la intervención manual que requieren.

Valide su archivo pain.001

Nuestra herramienta de validación SEPA comprueba su archivo con el esquema XSD oficial del EPC y muestra el detalle de cada transacción. Ningún archivo se envía a nuestros servidores.

Validar mi archivo SEPA

Preguntas frecuentes

¿Qué es un archivo SEPA pain.001?

Un archivo SEPA pain.001 es un documento XML conforme a ISO 20022 que inicia pagos de transferencia de crédito. Contiene información del deudor, datos del acreedor, importes y referencias de pago. Los bancos utilizan este formato estandarizado para procesar pagos por lotes en la zona SEPA de 36 países. Un único archivo puede contener miles de transferencias individuales.

¿Cuáles son los campos obligatorios en un archivo pain.001?

Los campos obligatorios incluyen MsgId (identificador del mensaje, máx. 35 caracteres), CreDtTm (marca de tiempo de creación), NbOfTxs (número de transacciones), CtrlSum (suma de todos los importes), InitgPty (parte iniciadora), PmtInfId (ID de información de pago), PmtMtd (método de pago — TRF), ReqdExctnDt (fecha de ejecución), Dbtr (nombre del deudor), DbtrAcct (IBAN del deudor) y, para cada transacción: CdtrAcct (IBAN del acreedor), InstdAmt (importe con divisa) y EndToEndId (referencia de extremo a extremo).

¿Cómo puedo validar mi archivo SEPA pain.001 en línea?

Use la herramienta gratuita de validación SEPA de ValidateFin para comprobar su archivo pain.001 contra los esquemas XSD oficiales del EPC. Suba su archivo XML — toda la validación se realiza localmente en su navegador sin transmitir datos a ningún servidor, garantizando el pleno cumplimiento del RGPD. La herramienta valida la estructura, IBANs, BICs, importes y sumas de control.

¿Cuál es la diferencia entre pain.001 y pain.008?

Pain.001 (Customer Credit Transfer Initiation) es para transferencias bancarias salientes — usted envía dinero a acreedores. Pain.008 (Customer Direct Debit Initiation) es para cobrar dinero a deudores — usted retira fondos de sus cuentas mediante un mandato firmado. Ambos son formatos XML ISO 20022 procesados por los bancos en la zona SEPA, pero tienen diferentes campos obligatorios y reglas de negocio.

¿Qué versión de pain.001 debería usar?

Para nuevas implementaciones, se recomienda pain.001.001.09, ya que es la recomendación actual del EPC y ofrece información de remesa estructurada, códigos de propósito y campos de informes regulatorios. Pain.001.001.03 sigue siendo ampliamente soportado para sistemas heredados. Pain.001.001.11 es la última versión ISO, pero el soporte bancario varía. Consulte siempre con su banco qué versiones aceptan.

¿Qué caracteres están permitidos en los campos de texto SEPA pain.001?

Los archivos de pago SEPA utilizan un conjunto de caracteres restringido definido por el EPC: a-z, A-Z, 0-9 y los caracteres especiales / - ? : ( ) . , ' + y espacio. Los caracteres nacionales con acentos (é, ü, ñ, etc.) deben transliterarse (e→e, u→u, n→n). El símbolo del euro (€) y otros símbolos de divisas no están permitidos en campos de texto — los importes utilizan el elemento InstdAmt con el atributo Ccy.

¿Cómo funciona el CtrlSum (suma de control) en pain.001?

El CtrlSum es una suma de verificación que debe igualar exactamente la suma de todos los valores InstdAmt individuales de todas las transacciones del archivo, redondeada a 2 decimales. Sirve como verificación de integridad — si existe incluso una diferencia de €0,01 entre el CtrlSum y la suma real, el archivo completo es rechazado. Calcúlelo sumando los importes previamente redondeados, no redondeando la suma total a posteriori.

¿Puede un archivo pain.001 contener transacciones en múltiples divisas?

Las transferencias de crédito SEPA estándar (SCT) son solo en EUR. Sin embargo, el propio formato pain.001 admite múltiples divisas a través del atributo Ccy de InstdAmt. Algunos bancos aceptan transacciones no EUR en pain.001 para pagos internacionales, pero esto depende de la implementación de su banco. Para pagos SEPA puros dentro de la zona SEPA, utilice siempre EUR.

¿Cuántas transacciones puede contener un único archivo pain.001?

El estándar ISO 20022 no define un máximo, pero los límites prácticos dependen de su banco. La mayoría de los bancos aceptan archivos con hasta 100.000 transacciones. Los archivos muy grandes (>50.000 transacciones) pueden tardar más en procesarse y algunos bancos recomiendan dividirlos. El límite de tamaño de archivo es típicamente de 20-50 MB dependiendo del canal de carga del banco.

¿Qué ocurre si mi banco rechaza un archivo pain.001?

Cuando un banco rechaza un archivo pain.001, se recibe un pain.002 (Payment Status Report) indicando el motivo del rechazo. Los códigos de rechazo comunes incluyen AC01 (número de cuenta incorrecto), AM05 (pago duplicado), DT01 (fecha no válida) y FF01 (formato de archivo no válido). Para prevenir rechazos, valide siempre su archivo con ValidateFin antes del envío — la herramienta detecta errores estructurales, IBANs no válidos y discrepancias en la suma de control.