ValidateFin

camt.053.001.08 — entry with no CdtDbtInd

O segundo lançamento tem um valor de 1 200,00 e nenhum <CdtDbtInd>. Em camt.053 os valores são sempre sem sinal: sem o indicador de sentido, o valor nada significa. Duas coisas quebram ao mesmo tempo — o XSD oficial rejeita o ficheiro (CdtDbtInd é obrigatório 1..1 num lançamento) e um parser que passa silenciosamente para CRDT contabiliza +1 200,00 em vez de −1 200,00, ficando a 2 400,00 da verdade, o que a reconciliação de saldos expõe.

camt.053.001.08 — Inválido

O segundo lançamento tem um valor de 1 200,00 e nenhum <CdtDbtInd>. Em camt.053 os valores são sempre sem sinal: sem o indicador de sentido, o valor nada significa. Duas coisas quebram ao mesmo tempo — o XSD oficial rejeita o ficheiro (CdtDbtInd é obrigatório 1..1 num lançamento) e um parser que passa silenciosamente para CRDT contabiliza +1 200,00 em vez de −1 200,00, ficando a 2 400,00 da verdade, o que a reconciliação de saldos expõe.

Extrato bancário (camt.052 / 053 / 054) camt.053.001.08 ISO 20022Resultado esperado: Inválido — 3 erros

O que este ficheiro mostra

O segundo lançamento tem um valor de 1 200,00 e nenhum <CdtDbtInd>. Em camt.053 os valores são sempre sem sinal: sem o indicador de sentido, o valor nada significa. Duas coisas quebram ao mesmo tempo — o XSD oficial rejeita o ficheiro (CdtDbtInd é obrigatório 1..1 num lançamento) e um parser que passa silenciosamente para CRDT contabiliza +1 200,00 em vez de −1 200,00, ficando a 2 400,00 da verdade, o que a reconciliação de saldos expõe.

Transações3
Data no ficheiro2026-02-28

Os defeitos que contém

  • CdtDbtIndÉcriture PL-2026-02-0002 : CdtDbtInd (sens débit/crédit) manquant — impossible de déterminer le sens du montant.
  • CLBDAvertissement : le solde de clôture (2000.00) ne correspond pas à l'ouverture ± mouvements comptabilisés (4400.00).

Citado literalmente do validador, sem paráfrase.

Última verificação: Licença: CC-BY-4.0

Todas as partes, IBAN e montantes abaixo são fictícios. Os IBAN são estruturalmente válidos — passam no mod-97 — mas não correspondem a nenhuma conta real.

Conteúdo do ficheiro

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ValidateFin sample file — bank statement, camt.053.001.08, BROKEN ON PURPOSE.
  The second entry has NO <CdtDbtInd>. It is a debit of 1200.00 (the closing balance
  says so: 3000.00 + 500.00 - 1200.00 - 300.00 = 2000.00), but the file never says it.

  Two things break at once, and that is the whole lesson:
   * CdtDbtInd is MANDATORY (1..1) on ReportEntry — the official XSD rejects the file;
   * a parser that quietly defaults a missing direction to CRDT books +1200.00 instead
     of -1200.00 and lands 2400.00 away from the truth. The direction of an amount is
     never a default; a camt.053 amount is always unsigned and always needs its sign.

  All parties and account numbers are fictitious.
  Reference page: https://validatefin.com/en/resources/samples/camt053-missing-cdtdbtind
  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-NOIND-20260228</MsgId>
      <CreDtTm>2026-02-28T19:00:00</CreDtTm>
    </GrpHdr>
    <Stmt>
      <Id>STMT-PL-2026-02</Id>
      <LglSeqNb>2</LglSeqNb>
      <CreDtTm>2026-02-28T19:00:00</CreDtTm>
      <FrToDt>
        <FrDtTm>2026-02-01T00:00:00</FrDtTm>
        <ToDtTm>2026-02-28T23:59:59</ToDtTm>
      </FrToDt>
      <Acct>
        <Id>
          <IBAN>PL61109010140000071219812874</IBAN>
        </Id>
        <Ccy>EUR</Ccy>
        <Nm>Rachunek biezacy</Nm>
        <Ownr>
          <Nm>Stolarnia Wisla Sp z oo</Nm>
        </Ownr>
        <Svcr>
          <FinInstnId>
            <BICFI>WBKPPLPP</BICFI>
          </FinInstnId>
        </Svcr>
      </Acct>
      <Bal>
        <Tp>
          <CdOrPrtry>
            <Cd>OPBD</Cd>
          </CdOrPrtry>
        </Tp>
        <Amt Ccy="EUR">3000.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt>
          <Dt>2026-02-01</Dt>
        </Dt>
      </Bal>
      <Bal>
        <Tp>
          <CdOrPrtry>
            <Cd>CLBD</Cd>
          </CdOrPrtry>
        </Tp>
        <Amt Ccy="EUR">2000.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt>
          <Dt>2026-02-28</Dt>
        </Dt>
      </Bal>
      <!-- 1. Credit, correctement signe -->
      <Ntry>
        <NtryRef>PL-2026-02-0001</NtryRef>
        <Amt Ccy="EUR">500.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Sts>
          <Cd>BOOK</Cd>
        </Sts>
        <BookgDt>
          <Dt>2026-02-09</Dt>
        </BookgDt>
        <ValDt>
          <Dt>2026-02-09</Dt>
        </ValDt>
        <BkTxCd>
          <Domn>
            <Cd>PMNT</Cd>
            <Fmly>
              <Cd>RCDT</Cd>
              <SubFmlyCd>ESCT</SubFmlyCd>
            </Fmly>
          </Domn>
        </BkTxCd>
        <AddtlNtryInf>PRZELEW PRZYCHODZACY</AddtlNtryInf>
      </Ntry>
      <!-- 2. DEFAUT : aucun CdtDbtInd. C'est un DEBIT de 1200.00, le fichier ne le dit pas. -->
      <Ntry>
        <NtryRef>PL-2026-02-0002</NtryRef>
        <Amt Ccy="EUR">1200.00</Amt>
        <Sts>
          <Cd>BOOK</Cd>
        </Sts>
        <BookgDt>
          <Dt>2026-02-17</Dt>
        </BookgDt>
        <ValDt>
          <Dt>2026-02-17</Dt>
        </ValDt>
        <BkTxCd>
          <Domn>
            <Cd>PMNT</Cd>
            <Fmly>
              <Cd>ICDT</Cd>
              <SubFmlyCd>ESCT</SubFmlyCd>
            </Fmly>
          </Domn>
        </BkTxCd>
        <AddtlNtryInf>PRZELEW WYCHODZACY DOSTAWCA DREWNA</AddtlNtryInf>
      </Ntry>
      <!-- 3. Debit, correctement signe -->
      <Ntry>
        <NtryRef>PL-2026-02-0003</NtryRef>
        <Amt Ccy="EUR">300.00</Amt>
        <CdtDbtInd>DBIT</CdtDbtInd>
        <Sts>
          <Cd>BOOK</Cd>
        </Sts>
        <BookgDt>
          <Dt>2026-02-27</Dt>
        </BookgDt>
        <ValDt>
          <Dt>2026-02-27</Dt>
        </ValDt>
        <BkTxCd>
          <Domn>
            <Cd>ACMT</Cd>
            <Fmly>
              <Cd>MDOP</Cd>
              <SubFmlyCd>CHRG</SubFmlyCd>
            </Fmly>
          </Domn>
        </BkTxCd>
        <AddtlNtryInf>OPLATY BANKOWE</AddtlNtryInf>
      </Ntry>
    </Stmt>
  </BkToCstmrStmt>
</Document>

Como sabemos que estes resultados se mantêm

Cada ficheiro desta biblioteca passa pelo próprio validador do site em cada build. O resultado esperado indicado acima é verificado por um teste automatizado: se um ficheiro deixasse de corresponder ao que esta página afirma, o build falharia. Duas fixtures herdadas foram reparadas assim antes da publicação: três IBAN falhavam o mod-97 e vários nomes usavam caracteres fora do conjunto SEPA básico.

Extrato bancário (camt.052 / 053 / 054)