Skip to main content

Querying bank packages

A bank package (bankReport in the schema) is the bundle of documents an organization submits to satisfy ajour requirements. Use these queries to list packages submitted to your bank or to fetch a specific one.

All examples require a JWT — get one from the homepage first.

List bank reports

query listBankReports($first: Int) {
bankReports(first: $first) {
totalCount
nodes {
id
publishedTime
finishedDate
isRejected
type
}
}
}

Sortable fields: publishedTime, organizationId. Filterable fields: publishedTime, organizationId.

Get a bank report by ID

Note that bankReportById returns a list ([bankReport!]!) — usually with one or zero elements. Treat the result as an array.

query getBankReportById($id: UUID!) {
bankReportById(id: $id) {
id
publishedTime
finishedDate
isRejected
rejectedReason
type
}
}

If the report belongs to a different bank or has been cancelled, the list is empty.

Expand the package contents

A bank report wraps a lot of related entities — statutes, summary, accounting, board members, attorneys, business volume, tax residency, and more. Pull only the slices you need.

query bankReportContents($id: UUID!) {
bankReportById(id: $id) {
id
publishedTime
type
organization {
id
name
vatNumber
}
isStatutesRequired
statute {
state
signedFile {
fileName
}
}
summary {
signedSummaryFile {
fileName
}
}
administratorChanges {
administratorChange {
id
isNew
hasChanged
}
}
}
}

For the full set of fields available on bankReport, browse the live schema in /graphql — the package surfaces every related document so the field list is large and best explored interactively.

Filter by organization

To pull every report for a single organization, filter on organizationId.

query reportsForOrganization($organizationId: UUID!) {
bankReports(where: { organizationId: { eq: $organizationId } }, order: [{ publishedTime: DESC }], first: 20) {
nodes {
id
publishedTime
isRejected
}
}
}

Filter by date range

publishedTime accepts the standard date operators (gte, lt, gt, lte, eq, neq). Combine with and to build a window.

query reportsInWindow($from: DateTime!, $to: DateTime!) {
bankReports(
where: { and: [
{ publishedTime: { gte: $from } }
{ publishedTime: { lt: $to } }
] }
order: [{ publishedTime: DESC }]
first: 50
) {
totalCount
nodes {
id
publishedTime
isRejected
type
}
}
}

Download document files

Every signed component is exposed as an EncryptedBlobFile (or File/BlobFile) with a base64 field. Project base64 only when you need the bytes — these payloads are large.

query packageFiles($id: UUID!) {
bankReportById(id: $id) {
id
statute {
state
signedFile {
fileName
fileExtension
base64
}
}
summary {
signedSummaryFile {
fileName
fileExtension
base64
}
}
accounting {
signedFile {
fileName
fileExtension
base64
}
}
constitution {
overviewFile { fileName base64 }
pepFile { fileName base64 }
dismissedAdministratorsFile { fileName base64 }
}
selfDeclaration {
signedFile { fileName base64 }
}
legalDocuments {
name
signedFile { fileName base64 }
}
}
}

For metadata-only listings (e.g. "what files are on this package?"), drop base64 and keep only fileName / fileExtension.

Inspect administrator changes

administratorChanges wraps a list of AdministratorChange — an interface with two concrete implementations. Use inline fragments to project the type-specific fields.

query bankReportAdministratorChanges($id: UUID!) {
bankReportById(id: $id) {
id
administratorChanges {
administratorChange {
id
isNew
isLeaving
isAuthorizedSignatory
isAuthorizedSignatoryChanged
hasRolesChanged
hasChanged
attorneyChanges {
rights
bankCard
hasChanged
bankAccount {
accountName
registrationNumber
accountNumber
}
}
... on BoardMemberChange {
boardMember {
id
user {
id
firstname
lastname
}
}
boardMemberRoleChanges {
role
}
}
... on ExternalAdministratorChange {
externalAdministrator {
id
user {
id
firstname
lastname
}
}
externalAdministratorRoleChanges {
role
}
}
}
}
}
}

Inspect approvers and signing state

The approvers list shows who must sign the package and where they are in the signing flow.

query bankReportApprovers($id: UUID!) {
bankReportById(id: $id) {
id
approvers {
id
isLegitimationRequired
isSignatureRequired
signatoryInformation {
state
signatureTime
}
administrator {
id
user {
id
firstname
lastname
email
}
}
}
}
}

signatoryInformation.state is ApproverStatePENDING, SIGNED, REJECTED, ERROR, or EXEMPT.

Tax residency changes

query bankReportTaxResidencyChanges($id: UUID!) {
bankReportById(id: $id) {
id
isTaxResidencyRequired
taxResidencyChanges {
taxResidencyRelation {
tin
country {
alpha2
name
}
}
}
}
}

Combine bank info with reports in one request

GraphQL lets you batch unrelated reads. Pulling the bank's name alongside its latest reports avoids a round-trip on first page load.

query bankOverviewWithRecentReports($first: Int) {
bank {
id
name
}
bankReports(order: [{ publishedTime: DESC }], first: $first) {
totalCount
nodes {
id
publishedTime
isRejected
type
}
}
}