Fintecture Account Information Services API

PSD2 Account Information Services. Retrieve PSU bank accounts, holders, balances, and transaction history after the PSU authenticates with their bank via the redirect or decoupled (mobile app) flow. Includes an AIS-based identity verification endpoint used to confirm the bank account holder name matches the merchant's customer record.

Fintecture Account Information Services API is one of 8 APIs that Fintecture publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 3 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Open Banking, AIS, PSD2, Account Information, and Bank Data. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 3 Naftiko capability specs, and 1 JSON Schema.

OpenAPI Specification

fintecture-ais-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Fintecture Account Information Services API
  description: >
    PSD2 Account Information Services. Authenticates a PSU at their bank using
    either the redirect or decoupled (mobile-app) model, then retrieves bank
    accounts, balances, holders, and transactions. Also exposes the AIS-backed
    identity verification endpoint.
  version: "v2"
  contact:
    name: Fintecture Support
    url: https://fintecture.com/contact

servers:
  - url: https://api.fintecture.com
    description: Production
  - url: https://api-sandbox.fintecture.com
    description: Sandbox

security:
  - BearerAuth: []

tags:
  - name: Authentication
    description: PSU bank authentication
  - name: Accounts
    description: Bank accounts, balances, and holders
  - name: Transactions
    description: Account transactions
  - name: Verification
    description: AIS-based identity verification

paths:
  /ais/v1/provider/{provider_id}/authorize:
    get:
      summary: Get Provider Authorization
      description: >
        Authenticates a PSU at their bank for AIS access. Returns either a
        redirect URL or triggers a decoupled authentication request on the PSU's
        bank mobile app, depending on the model the bank supports.
      operationId: getAisV1ProviderAuthorization
      tags: [Authentication]
      parameters:
        - in: path
          name: provider_id
          required: true
          schema: { type: string }
        - in: query
          name: redirect_uri
          schema: { type: string, format: uri }
        - in: query
          name: state
          schema: { type: string }
        - in: query
          name: psu_type
          schema: { type: string, enum: [retail, corporate] }
      responses:
        '200':
          description: Authorization details
          content:
            application/json:
              schema: { $ref: '#/components/schemas/AuthorizationResponse' }

  /ais/v1/provider/{provider_id}/authorize/decoupled:
    get:
      summary: Get Decoupled Provider Authorization
      description: >
        Poll the authentication status within the decoupled model. Status moves
        from PENDING -> COMPLETED on success, or FAILED on timeout/cancellation.
      operationId: getAisV1ProviderAuthorizationDecoupled
      tags: [Authentication]
      parameters:
        - in: path
          name: provider_id
          required: true
          schema: { type: string }
        - in: query
          name: session_id
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Decoupled status
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum: [PENDING, COMPLETED, FAILED]
                  code: { type: string }

  /ais/v2/connect:
    get:
      summary: Get AIS Connect Session
      description: Provides a connect session for a PSU to create a connection enabling AIS access.
      operationId: getAisV2Connect
      tags: [Authentication]
      parameters:
        - in: query
          name: redirect_uri
          schema: { type: string, format: uri }
        - in: query
          name: state
          schema: { type: string }
      responses:
        '200':
          description: Connect session URL
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    type: object
                    properties:
                      session_id: { type: string }
                      url: { type: string, format: uri }

  /ais/v1/customer/{customer_id}:
    delete:
      summary: Delete Provider Connection
      description: Deletes all active access tokens and PSU data linked to the requested connection.
      operationId: deleteAisV1Customer
      tags: [Authentication]
      parameters:
        - $ref: '#/components/parameters/CustomerIdPath'
      responses:
        '204':
          description: Connection deleted

  /ais/v1/customer/{customer_id}/accounts:
    get:
      summary: Get All Accounts
      description: Returns all accounts linked to a specific connection.
      operationId: getAisV1CustomerAccounts
      tags: [Accounts]
      parameters:
        - $ref: '#/components/parameters/CustomerIdPath'
      responses:
        '200':
          description: Accounts list
          content:
            application/json:
              schema: { $ref: '#/components/schemas/AccountsList' }

  /ais/v1/customer/{customer_id}/account/{account_id}:
    get:
      summary: Get Specific Account
      description: Returns information for a specific account.
      operationId: getAisV1CustomerAccount
      tags: [Accounts]
      parameters:
        - $ref: '#/components/parameters/CustomerIdPath'
        - $ref: '#/components/parameters/AccountIdPath'
      responses:
        '200':
          description: Account details
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Account' }

  /ais/v1/customer/{customer_id}/account/{account_id}/holders:
    get:
      summary: Get Account Holders
      description: Retrieves personal information of beneficiary owners — name, address, contact details.
      operationId: getAisV1CustomerAccountHolders
      tags: [Accounts]
      parameters:
        - $ref: '#/components/parameters/CustomerIdPath'
        - $ref: '#/components/parameters/AccountIdPath'
      responses:
        '200':
          description: Holders list
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items: { $ref: '#/components/schemas/AccountHolder' }

  /ais/v1/customer/{customer_id}/account/{account_id}/transactions:
    get:
      summary: Get Account Transactions
      description: Returns all transactions linked to the requested account.
      operationId: getAisV1CustomerAccountTransactions
      tags: [Transactions]
      parameters:
        - $ref: '#/components/parameters/CustomerIdPath'
        - $ref: '#/components/parameters/AccountIdPath'
        - in: query
          name: from
          schema: { type: string, format: date }
        - in: query
          name: to
          schema: { type: string, format: date }
      responses:
        '200':
          description: Transaction list
          content:
            application/json:
              schema: { $ref: '#/components/schemas/TransactionList' }

  /ais/v1/verification:
    post:
      summary: Create AIS Identity Verification
      description: Identity verification based on AIS capabilities.
      operationId: createAisV1Verification
      tags: [Verification]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                meta:
                  type: object
                  properties:
                    customer_id: { type: string }
                data:
                  type: object
                  properties:
                    attributes:
                      type: object
                      properties:
                        provider_id: { type: string }
                        expected_name: { type: string }
      responses:
        '200':
          description: Verification result
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Verification' }

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

  parameters:
    CustomerIdPath:
      in: path
      name: customer_id
      required: true
      schema: { type: string }
    AccountIdPath:
      in: path
      name: account_id
      required: true
      schema: { type: string }

  schemas:
    AuthorizationResponse:
      type: object
      properties:
        meta:
          type: object
          properties:
            url: { type: string, format: uri }
            session_id: { type: string }
            decoupled: { type: boolean }

    Account:
      type: object
      properties:
        id: { type: string }
        iban: { type: string }
        bic: { type: string }
        currency: { type: string }
        balances:
          type: array
          items: { $ref: '#/components/schemas/Balance' }
        type:
          type: string
          enum: [CACC, SVGS, LOAN, CARD, OTHR]

    Balance:
      type: object
      properties:
        type:
          type: string
          enum: [available, current, closingBooked, expected]
        amount: { type: string }
        currency: { type: string }
        timestamp: { type: string, format: date-time }

    AccountsList:
      type: object
      properties:
        data:
          type: array
          items: { $ref: '#/components/schemas/Account' }

    AccountHolder:
      type: object
      properties:
        name: { type: string }
        address: { type: string }
        email: { type: string, format: email }
        phone: { type: string }

    Transaction:
      type: object
      properties:
        id: { type: string }
        amount: { type: string }
        currency: { type: string }
        booking_date: { type: string, format: date }
        value_date: { type: string, format: date }
        description: { type: string }
        type:
          type: string
          enum: [debit, credit]
        counterparty:
          type: object
          properties:
            name: { type: string }
            iban: { type: string }

    TransactionList:
      type: object
      properties:
        data:
          type: array
          items: { $ref: '#/components/schemas/Transaction' }
        meta:
          type: object
          properties:
            count: { type: integer }

    Verification:
      type: object
      properties:
        id: { type: string }
        status:
          type: string
          enum: [verified, unverified, pending, failed]
        match_score: { type: number }
        verified_at: { type: string, format: date-time }