BankLint

Guides · Updated 2026-10-20

IBAN and BIC in a SEPA pain.001

In a SEPA credit transfer the debtor and creditor accounts are identified by IBAN only. The debtor agent is identified by its BIC in BICFI or, without a BIC, by Othr/Id with the value NOTPROVIDED. The creditor agent is optional: give only its BIC in BICFI, or leave CdtrAgt out. BICs may have 8 or 11 characters.

The rules

ElementPathSEPA rule (EPC132-08 2025 v1.0)BankLint rule
Debtor accountPmtInf/DbtrAcct/Id/IBANOnly IBAN (item 2.46)SEPA-SCT-DBTRACCT-001, check digits SEPA-SCT-IBAN-001
Creditor accountCdtTrfTxInf/CdtrAcct/Id/IBANMandatory, only IBAN (items 2.140 and 2.141)SEPA-SCT-CDTRACCT-001, check digits SEPA-SCT-IBAN-002
Debtor agentPmtInf/DbtrAgt/FinInstnId/BICFI or …/Othr/IdBICFI, or Othr/Id with only "NOTPROVIDED" (items 2.54 and 2.61)SEPA-SCT-DBTRAGT-001
Creditor agentCdtTrfTxInf/CdtrAgt/FinInstnId/BICFIOptional; only BICFI; without a BIC the CdtrAgt structure is not used (item 2.114)SEPA-SCT-CDTRAGT-001
  • SEPA-SCT-DBTRACCT-001BLOCKERDebtor account must be an IBAN. Only IBAN is allowed to identify the debtor account.
  • SEPA-SCT-CDTRACCT-001BLOCKERCreditor account must be an IBAN. Only IBAN is allowed to identify the creditor account.
  • SEPA-SCT-IBAN-001BLOCKERDebtor IBAN check digits are wrong. The check digits of the debtor IBAN (characters 3 and 4) do not match the rest of the IBAN (ISO 13616, ISO 7064 MOD 97-10).
  • SEPA-SCT-IBAN-002BLOCKERCreditor IBAN check digits are wrong. The check digits of the creditor IBAN (characters 3 and 4) do not match the rest of the IBAN (ISO 13616, ISO 7064 MOD 97-10).
  • SEPA-SCT-DBTRAGT-001BLOCKERDebtor agent must be BICFI or NOTPROVIDED. The debtor agent must be identified either by BICFI or by Other/Identification with the value NOTPROVIDED.
  • SEPA-SCT-CDTRAGT-001BLOCKERCreditor agent may only carry a BIC. Only BICFI is allowed for the creditor agent; if no BIC is known, the creditor agent structure must not be used.

The guidelines accept a BIC with 8 or 11 characters (section 1.5.1).

Formats from the schema

ElementSchema typePatternMeans
IBANIBAN2007Identifier[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}Two-letter country code, two check digits, then 1 to 30 letters or digits. No spaces.
BICFIBICFIDec2014Identifier[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}4 characters, a two-letter country code, 2 characters, optionally a 3-character branch code: 8 or 11 in total.

A value that breaks the pattern, such as an IBAN written with spaces, fails the schema (BNK-ISO-003). The pattern does not check the check digits or the length of the IBAN for its country. Try the synthetic file with an invalid IBAN pattern.

IBAN check digits (mod 97)

The two digits after the country code are check digits computed with the mod 97 method of ISO 13616. BankLint checks them for the debtor account (SEPA-SCT-IBAN-001) and every creditor account (SEPA-SCT-IBAN-002). To verify an IBAN by hand:

  • Move the first four characters to the end: DE50100000000000000001 becomes 100000000000000001DE50.
  • Replace each letter with two digits (A = 10, B = 11, … Z = 35): D = 13, E = 14 gives 100000000000000001131450.
  • Divide the number by 97. The IBAN is valid if the remainder is 1.

Valid check digits only show that the IBAN is well formed. They do not show that the account exists or belongs to the payee.

Examples

Fails: account without IBAN
<CdtrAcct>
  <Id>
    <Othr>
      <Id>0123456789</Id>
    </Othr>
  </Id>
</CdtrAcct>
Corrected
<CdtrAcct>
  <Id>
    <IBAN>DE15200000000000000011</IBAN>
  </Id>
</CdtrAcct>
Debtor agent: BIC, or NOTPROVIDED when no BIC is given
<DbtrAgt>
  <FinInstnId>
    <BICFI>TESTDEFFXXX</BICFI>
  </FinInstnId>
</DbtrAgt>

<DbtrAgt>
  <FinInstnId>
    <Othr>
      <Id>NOTPROVIDED</Id>
    </Othr>
  </FinInstnId>
</DbtrAgt>
Fails: creditor agent without a BIC
<CdtrAgt>
  <FinInstnId>
    <Nm>Example Bank</Nm>
  </FinInstnId>
</CdtrAgt>
Corrected: give the BIC, or leave CdtrAgt out
<CdtrAgt>
  <FinInstnId>
    <BICFI>TESTDEFFXXX</BICFI>
  </FinInstnId>
</CdtrAgt>

Common causes

More causes in why banks reject pain.001 files.

  • Vendor bank master data with a national account number but no IBAN.
  • A payment method shared with non-SEPA payments, where accounts or banks may be identified differently.
  • A creditor agent block written with the bank name or a clearing code when the BIC is unknown; leaving the block out is correct.
  • IBANs exported in the spaced print format.

Questions

Is the BIC mandatory in a SEPA pain.001?

For the creditor agent, no: it is optional, and without a BIC the creditor agent is left out. For the debtor agent, give the BIC in BICFI or, without one, Othr/Id with the value NOTPROVIDED.

What does NOTPROVIDED mean in DbtrAgt?

It is the only value the SEPA guidelines allow in DbtrAgt/FinInstnId/Othr/Id. It states that the debtor agent BIC is not given in the file.

Can an IBAN in pain.001 contain spaces?

No. The schema pattern for IBAN allows only letters and digits, so an IBAN with spaces fails XSD validation.

Does BankLint check IBAN check digits?

Yes, with the mod 97 method. A valid result shows the IBAN is well formed, not that the account belongs to the payee.

Validate a pain.001 fileFree, no account needed, files are not stored.