| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung |
| schemes:financial:bankaccount [2024/12/12 12:43] – [examples] lars_gerulat | schemes:financial:bankaccount [2026/09/08 14:34] (aktuell) – B2Base-Schemaentwurf: internationale Datenmodelle, Beispiele und Erläuterungen 0.0.0.0 |
|---|
| ====== description ====== | ====== Bankverbindungen ====== |
| Hier ist ein JSON Schema, das international gültige Kontoinformationen erfasst. Es berücksichtigt Bankkontodaten wie IBAN, SWIFT/BIC, Kontonummer, Bankleitzahl und weitere Felder, die weltweit verwendet werden könnten. | |
| |
| In diesem JSON Schema ist es möglich, mehrere Einträge desselben Typs in einem Array zuzulassen, selbst wenn der Typ innerhalb einer oneOf-Definition steht. Die Verwendung von oneOf bedeutet jedoch, dass jeder einzelne Eintrag im Array entweder das Schema für eine natürliche Person oder für eine juristische Person erfüllen muss. | <WRAP b2hero> |
| | **B2Base · 1.0.0-draft.1 · Projektentwurf** |
| |
| ====== examples ====== | IBAN-basierte und lokale Kontoverbindungen mit eindeutigen Kontoinhaberverweisen. |
| ===== json schema ===== | |
| <code> | [[schemes:scheme|Bibliothek]] · [[schemes:financial|Finanzen]] · [[schemes:principles|Internationale Grundregeln]] |
| | </WRAP> |
| | |
| | ===== Direkt verwenden ===== |
| | |
| | [[b2schema>1.0.0-draft.1/financial/bankaccount.schema.json|Austauschschema (JSON)]] · [[b2schema>1.0.0-draft.1/financial/bankaccount.editor.schema.json|Schema für den Designer]] · [[b2schema>1.0.0-draft.1/financial/bankaccount.examples.json|Beispieldaten]] |
| | |
| | **Austauschschema:** vollständige Strukturprüfung mit JSON Schema 2020-12. **Designer-Fassung:** gleiche Datenfelder mit reduzierten Strukturregeln zur Feldübernahme. [[:guidelines#im_workflowdesigner_verwenden|Anleitung und Grenzen]] |
| | |
| | ===== Felder im Überblick ===== |
| | |
| | ^ Feld ^ Typ ^ Pflicht im Modul ^ Bedeutung ^ |
| | | ''accountHolders'' | array | Ja | Verweise auf Kontoinhaber. | |
| | | ''authorizedUsers'' | array | Nein | Dokumentierte Berechtigungen; übertragen keine Zugriffsrechte. | |
| | | ''accountNumber'' | string | Nein | Lokale Kontonummer in Originalschreibweise; kein globaler Zeichenfilter. | |
| | | ''iban'' | string | Nein | IBAN ohne Leerzeichen in Großbuchstaben; zusätzlich Landeslänge und MOD-97-Prüfziffer prüfen. | |
| | | ''swiftBic'' | string | Nein | BIC in Großbuchstaben; Vergabe separat prüfen. | |
| | | ''routingIdentifiers'' | array | Nein | Lokale Clearing-, Branch- oder Routing-Kennungen mit System. | |
| | | ''bank'' | object | Ja | Angaben zum kontoführenden Institut. | |
| | | ''currency'' | string | Ja | ISO-4217-Währungscode; Schreibweise allein belegt weder Zuweisung noch historische Gültigkeit. | |
| | | ''additionalDetails'' | string | Nein | Optionale Erläuterung. | |
| | | ''extensions'' | object | Nein | Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern. | |
| | |
| | Pflichtangaben gelten für das jeweilige Objekt, wenn dieses Modul verwendet wird. Zusätzliche Alternativen und Statusregeln stehen im Austauschschema. Optionale Felder weglassen, wenn sie unbekannt oder nicht anwendbar sind; ein leeres Pflichtfeld ist kein gültiger Ersatz. |
| | |
| | ===== International richtig einsetzen ===== |
| | |
| | * IBAN wird nur in den dafür registrierten Ländern verwendet. Eine lokale Kontonummer ist eine gleichwertige strukturelle Alternative; nötige Routing-Angaben hängen vom Zahlungsweg ab. |
| | * Regex prüft Schreibweise, nicht Prüfziffer, Existenz, Kontoinhaberschaft oder Zahlungsfähigkeit. Hier wird keine Zahlung ausgeführt. |
| | * Kontoinhaber und autorisierte Nutzer werden über Datenkennungen referenziert. authorizedUsers ersetzt keine bankseitige Berechtigungsprüfung. |
| | |
| | ===== Gültige Beispiele ===== |
| | |
| | Alle Beispiele sind synthetisch. Sie werden mit dem mitgelieferten Schema geprüft; daraus folgt keine fachliche Echtheit oder externe Erreichbarkeit. |
| | |
| | ==== Beispiel 1 ==== |
| | |
| | <file json example-1.json> |
| { | { |
| "accountHolders": [ | "accountHolders": [ |
| { | { |
| "$ref": "https://b2base.eu/doku.php?id=schemes:person:nameandbirthdetails" | "entityType": "person", |
| }, | "id": "urn:example:person:42" |
| | } |
| | ], |
| | "accountNumber": "000123456789", |
| | "routingIdentifiers": [ |
| { | { |
| "$ref": "https://b2base.eu/doku.php?id=schemes:legalentity:namedetails" | "value": "021000021", |
| | "scheme": "https://example.org/routing/aba" |
| } | } |
| ], | ], |
| "authorizedUsers": [ | "bank": { |
| | "name": "Example Bank", |
| | "country": "US" |
| | }, |
| | "currency": "USD" |
| | } |
| | </file> |
| | |
| | ==== Beispiel 2 ==== |
| | |
| | <file json example-2.json> |
| | { |
| | "accountHolders": [ |
| { | { |
| "$ref": "https://b2base.eu/doku.php?id=schemes:person:nameandbirthdetails", | "entityType": "legalEntity", |
| "authorizationLevel": "view" | "id": "urn:example:organisation:42" |
| }, | |
| { | |
| "$ref": "https://b2base.eu/doku.php?id=schemes:person:nameandbirthdetails", | |
| "authorizationLevel": "full access" | |
| } | } |
| ], | ], |
| "accountNumber": "DE12345678901234567890", | |
| "iban": "DE89370400440532013000", | "iban": "DE89370400440532013000", |
| "swiftBic": "COBADEFFXXX", | |
| "bank": { | "bank": { |
| "$ref": "https://b2base.eu/doku.php?id=schemes:legalentity:namedetails" | "name": "Example Bank", |
| | "country": "DE" |
| }, | }, |
| "currency": "EUR", | "currency": "EUR" |
| "additionalDetails": "This is a business account for operational transactions." | |
| } | } |
| </code> | </file> |
| |
| | ===== Umstellung aus dem bisherigen Wiki ===== |
| |
| ====== schema ====== | Breaking Change: IBAN und BIC sind nicht mehr pauschal Pflicht. accountHolders und authorizedUsers verwenden PartyRef-Datenobjekte; bank erhält einen expliziten Mindestkern. Der syntaktisch ungültige Regex-String und das fehlerhafte properties.$ref wurden korrigiert. |
| <code> | |
| | [[schemes:migration|Änderungsübersicht und Migrationsregeln]] |
| | |
| | ===== Vollständiges Schema ===== |
| | |
| | Die Datei ist eigenständig: verwendete Bausteine sind unter ''$defs'' eingebettet, Referenzen bleiben lokal. ''$id'' ist die kanonische Kennung. Die Downloads oben verwenden den aktuellen Server; eine Veröffentlichung unter der kanonischen Domain ist damit nicht behauptet. |
| | |
| | <file json bankaccount.schema.json> |
| { | { |
| "$schema": "https://json-schema.org/draft/2020-12/schema", | "$schema": "https://json-schema.org/draft/2020-12/schema", |
| "title": "International Bank Account Information", | "$id": "https://b2base.eu/schemas/1.0.0-draft.1/financial/bankaccount.schema.json", |
| | "title": "Bankverbindungen", |
| | "$comment": "B2Base 1.0.0-draft.1. Projektentwurf, kein durch ISO oder andere Normungsgremien verabschiedeter Standard.", |
| "type": "object", | "type": "object", |
| | "description": "Bankverbindung; Unterstützung des jeweiligen Zahlungswegs muss separat geprüft werden.", |
| "properties": { | "properties": { |
| "accountHolders": { | "accountHolders": { |
| "type": "array", | "type": "array", |
| "description": "List of account holders (individuals or legal entities)", | "description": "Verweise auf Kontoinhaber.", |
| "items": { | "items": { |
| "type": "object", | "$ref": "#/$defs/PartyRef" |
| "oneOf": [ | }, |
| { | "minItems": 1 |
| "$ref": "https://b2base.eu/doku.php?id=schemes:person:nameandbirthdetails" | |
| }, | |
| { | |
| "$ref": "https://b2base.eu/doku.php?id=schemes:legalentity:nameanddetails" | |
| } | |
| ] | |
| } | |
| }, | }, |
| "authorizedUsers": { | "authorizedUsers": { |
| "type": "array", | "type": "array", |
| "description": "List of individuals with authorization to access the account", | "description": "Dokumentierte Berechtigungen; übertragen keine Zugriffsrechte.", |
| "items": { | "items": { |
| "type": "object", | "type": "object", |
| | "description": "Eine Berechtigungsangabe.", |
| "properties": { | "properties": { |
| "$ref": "https://b2base.eu/doku.php?id=schemes:person:nameandbirthdetails", | "party": { |
| | "$ref": "#/$defs/PartyRef" |
| | }, |
| "authorizationLevel": { | "authorizationLevel": { |
| "type": "string", | "type": "string", |
| "description": "Level of authorization (e.g., view, transaction, full access)", | "minLength": 1, |
| "enum": ["view", "transaction", "full access"] | "description": "Beschriebener Umfang.", |
| | "enum": [ |
| | "view", |
| | "transaction", |
| | "fullAccess" |
| | ] |
| } | } |
| }, | }, |
| "required": ["$ref", "authorizationLevel"] | "required": [ |
| | "party", |
| | "authorizationLevel" |
| | ], |
| | "additionalProperties": false |
| } | } |
| }, | }, |
| "accountNumber": { | "accountNumber": { |
| "type": "string", | "type": "string", |
| "description": "Account number (if IBAN is not available)", | "minLength": 1, |
| "pattern": "^[A-Za-z0-9]{1,34}$" | "description": "Lokale Kontonummer in Originalschreibweise; kein globaler Zeichenfilter." |
| }, | }, |
| "iban": { | "iban": { |
| "type": "string", | "type": "string", |
| "description": "International Bank Account Number", | "minLength": 1, |
| "pattern": "^[A-Z]{2}\d{2}[A-Za-z0-9]{1,30}$" | "description": "IBAN ohne Leerzeichen in Großbuchstaben; zusätzlich Landeslänge und MOD-97-Prüfziffer prüfen.", |
| | "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$" |
| }, | }, |
| "swiftBic": { | "swiftBic": { |
| "type": "string", | "type": "string", |
| "description": "SWIFT/BIC code of the bank", | "minLength": 1, |
| "pattern": "^[A-Za-z]{4}[A-Za-z]{2}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$" | "description": "BIC in Großbuchstaben; Vergabe separat prüfen.", |
| | "pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$" |
| | }, |
| | "routingIdentifiers": { |
| | "type": "array", |
| | "description": "Lokale Clearing-, Branch- oder Routing-Kennungen mit System.", |
| | "items": { |
| | "$ref": "#/$defs/Identifier" |
| | } |
| }, | }, |
| "bank": { | "bank": { |
| "$ref": "https://b2base.eu/doku.php?id=schemes:legalentity:nameanddetails", | "type": "object", |
| "description": "Details of the bank as a legal entity" | "description": "Angaben zum kontoführenden Institut.", |
| | "properties": { |
| | "name": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Name." |
| | }, |
| | "country": { |
| | "$ref": "#/$defs/CountryCode" |
| | }, |
| | "id": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Optionaler Institutsdatensatz.", |
| | "format": "uri" |
| | } |
| | }, |
| | "required": [ |
| | "name", |
| | "country" |
| | ], |
| | "additionalProperties": false |
| }, | }, |
| "currency": { | "currency": { |
| "type": "string", | "$ref": "#/$defs/CurrencyCode" |
| "description": "Currency of the account in ISO 4217 format", | |
| "pattern": "^[A-Z]{3}$" | |
| }, | }, |
| "additionalDetails": { | "additionalDetails": { |
| "type": "string", | "type": "string", |
| "description": "Additional details or notes regarding the account" | "minLength": 1, |
| | "description": "Optionale Erläuterung." |
| | }, |
| | "extensions": { |
| | "type": "object", |
| | "description": "Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern.", |
| | "properties": {}, |
| | "additionalProperties": true, |
| | "propertyNames": { |
| | "format": "uri" |
| | } |
| } | } |
| }, | }, |
| "required": ["accountHolders", "iban", "swiftBic", "bank", "currency"], | "required": [ |
| "additionalProperties": false | "accountHolders", |
| | "bank", |
| | "currency" |
| | ], |
| | "additionalProperties": false, |
| | "anyOf": [ |
| | { |
| | "required": [ |
| | "iban" |
| | ] |
| | }, |
| | { |
| | "required": [ |
| | "accountNumber" |
| | ] |
| | } |
| | ], |
| | "$defs": { |
| | "PartyRef": { |
| | "type": "object", |
| | "description": "Verweis auf eine separat gespeicherte Person oder juristische Person; kein JSON-Schema-Verweis.", |
| | "properties": { |
| | "entityType": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Art der referenzierten Einheit.", |
| | "enum": [ |
| | "person", |
| | "legalEntity" |
| | ] |
| | }, |
| | "id": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Stabile absolute URI oder URN des Datensatzes, nicht dessen Name.", |
| | "format": "uri" |
| | }, |
| | "name": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Optionale Anzeige; nicht als Identitätsschlüssel verwenden." |
| | } |
| | }, |
| | "required": [ |
| | "entityType", |
| | "id" |
| | ], |
| | "additionalProperties": false |
| | }, |
| | "Identifier": { |
| | "type": "object", |
| | "description": "Kennung zusammen mit ihrem Namensraum. Führende Nullen, Trennzeichen und Groß-/Kleinschreibung erhalten.", |
| | "properties": { |
| | "value": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Kennung als Text." |
| | }, |
| | "scheme": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "URI des Kennungssystems; kein allgemeines weltweites Nummernformat.", |
| | "format": "uri" |
| | }, |
| | "type": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Optionale fachliche Bezeichnung." |
| | }, |
| | "issuer": { |
| | "$ref": "#/$defs/Issuer" |
| | }, |
| | "country": { |
| | "$ref": "#/$defs/CountryCode" |
| | }, |
| | "validFrom": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Beginn der angegebenen Gültigkeit.", |
| | "format": "date" |
| | }, |
| | "validUntil": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Letzter Gültigkeitstag, falls bekannt.", |
| | "format": "date" |
| | } |
| | }, |
| | "required": [ |
| | "value", |
| | "scheme" |
| | ], |
| | "additionalProperties": false |
| | }, |
| | "Issuer": { |
| | "type": "object", |
| | "description": "Aussteller einschließlich internationaler Organisationen.", |
| | "properties": { |
| | "authority": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Originalname der Behörde oder Organisation." |
| | }, |
| | "id": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Stabile Kennung des Ausstellers.", |
| | "format": "uri" |
| | }, |
| | "country": { |
| | "$ref": "#/$defs/CountryCode", |
| | "description": "Optional: Land des Ausstellers; keine erfundene Länderkennung für internationale Organisationen." |
| | }, |
| | "region": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "Optionale Verwaltungseinheit oder Zuständigkeitsbezeichnung." |
| | } |
| | }, |
| | "required": [ |
| | "authority" |
| | ], |
| | "additionalProperties": false |
| | }, |
| | "CountryCode": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "ISO 3166-1 Alpha-2, Großbuchstaben. Das Muster prüft nur die Schreibweise; zugewiesenen Code und Gültigkeitszeitpunkt gesondert prüfen.", |
| | "pattern": "^[A-Z]{2}$" |
| | }, |
| | "CurrencyCode": { |
| | "type": "string", |
| | "minLength": 1, |
| | "description": "ISO-4217-Währungscode; Schreibweise allein belegt weder Zuweisung noch historische Gültigkeit.", |
| | "pattern": "^[A-Z]{3}$" |
| | } |
| | }, |
| | "examples": [ |
| | { |
| | "accountHolders": [ |
| | { |
| | "entityType": "person", |
| | "id": "urn:example:person:42" |
| | } |
| | ], |
| | "accountNumber": "000123456789", |
| | "routingIdentifiers": [ |
| | { |
| | "value": "021000021", |
| | "scheme": "https://example.org/routing/aba" |
| | } |
| | ], |
| | "bank": { |
| | "name": "Example Bank", |
| | "country": "US" |
| | }, |
| | "currency": "USD" |
| | }, |
| | { |
| | "accountHolders": [ |
| | { |
| | "entityType": "legalEntity", |
| | "id": "urn:example:organisation:42" |
| | } |
| | ], |
| | "iban": "DE89370400440532013000", |
| | "bank": { |
| | "name": "Example Bank", |
| | "country": "DE" |
| | }, |
| | "currency": "EUR" |
| | } |
| | ] |
| } | } |
| </code> | </file> |
| | |
| | ===== Quellen und Abgrenzung ===== |
| | |
| | * [[https://www.swift.com/standards/data-standards/iban-international-bank-account-number|SWIFT: IBAN und Register nationaler Formate]] |
| | * [[https://www.six-group.com/en/products-services/financial-information/market-reference-data/data-standards.html|SIX: ISO-4217-Währungen und Nachkommastellen]] |
| | * [[https://json-schema.org/understanding-json-schema/structuring|JSON Schema: Aufbau und Referenzen]] |
| | |
| | Quellen geprüft am 8. September 2026. Die B2Base-Felder und ihre Kombination sind ein eigener Entwurf. Code-Register, nationale Regeln, Echtheit, Zeitfolgen und Referenzziele benötigen die im jeweiligen Verfahren vereinbarten Zusatzprüfungen. |
| | |
| | [[schemes:scheme|Zur Bibliothek]] · [[:guidelines|Integration]] · [[:faq|Häufige Fragen]] |