CAMT.053 import error when Ntry contains multiple NtryDtls (Desktop v26.1.11.3168, macOS)

Environment

  • Edition: Desktop

  • Version: v26.1.11.3168

  • OS: macOS 26.2

  • Language: SK (same behavior in EN)

Summary
Importing a CAMT.053.001.02 bank statement (Tatra banka, SK) fails when a single element contains more than one block. It looks like the importer expects a single object, not an array.

Steps to reproduce

  1. Bank & Cash Accounts → Import bank statement.

  2. Select the bank account.

  3. Upload the attached CAMT.053 XML.

  4. Click Next → error is shown.

Actual result (error)
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type ‘ManagerServer.HttpHandlers.Businesses.Business.BankAndCashAccounts.ImportBankStatement+Camt053+DocumentElement+BkToCstmrStmtElement+StmtElement+NtryElement+NtryDtlsElement’ because the type requires a JSON object (e.g. {“name”:“value”}) to deserialize correctly. To fix this error either change the JSON to a JSON object (e.g. {“name”:“value”}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array. Path ‘NtryDtls’, line 1, position 1610.

Expected result
CAMT.053 import should succeed even when an contains multiple (multiple details for a single entry).

Complete anonymized XML (formatted):

<?xml version="1.0" encoding="utf-8" standalone="yes"?> MSGID_X 2026-01-01T08:26:44.6+01:00
<Stmt>
  <Id>STMTID_X</Id>
  <ElctrncSeqNb>1</ElctrncSeqNb>
  <LglSeqNb>1</LglSeqNb>
  <CreDtTm>2026-01-01T08:26:44.6+01:00</CreDtTm>

  <FrToDt>
    <FrDtTm>2025-12-23T00:00:00.0+01:00</FrDtTm>
    <ToDtTm>2025-12-31T00:00:00.0+01:00</ToDtTm>
  </FrToDt>

  <Acct>
    <Id>
      <IBAN>SKXX00000000000000000000</IBAN>
    </Id>
    <Tp>
      <Prtry>BU</Prtry>
    </Tp>
    <Ccy>EUR</Ccy>
    <Nm>COMPANY_X</Nm>

    <Ownr>
      <Nm>COMPANY_X</Nm>
      <PstlAdr>
        <StrtNm>STREET_X</StrtNm>
        <BldgNb>00/00</BldgNb>
        <PstCd>00000</PstCd>
        <TwnNm>CITY_X</TwnNm>
        <Ctry>SK</Ctry>
      </PstlAdr>
      <Id>
        <OrgId>
          <Othr>
            <Id>ORGID_BANK_X</Id>
            <SchmeNm>
              <Cd>BANK</Cd>
            </SchmeNm>
            <Issr>BANK_X</Issr>
          </Othr>
          <Othr>
            <Id>ICO_X</Id>
            <SchmeNm>
              <Prtry>ICO</Prtry>
            </SchmeNm>
            <Issr>ORSR</Issr>
          </Othr>
        </OrgId>
      </Id>
    </Ownr>
  </Acct>

  <Bal>
    <Tp><CdOrPrtry><Cd>PRCD</Cd></CdOrPrtry></Tp>
    <Amt Ccy="EUR">1000.00</Amt>
    <CdtDbtInd>CRDT</CdtDbtInd>
    <Dt><Dt>2025-12-31</Dt></Dt>
  </Bal>

  <Bal>
    <Tp><CdOrPrtry><Cd>OPBD</Cd></CdOrPrtry></Tp>
    <Amt Ccy="EUR">1000.00</Amt>
    <CdtDbtInd>CRDT</CdtDbtInd>
    <Dt><Dt>2025-12-23</Dt></Dt>
  </Bal>

  <Bal>
    <Tp><CdOrPrtry><Cd>CLBD</Cd></CdOrPrtry></Tp>
    <Amt Ccy="EUR">993.00</Amt>
    <CdtDbtInd>CRDT</CdtDbtInd>
    <Dt><Dt>2025-12-31</Dt></Dt>
  </Bal>

  <TxsSummry>
    <TtlNtries>
      <NbOfNtries>1</NbOfNtries>
      <TtlNetNtryAmt>7.00</TtlNetNtryAmt>
      <CdtDbtInd>DBIT</CdtDbtInd>
    </TtlNtries>
    <TtlCdtNtries>
      <NbOfNtries>0</NbOfNtries>
      <Sum>0</Sum>
    </TtlCdtNtries>
    <TtlDbtNtries>
      <NbOfNtries>1</NbOfNtries>
      <Sum>7.00</Sum>
    </TtlDbtNtries>
  </TxsSummry>

  <Ntry>
    <NtryRef>NTRYREF_X</NtryRef>
    <Amt Ccy="EUR">7.00</Amt>
    <CdtDbtInd>DBIT</CdtDbtInd>
    <Sts>BOOK</Sts>
    <BookgDt><Dt>2025-12-31</Dt></BookgDt>
    <ValDt><Dt>2025-12-31</Dt></ValDt>

    <BkTxCd>
      <Prtry>
        <Cd>40000606000</Cd>
        <Issr>SBA</Issr>
      </Prtry>
    </BkTxCd>

    <NtryDtls>
      <TxDtls>
        <Refs>
          <AcctSvcrRef>ACCTSVCRREF_X1</AcctSvcrRef>
        </Refs>
        <RltdDts>
          <TxDtTm>2025-12-31T18:00:00+01:00</TxDtTm>
        </RltdDts>
      </TxDtls>
    </NtryDtls>

    <NtryDtls>
      <Btch>
        <TtlAmt Ccy="EUR">7.00</TtlAmt>
        <CdtDbtInd>CRDT</CdtDbtInd>
      </Btch>
      <TxDtls>
        <Refs>
          <AcctSvcrRef>ACCTSVCRREF_X2</AcctSvcrRef>
          <Prtry>
            <Tp>LineNumber</Tp>
            <Ref>1</Ref>
          </Prtry>
        </Refs>
        <AmtDtls>
          <InstdAmt>
            <Amt Ccy="EUR">7.00</Amt>
          </InstdAmt>
        </AmtDtls>
        <BkTxCd>
          <Prtry>
            <Cd>T</Cd>
          </Prtry>
        </BkTxCd>
        <AddtlTxInf>
          &lt;TxInf2&gt;&lt;Nrtv&gt;SERVICE_X&lt;/Nrtv&gt;&lt;/TxInf2&gt;
        </AddtlTxInf>
      </TxDtls>
    </NtryDtls>

    <AddtlNtryInf>
      &lt;NtryInf&gt;&lt;Nrtv&gt;FEE_X&lt;/Nrtv&gt;&lt;/NtryInf&gt;
    </AddtlNtryInf>
  </Ntry>

  <AddtlStmtInf>STATEMENT_INFO_X</AddtlStmtInf>
</Stmt>

Notes

  • The same file imports successfully after manual fix.

  • Format: CAMT.053.001.02; bank: Tatra banka (SK). In display, AddtlNtryInf/Nrtv is mapped correctly into Description.

Thanks!

Hello @Lubos_Ilcik,

Welcome to the forum.

I can’t say that I’m familiar with this standard, but to me it seems like the details of one Ntry should all belong inside one NtryDtls tag.

But since I’m a layman, I will take your word for it and assume that this is a common practice, especially since the fix appears to be trivial and mostly safe – assuming all NtryDtls tags are contiguous.

I will place this in bugs, but it would be entirely up to the developer whether to fix or not.

Hello @Ealfardan, thank you for your attention. I am not familiar with this standard, what I can only add is that I have imported 4 XML files so far and it failed only once with the provided sample.