FinTS GraphQL Administration

Professionelle API-Dokumentation und interaktive Verwaltung für das FinTS Banking Backend. Voller Lese- und Schreibzugriff auf Stammdaten, Kontobewegungen und TAN-Verfahren.

GraphQL IDE öffnen
Wichtig: Konfiguriere den HTTP-Header X-API-KEY in der IDE für den Zugriff.

1. Bank & Benutzer anlegen

Die Grundlage: Zuerst muss eine Bank existieren, dann können sich Benutzer (mit einer sicheren PIN) registrieren.

mutation SetupBankAndUser {
  # 1. Bank anlegen
  createBank(input: {
    bankCode: "12345678"
    name: "Demo Bank AG"
  }) {
    id
    bankCode
    bankName
  }

  # 2. Benutzer anlegen (PIN wird serverseitig sicher gehasht)
  createUser(input: {
    bankId: 1
    userId: "max.mustermann"
    plaintextPin: "12345"
    firstName: "Max"
    lastName: "Mustermann"
  }) {
    id
    userId
    name
  }
}

2. Konto & initiales Guthaben

Nachdem der Benutzer existiert, können Konten mit initialem Saldo erstellt werden.

mutation CreateAccount {
  createAccount(input: {
    bankId: 1
    userId: 1
    iban: "DE12345678901234567890"
    accountNumber: "1234567890"
    currency: "EUR"
    balance: 2500.50
  }) {
    id
    iban
    balance
  }
}

3. Kontoumsätze (Transaktionen) verbuchen

Simulation von Geldeingängen und Abgängen für das angelegte Konto.

mutation CreateTransaction {
  createTransaction(input: {
    accountId: 1
    amount: -45.00
    currency: "EUR"
    isCredit: false
    bookingDate: "2026-05-13"
    valueDate: "2026-05-13"
    creditorName: "Supermarkt GmbH"
    bookingText: "Wocheneinkauf"
    status: "booked"
  }) {
    id
    amount
    creditorName
    status
  }
}

4. Daten abfragen (Queries mit Paging)

Alle Root-Queries und groessere Navigations-Collections (z.B. account.transactions) sind cursor-paginiert. Argumente: first/after (vorwaerts), last/before (rueckwaerts), zusaetzlich where und order. Response ist eine Connection mit nodes, edges, pageInfo und totalCount. Server-seitiges Hard-Limit: 250 Items pro Seite.

query GetUserWithRecentTransactions {
  users(
    where: { userId: { eq: "u1000001" } }
    first: 1
  ) {
    totalCount
    nodes {
      id
      name
      status
      # accounts ist flach (kleine Collection, kein Paging)
      accounts(order: { balance: DESC }) {
        iban
        balance
        currency
        # transactions ist paginiert — die naechste Seite holt
        # man mit (after: $endCursor, first: 25)
        transactions(
          order: { bookingDate: DESC }
          first: 5
        ) {
          totalCount
          nodes {
            amount
            creditorName
            bookingDate
          }
          pageInfo {
            hasNextPage
            endCursor
          }
        }
      }
    }
  }
}