camt.054.001.08 — valid debit/credit notification
Un aviso de adeudo/abono camt.054 válido: un abono SEPA entrante y un adeudo directo saliente, cada uno con TxDtls completos y referencia de extremo a extremo. La sorpresa estructural es lo que NO está: un camt.054 no tiene ningún elemento <Bal> — el esquema ISO 20022 no define ninguno. Un aviso anuncia movimientos, nunca declara un saldo: no hay nada que cuadrar.
camt.054.001.08 — Válido
Un aviso de adeudo/abono camt.054 válido: un abono SEPA entrante y un adeudo directo saliente, cada uno con TxDtls completos y referencia de extremo a extremo. La sorpresa estructural es lo que NO está: un camt.054 no tiene ningún elemento <Bal> — el esquema ISO 20022 no define ninguno. Un aviso anuncia movimientos, nunca declara un saldo: no hay nada que cuadrar.
Lo que muestra este fichero
Un aviso de adeudo/abono camt.054 válido: un abono SEPA entrante y un adeudo directo saliente, cada uno con TxDtls completos y referencia de extremo a extremo. La sorpresa estructural es lo que NO está: un camt.054 no tiene ningún elemento <Bal> — el esquema ISO 20022 no define ninguno. Un aviso anuncia movimientos, nunca declara un saldo: no hay nada que cuadrar.
| Transacciones | 2 |
|---|---|
| Fecha en el fichero | 2026-07-09 |
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 — debit/credit notification, camt.054.001.08.
Expected validation result: VALID.
camt.054 is the message a bank sends to ANNOUNCE individual debits and credits.
Its root is BkToCstmrDbtCdtNtfctn and its container is <Ntfctn>. The structural
point of this file: a camt.054 has NO <Bal> element at all — the ISO 20022 schema
does not define one. A notification announces movements, it does not state a
balance, so there is nothing to reconcile against. Anyone porting camt.053 code
to camt.054 discovers this the hard way.
Here: one incoming SEPA credit (2 480.00 EUR) and one outgoing direct debit
(95.40 EUR), both with full TxDtls and end-to-end references.
All parties and account numbers are fictitious.
Reference page: https://validatefin.com/en/resources/samples/camt054-credit-notification
License: CC-BY-4.0
-->
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.08"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<BkToCstmrDbtCdtNtfctn>
<GrpHdr>
<MsgId>CAMT054-20260709-0001</MsgId>
<CreDtTm>2026-07-09T16:05:00</CreDtTm>
</GrpHdr>
<Ntfctn>
<Id>NTFCTN-PT-20260709-0001</Id>
<CreDtTm>2026-07-09T16:05:00</CreDtTm>
<FrToDt>
<FrDtTm>2026-07-09T00:00:00</FrDtTm>
<ToDtTm>2026-07-09T16:05:00</ToDtTm>
</FrToDt>
<Acct>
<Id>
<IBAN>PT50000201231234567890154</IBAN>
</Id>
<Ccy>EUR</Ccy>
<Nm>Conta a ordem</Nm>
<Ownr>
<Nm>Azulejos do Douro Lda</Nm>
</Ownr>
<Svcr>
<FinInstnId>
<BICFI>BCOMPTPL</BICFI>
</FinInstnId>
</Svcr>
</Acct>
<TxsSummry>
<TtlNtries>
<NbOfNtries>2</NbOfNtries>
</TtlNtries>
<TtlCdtNtries>
<NbOfNtries>1</NbOfNtries>
<Sum>2480.00</Sum>
</TtlCdtNtries>
<TtlDbtNtries>
<NbOfNtries>1</NbOfNtries>
<Sum>95.40</Sum>
</TtlDbtNtries>
</TxsSummry>
<!-- Avis de CREDIT -->
<Ntry>
<NtryRef>PT-20260709-CRDT-01</NtryRef>
<Amt Ccy="EUR">2480.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Sts>
<Cd>BOOK</Cd>
</Sts>
<BookgDt>
<DtTm>2026-07-09T15:58:00</DtTm>
</BookgDt>
<ValDt>
<Dt>2026-07-09</Dt>
</ValDt>
<AcctSvcrRef>BCP20260709000442</AcctSvcrRef>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
</BkTxCd>
<NtryDtls>
<TxDtls>
<Refs>
<EndToEndId>FAT-2026-0316</EndToEndId>
<TxId>TX-PT-20260709-01</TxId>
</Refs>
<RltdPties>
<Dbtr>
<Pty>
<Nm>Reabilitacoes Urbanas SA</Nm>
</Pty>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>PT50003300004567890123405</IBAN>
</Id>
</DbtrAcct>
</RltdPties>
<RltdAgts>
<DbtrAgt>
<FinInstnId>
<BICFI>BCOMPTPL</BICFI>
</FinInstnId>
</DbtrAgt>
</RltdAgts>
<RmtInf>
<Ustrd>Fatura FAT-2026-0316 - azulejo hidraulico</Ustrd>
</RmtInf>
</TxDtls>
</NtryDtls>
<AddtlNtryInf>TRANSFERENCIA SEPA RECEBIDA</AddtlNtryInf>
</Ntry>
<!-- Avis de DEBIT -->
<Ntry>
<NtryRef>PT-20260709-DBIT-01</NtryRef>
<Amt Ccy="EUR">95.40</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Sts>
<Cd>BOOK</Cd>
</Sts>
<BookgDt>
<DtTm>2026-07-09T06:30:00</DtTm>
</BookgDt>
<ValDt>
<Dt>2026-07-09</Dt>
</ValDt>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>IDDT</Cd>
<SubFmlyCd>PMDD</SubFmlyCd>
</Fmly>
</Domn>
</BkTxCd>
<NtryDtls>
<TxDtls>
<Refs>
<EndToEndId>TELECOM-2026-07</EndToEndId>
<MndtId>PT-MNDT-2021-4412</MndtId>
</Refs>
<RltdPties>
<Cdtr>
<Pty>
<Nm>Telecom Norte SA</Nm>
</Pty>
</Cdtr>
</RltdPties>
<RmtInf>
<Ustrd>Servico de comunicacoes julho 2026</Ustrd>
</RmtInf>
</TxDtls>
</NtryDtls>
<AddtlNtryInf>DEBITO DIRETO SEPA TELECOM NORTE</AddtlNtryInf>
</Ntry>
</Ntfctn>160 / 163 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)
- camt.053.001.02 — valid statement
- camt.053.001.08 — valid statement
- camt.053 — unsupported namespace
- camt.053.001.06 — missing Stmt element
- camt.053.001.11 — valid statement
- camt.053.001.08 — three accounts in one file
- camt.053.001.10 — fully detailed entries
- camt.053.001.08 — closing balance does not reconcile
- camt.052.001.08 — valid intraday report
- camt.053.001.08 — entry with no CdtDbtInd
- camt.053.001.08 — 220 entries, valid