Organizations
The customer side of your bank. Three core entities: OrganizationInvitation, Organization, and the per-organization ExtendedInformation.
OrganizationInvitation
Represents a prospective customer that hasn't yet completed onboarding. Created via createOrganizationInvitation, then sent via startInvitationFlow.
Key fields
id,organizationName,vatNumber,branchIdentifier,externalId— identifiers.- Contact person — exposed as flat fields
chairmanFirstName,chairmanLastName,chairmanEmail,chairmanCallingCode,chairmanPhoneNumber. (On the input side ofcreateOrganizationInvitationyou pass a nestedcontactPersonobject — the API flattens it to these fields on the entity.)chairmanCallingCodeis asymmetric between input and output, and this behaviour is unique to this one field. On input (createOrganizationInvitation,updateOrganizationInvitationInformation) you pass the ISO 3166-1 alpha-2 region code —"DK","SE","DE","FO", etc. On output the field is returned as the international dial code prefixed with00—"DK"round-trips as"0045","DE"as"0049", and so on. The stored value on the entity is the ISO code; a read-side resolver converts it via libphonenumber. Don't try to write the"00…"form — input validation expects the ISO code and will reject dial-code strings. No other field in the External API performs this conversion: any othercallingCodeyou encounter (e.g. on reference-data lookups) is whatever the underlying entity stores, with no reformatting.
invitationBankAccounts— list of bank accounts linked to the invitation; each entry has an innerbankAccountwithisPrimary,registrationNumber,accountNumber,accountName. The legacybankAccounts: Stringfield is deprecated.riskGroup— your bank's risk classification for this prospect.branchOffice— optional association (flat field, not via extended information).invitationDate— when the flow was started.isInvitationFlowStarted— true oncestartInvitationFlowhas run.isInvitationValidplusinvalidReasons— surfaces missing required fields without throwing.surrenderedTime,isSurrendered,surrenderedReason— set if the invitation was withdrawn.
Lifecycle: created → sent (flow started) → accepted (becomes an Organization) | surrendered | deleted.
The bank has a configured ceiling on invitations per month and per week; startInvitationFlow enforces both and the response surfaces remaining quota.
Organization
The accepted customer. Once an invitation is accepted, the Organization is the canonical record going forward.
Key fields
id,name,vatNumber,branchIdentifier— identifiers.type—AssociationType(legal form: ApS, A/S, foundation, …). Names live onassociationTypeLocalizations.creationDate— when onboarding completed.bankAccounts: [BankAccount!]!— the organization's bank accounts; each hasaccountName,registrationNumber,accountNumber, and (optionally)attorneys.bankRelation— theBankOrganizationRelationthat holds your bank's view of the customer (isAjour,ajourDate,riskGroup,isSurrendered,surrenderedReason, …).extendedInformation: [ExtendedInformation!]!— see below. Exposed as a list for historical reasons; in practice there is always 0 or 1 entry per organization. Treat the first element as authoritative.administrators: [Administrator!]!— board members and external administrators (theAdministratorinterface).taxResidencies: [OrganizationTaxResidency!]!.bankReports(order)— ordered list of bank reports for this organization.
BankOrganizationRelation
Holds the bank-specific state for an organization. This is where ajour status, surrender info, and the assigned risk group live — not on the Organization itself.
Key fields
isAjour,ajourDate— current ajour status.riskGroup: [RiskGroup!]!— assigned risk classification.isSurrendered,surrenderedTime,surrenderedReason— surrender state.externalId— your bank's identifier for the relation.selfDeclaration,marketingConsent,legalDocuments— assorted documents.
ExtendedInformation
Per-organization metadata maintained by your bank. Created lazily when first needed. Exposed as a list on Organization.extendedInformation for historical reasons, but there is always 0 or 1 entry per organization — read the first element.
Key fields
id.branchOffice— theBranchOfficethis organization belongs to (optional).isFirstTimeReporting— deprecated. This field is not maintained and always returns its default. To determine whether an organization is reporting for the first time, readbankReports[].typeand check forFirstTimeon the latest published package.
Relationships at a glance
OrganizationInvitation ──(accepted)──> Organization ──┬─> bankRelation (BankOrganizationRelation) ─> riskGroup
│
├─> extendedInformation[] ──> branchOffice
├─> bankAccounts[]
├─> administrators[] (BoardMember | ExternalAdministrator)
└─> bankReports[] (see Bank packages concept)