ValidateFin

camt.053.001.08 — reversal, pending entry, accents

Hecho para el convertidor camt.053 → MT940: reúne las tres cosas que un camt.053 sabe decir y un MT940 no. Un CONTRAASIENTO (RvslInd) — el banco recupera el abono duplicado del apunte 1, que no es un pago en sentido contrario y se convierte en una marca RC, no en un simple adeudo. Un apunte PENDIENTE (Sts=PDNG) — el dinero no se ha movido, así que debe quedar FUERA del MT940 o :60F: ± :61: = :62F: deja de cuadrar; el CSV, que tiene columna Estado, lo conserva. Y «Sté Générale» y «Müller & Co.», con caracteres fuera del juego SWIFT: se adaptan, y la herramienta lo dice. Contabilizado: 10 000,00 + 2 500,00 − 2 500,00 − 1 200,00 = 8 800,00.

camt.053.001.08 — Válido

Hecho para el convertidor camt.053 → MT940: reúne las tres cosas que un camt.053 sabe decir y un MT940 no. Un CONTRAASIENTO (RvslInd) — el banco recupera el abono duplicado del apunte 1, que no es un pago en sentido contrario y se convierte en una marca RC, no en un simple adeudo. Un apunte PENDIENTE (Sts=PDNG) — el dinero no se ha movido, así que debe quedar FUERA del MT940 o :60F: ± :61: = :62F: deja de cuadrar; el CSV, que tiene columna Estado, lo conserva. Y «Sté Générale» y «Müller & Co.», con caracteres fuera del juego SWIFT: se adaptan, y la herramienta lo dice. Contabilizado: 10 000,00 + 2 500,00 − 2 500,00 − 1 200,00 = 8 800,00.

Extracto bancario (camt.052 / 053 / 054) camt.053.001.08 ISO 20022Resultado esperado: Válido

Lo que muestra este fichero

Hecho para el convertidor camt.053 → MT940: reúne las tres cosas que un camt.053 sabe decir y un MT940 no. Un CONTRAASIENTO (RvslInd) — el banco recupera el abono duplicado del apunte 1, que no es un pago en sentido contrario y se convierte en una marca RC, no en un simple adeudo. Un apunte PENDIENTE (Sts=PDNG) — el dinero no se ha movido, así que debe quedar FUERA del MT940 o :60F: ± :61: = :62F: deja de cuadrar; el CSV, que tiene columna Estado, lo conserva. Y «Sté Générale» y «Müller & Co.», con caracteres fuera del juego SWIFT: se adaptan, y la herramienta lo dice. Contabilizado: 10 000,00 + 2 500,00 − 2 500,00 − 1 200,00 = 8 800,00.

Transacciones4
Fecha en el fichero2026-06-30
Última verificación: Licencia: CC-BY-4.0

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 — bank statement, camt.053.001.08.
  Expected validation result: VALID — 4 entries, balances reconcile over the
  BOOKED entries only.

  This file exists for the camt.053 -> MT940 converter. It carries the three
  things a camt.053 can say and an MT940 cannot, all in one statement:

    * a REVERSAL (RvslInd = true on entry 2): the bank claws back the duplicate
      credit of entry 1. It is NOT a payment in the opposite direction — MT940
      has a dedicated mark for it (RC = reversal of credit, RD = reversal of
      debit), and a converter that emitted an ordinary movement would turn one
      cancelled transaction into two unrelated payments.
    * a PENDING entry (Sts = PDNG on entry 4): the money has not moved. MT940
      cannot say "not settled yet", so the entry must be LEFT OUT of the MT940 —
      including it would break :60F: +/- :61: = :62F:. A CSV, which has a Status
      column, keeps it.
    * characters outside the SWIFT "x" set: "Sté Générale", "Müller & Co.".
      MT940 cannot carry them; they are adapted, and the tool says so.

  The arithmetic: OPBD 10 000.00 + 2 500.00 - 2 500.00 - 1 200.00 = CLBD 8 800.00.
  The pending 800.00 is deliberately NOT in it — pending money is not booked money.

  All parties and account numbers are fictitious.
  Reference page: https://validatefin.com/en/resources/samples/camt053-reversal-pending
  License: CC-BY-4.0
-->
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <BkToCstmrStmt>
    <GrpHdr>
      <MsgId>CAMT053-REV-20260630</MsgId>
      <CreDtTm>2026-06-30T22:00:00</CreDtTm>
    </GrpHdr>
    <Stmt>
      <Id>STMT-FR-2026-06</Id>
      <LglSeqNb>6</LglSeqNb>
      <CreDtTm>2026-06-30T22:00:00</CreDtTm>
      <FrToDt>
        <FrDtTm>2026-06-01T00:00:00</FrDtTm>
        <ToDtTm>2026-06-30T23:59:59</ToDtTm>
      </FrToDt>
      <Acct>
        <Id>
          <IBAN>FR7630006000011234567890189</IBAN>
        </Id>
        <Ccy>EUR</Ccy>
        <Nm>Atelier Duval SARL</Nm>
        <Ownr>
          <Nm>Atelier Duval SARL</Nm>
        </Ownr>
        <Svcr>
          <FinInstnId>
            <BICFI>AGRIFRPP</BICFI>
          </FinInstnId>
        </Svcr>
      </Acct>
      <!-- Solde d'ouverture -->
      <Bal>
        <Tp>
          <CdOrPrtry>
            <Cd>OPBD</Cd>
          </CdOrPrtry>
        </Tp>
        <Amt Ccy="EUR">10000.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt>
          <Dt>2026-06-01</Dt>
        </Dt>
      </Bal>
      <!-- Solde de clôture : écritures COMPTABILISÉES uniquement -->
      <Bal>
        <Tp>
          <CdOrPrtry>
            <Cd>CLBD</Cd>
          </CdOrPrtry>
        </Tp>
        <Amt Ccy="EUR">8800.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt>
          <Dt>2026-06-30</Dt>
        </Dt>
      </Bal>
      <!-- Solde disponible : devient le :64: du MT940 -->
      <Bal>
        <Tp>
          <CdOrPrtry>
            <Cd>CLAV</Cd>
          </CdOrPrtry>
        </Tp>
        <Amt Ccy="EUR">8800.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt>
          <Dt>2026-06-30</Dt>
        </Dt>
      </Bal>
      <!-- 1. Virement client reçu — le nom porte des accents -->
      <Ntry>
        <NtryRef>FR-2026-06-001</NtryRef>
        <Amt Ccy="EUR">2500.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Sts>
          <Cd>BOOK</Cd>
        </Sts>
        <BookgDt>
          <Dt>2026-06-08</Dt>
        </BookgDt>
        <ValDt>
          <Dt>2026-06-08</Dt>
        </ValDt>
        <BkTxCd>
          <Domn>
            <Cd>PMNT</Cd>
            <Fmly>
              <Cd>RCDT</Cd>
              <SubFmlyCd>ESCT</SubFmlyCd>
            </Fmly>
          </Domn>
        </BkTxCd>
        <NtryDtls>
          <TxDtls>
            <Refs>
              <AcctSvcrRef>BNKREF-20260608-77</AcctSvcrRef>
              <EndToEndId>FACT-2026-0421</EndToEndId>
            </Refs>
            <RltdPties>
              <Dbtr>
                <Pty>
                  <Nm>Sté Générale Nord SA</Nm>
                </Pty>
              </Dbtr>
              <DbtrAcct>
                <Id>
                  <IBAN>FR1420041010050500013M02606</IBAN>
                </Id>
              </DbtrAcct>
            </RltdPties>
            <RmtInf>
              <Ustrd>Facture 2026-0421 — solde</Ustrd>
            </RmtInf>
          </TxDtls>
        </NtryDtls>
        <AddtlNtryInf>VIREMENT RECU STE GENERALE NORD</AddtlNtryInf>
      </Ntry>
      <!-- 2. CONTRE-PASSEMENT du crédit ci-dessus (doublon) : RvslInd = true.
           En MT940 : RC (reversal of credit), pas un débit ordinaire. -->
      <Ntry>
        <NtryRef>FR-2026-06-002</NtryRef>
        <Amt Ccy="EUR">2500.00</Amt>
        <CdtDbtInd>DBIT</CdtDbtInd>
        <RvslInd>true</RvslInd>
        <Sts>
          <Cd>BOOK</Cd>
        </Sts>
        <BookgDt>
          <Dt>2026-06-09</Dt>
        </BookgDt>
        <ValDt>
          <Dt>2026-06-08</Dt>

160 / 284 lines shown — the complete file is in the download above.

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.

Extracto bancario (camt.052 / 053 / 054)