Skip to main content

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 of createOrganizationInvitation you pass a nested contactPerson object — the API flattens it to these fields on the entity.)
    • chairmanCallingCode is 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 with 00"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 other callingCode you 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 inner bankAccount with isPrimary, registrationNumber, accountNumber, accountName. The legacy bankAccounts: String field 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 once startInvitationFlow has run.
  • isInvitationValid plus invalidReasons — 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.
  • typeAssociationType (legal form: ApS, A/S, foundation, …). Names live on associationTypeLocalizations.
  • creationDate — when onboarding completed.
  • bankAccounts: [BankAccount!]! — the organization's bank accounts; each has accountName, registrationNumber, accountNumber, and (optionally) attorneys.
  • bankRelation — the BankOrganizationRelation that 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 (the Administrator interface).
  • 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 — the BranchOffice this organization belongs to (optional).
  • isFirstTimeReportingdeprecated. This field is not maintained and always returns its default. To determine whether an organization is reporting for the first time, read bankReports[].type and check for FirstTime on 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)

Where to query / mutate