DBT Capital Banking API

Banking and payment operations

Operations 10

GET /banking/callback/roaring Callback from Roaring which fetches and stores data #
POST /banking/sessions/{sessionId}/accounts/{accountId}/payout Set account as payout account #
GET /banking/sessions/{sessionId}/accounts Get accounts owned by person id #
POST /banking/sessions/{sessionId}/verify Verify session #
GET /banking/sessions/{sessionId} Get session status #
POST /banking/sessions Create session #
POST /banking/sessions/{sessionId}/retry Retry session #
GET /banking/banks Get a list of all supported banks #
GET /banking/organizations/{orgId}/accounts/bank-accounts Get accounts owned by organization #
GET /banking/organizations/bank-accounts Get accounts owned by several organizations #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dbt-se:dbt-se-banking-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dbt-se-banking-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DBT Capital Banking API
  version: 1.0.0
  description: Banking and payment operations
servers:
- url: https://api.p.dbt.se
  description: Current environment
tags:
- name: Banking
  description: Banking and payment operations
paths:
  /banking/callback/roaring:
    get:
      tags:
      - Banking
      summary: Callback from Roaring which fetches and stores data
      x-source-file: js/node/hono/api/src/banking/routers/callback.ts
      security: []
      parameters:
      - schema:
          type: string
        required: false
        name: error
        in: query
      - schema:
          type: string
        required: false
        name: error_description
        in: query
      - schema:
          type: string
        required: false
        name: code
        in: query
      - schema:
          type: string
        required: true
        name: state
        in: query
      responses:
        '200':
          description: Successfully registered callback
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - internalError
                  message:
                    type: string
                required:
                - code
                - message
      operationId: getBankingCallbackRoaring
      x-operation-id-source: derived
  /banking/sessions/{sessionId}/accounts/{accountId}/payout:
    post:
      tags:
      - Banking
      summary: Set account as payout account
      x-source-file: js/node/hono/api/src/banking/routers/sessions/accounts.ts
      security:
      - JWT Bearer: []
      parameters:
      - schema:
          type: string
        required: true
        name: sessionId
        in: path
      - schema:
          type: string
        required: true
        name: accountId
        in: path
      responses:
        '204':
          description: Account set as payout account
        '400':
          description: Invalid status
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - invalidStatus
                  message:
                    type: string
                required:
                - code
                - message
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - forbidden
                  message:
                    type: string
                required:
                - code
                - message
        '404':
          description: Account not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - notFound
                  message:
                    type: string
                required:
                - code
                - message
      operationId: postBankingSessionsBySessionIdAccountsByAccountIdPayout
      x-operation-id-source: derived
  /banking/sessions/{sessionId}/accounts:
    get:
      tags:
      - Banking
      summary: Get accounts owned by person id
      x-source-file: js/node/hono/api/src/banking/routers/sessions/accounts.ts
      security:
      - JWT Bearer: []
      parameters:
      - schema:
          type: string
        required: true
        name: sessionId
        in: path
      responses:
        '200':
          description: Bank accounts linked to the person
          content:
            application/json:
              schema:
                type: object
                properties:
                  accounts:
                    type: array
                    items:
                      $ref: '#/components/schemas/BankAccount'
                required:
                - accounts
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - forbidden
                  message:
                    type: string
                required:
                - code
                - message
        '404':
          description: Not found
      operationId: getBankingSessionsBySessionIdAccounts
      x-operation-id-source: derived
  /banking/sessions/{sessionId}/verify:
    post:
      tags:
      - Banking
      summary: Verify session
      description: 'This endpoint will give you a URL in a secure way. The user will be able to connect to the bank using this URL.


        Some rules:

        1. If they already verified and we''re waiting for an external process: pending-external, we will send them the same link again.

        2. If they already connected we don''t give them a link.

        3. If we''re waiting on an external process but they are not the same user who verified then we don''t give them a link.

        4. If the session previously failed we don''t give them a link.


        These rules are represented in the error messages.'
      x-source-file: js/node/hono/api/src/banking/routers/sessions/index.ts
      security:
      - JWT Bearer: []
      parameters:
      - schema:
          type: string
        required: true
        name: sessionId
        in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                psuType:
                  type: string
                  enum:
                  - business
                  - personal
                bankName:
                  type: string
                userReturnUrl:
                  type: string
                  format: uri
                  description: Where you want the user to return after the entire process is done!
              required:
              - psuType
              - bankName
              - userReturnUrl
      responses:
        '200':
          description: Get banking url
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
                required:
                - url
        '400':
          description: Bad request where user is using the endpoint against design.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - not_found
                    - session_previously_connected
                    - session_previously_failed
                    - session_previously_verified_by_other
                    - session_previously_verified_by_user_but_link_missing
                    - session_previously_completed
                    - bank_authentication_failed
                required:
                - error
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - forbidden
                  message:
                    type: string
                required:
                - code
                - message
        '404':
          description: ID doesn't exist
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - notFound
                  message:
                    type: string
                required:
                - code
                - message
      operationId: postBankingSessionsBySessionIdVerify
      x-operation-id-source: derived
  /banking/sessions/{sessionId}:
    get:
      tags:
      - Banking
      summary: Get session status
      description: Get session info. We have a differing pending state. One is internal-pending which means the user has not yet left our system. And then external-pending which means we're waiting for an external process to finish.
      x-source-file: js/node/hono/api/src/banking/routers/sessions/index.ts
      security:
      - JWT Bearer: []
      parameters:
      - schema:
          type: string
        required: true
        name: sessionId
        in: path
      responses:
        '200':
          description: Status of session
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSessionResponseBody'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - forbidden
                  message:
                    type: string
                required:
                - code
                - message
        '404':
          description: ID doesn't exist
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - notFound
                  message:
                    type: string
                required:
                - code
                - message
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - internalError
                  message:
                    type: string
                required:
                - code
                - message
      operationId: getBankingSessionsBySessionId
      x-operation-id-source: derived
  /banking/sessions:
    post:
      tags:
      - Banking
      summary: Create session
      x-source-file: js/node/hono/api/src/banking/routers/sessions/index.ts
      security:
      - JWT Bearer: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                orgId:
                  type: string
                email:
                  type: string
                  format: email
              required:
              - orgId
              - email
      responses:
        '200':
          description: Session ID and URL for user to connect
          content:
            application/json:
              schema:
                type: object
                properties:
                  sessionId:
                    type: string
                  url:
                    type: string
                    format: uri
                required:
                - sessionId
                - url
        '404':
          description: Not found
      operationId: postBankingSessions
      x-operation-id-source: derived
  /banking/sessions/{sessionId}/retry:
    post:
      tags:
      - Banking
      summary: Retry session
      x-source-file: js/node/hono/api/src/banking/routers/sessions/index.ts
      security:
      - JWT Bearer: []
      parameters:
      - schema:
          type: string
        required: true
        name: sessionId
        in: path
      responses:
        '200':
          description: Session ID and URL for user to connect
          content:
            application/json:
              schema:
                type: object
                properties:
                  sessionId:
                    type: string
                  url:
                    type: string
                    format: uri
                required:
                - sessionId
                - url
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - not_valid_person
                    - forbidden
                  message:
                    type: string
                required:
                - code
                - message
        '404':
          description: ID doesn't exist
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - not_found
                  message:
                    type: string
                required:
                - code
                - message
      operationId: postBankingSessionsBySessionIdRetry
      x-operation-id-source: derived
  /banking/banks:
    get:
      tags:
      - Banking
      summary: Get a list of all supported banks
      x-source-file: js/node/hono/api/src/banking/routers/banks.ts
      security:
      - JWT Bearer: []
      responses:
        '200':
          description: An array of all supported banks with which ones should be displayed as favorite
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    bankLogo:
                      type: string
                    favorite:
                      type: boolean
                  required:
                  - name
                  - bankLogo
                  - favorite
        '404':
          description: Not found
      operationId: getBankingBanks
      x-operation-id-source: derived
  /banking/organizations/{orgId}/accounts/bank-accounts:
    get:
      tags:
      - Banking
      summary: Get accounts owned by organization
      description: Get accounts owned by org
      x-source-file: js/node/hono/api/src/banking/routers/organizations/accounts.ts
      security:
      - JWT Bearer: []
      parameters:
      - schema:
          type: string
        required: true
        name: orgId
        in: path
      responses:
        '200':
          description: Bank accounts linked to the organization
          content:
            application/json:
              schema:
                type: array
                items:
                  allOf:
                  - $ref: '#/components/schemas/BankAccount'
                  - type: object
                    properties:
                      connectingIdentity:
                        type: object
                        properties:
                          physicalPersonId:
                            type: string
                            format: uuid
                          maskedNationalIdentificationNumber:
                            type: string
                          nationalIdentificationNumber:
                            type: string
                          name:
                            type:
                            - string
                            - 'null'
                        required:
                        - physicalPersonId
                        - maskedNationalIdentificationNumber
                        - nationalIdentificationNumber
                        - name
                      orgId:
                        type: string
                      session:
                        $ref: '#/components/schemas/Session'
                    required:
                    - connectingIdentity
                    - orgId
                    - session
        '404':
          description: Not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - missingTrackedPersonId
                    - physicalPersonNotFound
                  message:
                    type: string
                required:
                - code
                - message
      operationId: getBankingOrganizationsByOrgIdAccountsBankAccounts
      x-operation-id-source: derived
  /banking/organizations/bank-accounts:
    get:
      tags:
      - Banking
      operationId: listBankAccountsByOrgIds
      summary: Get accounts owned by several organizations
      description: Get the accounts owned by each of the given organizations, in one request
      x-source-file: js/node/hono/api/src/banking/routers/organizations/index.ts
      security:
      - JWT Bearer: []
      parameters:
      - schema:
          type: array
          items:
            type: string
        required: true
        name: orgId
        in: query
      responses:
        '200':
          description: Bank accounts of the organizations, each carrying its orgId
          content:
            application/json:
              schema:
                type: array
                items:
                  allOf:
                  - $ref: '#/components/schemas/BankAccount'
                  - type: object
                    properties:
                      connectingIdentity:
                        type: object
                        properties:
                          physicalPersonId:
                            type: string
                            format: uuid
                          maskedNationalIdentificationNumber:
                            type: string
                          nationalIdentificationNumber:
                            type: string
                          name:
                            type:
                            - string
                            - 'null'
                        required:
                        - physicalPersonId
                        - maskedNationalIdentificationNumber
                        - nationalIdentificationNumber
                        - name
                      orgId:
                        type: string
                      session:
                        $ref: '#/components/schemas/Session'
                    required:
                    - connectingIdentity
                    - orgId
                    - session
        '404':
          description: Not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - missingTrackedPersonId
                    - physicalPersonNotFound
                  message:
                    type: string
                required:
                - code
                - message
components:
  schemas:
    GetSessionResponseBodyPendingFailed:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
          - failed
        failureReason:
          type:
          - string
          - 'null'
          enum:
          - cancelled-by-user
          - invalid-credentials
          - invalid-request
          - unknown
          - null
      required:
      - id
      - status
      - failureReason
      description: We failed to connect
    GetSessionResponseBody:
      oneOf:
      - $ref: '#/components/schemas/GetSessionResponseBodyPendingInternal'
      - $ref: '#/components/schemas/GetSessionResponseBodyPendingExternal'
      - $ref: '#/components/schemas/GetSessionResponseBodyPendingFailed'
      - $ref: '#/components/schemas/GetSessionResponseBodyPendingConnected'
      - $ref: '#/components/schemas/GetSessionResponseBodyPendingCompleted'
      discriminator:
        propertyName: status
        mapping:
          pending-internal: '#/components/schemas/GetSessionResponseBodyPendingInternal'
          pending-external: '#/components/schemas/GetSessionResponseBodyPendingExternal'
          failed: '#/components/schemas/GetSessionResponseBodyPendingFailed'
          connected: '#/components/schemas/GetSessionResponseBodyPendingConnected'
          completed: '#/components/schemas/GetSessionResponseBodyPendingCompleted'
    BankAccount:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        iban:
          type: string
        accountNumber:
          type:
          - string
          - 'null'
        clearingNumber:
          type:
          - string
          - 'null'
        bankName:
          type: string
        isPayout:
          type: boolean
      required:
      - id
      - name
      - iban
      - accountNumber
      - clearingNumber
      - bankName
      - isPayout
    GetSessionResponseBodyPendingConnected:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
          - connected
      required:
      - id
      - status
      description: We have received data
    GetSessionResponseBodyPendingCompleted:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
          - completed
      required:
      - id
      - status
      description: The user has selected which account is the payout account
    Session:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
          - pending-internal
          - pending-external
          - failed
          - connected
          - completed
        externalConnectUrl:
          type:
          - string
          - 'null'
          format: uri
        retry:
          type: boolean
        bankName:
          type:
          - string
          - 'null'
        email:
          type: string
        comment:
          type:
          - string
          - 'null'
        orgId:
          type: string
        provider:
          type: string
        providerState:
          type:
          - string
          - 'null'
        userReturnUrl:
          type:
          - string
          - 'null'
          format: uri
        trackedPersonId:
          type:
          - string
          - 'null'
      required:
      - id
      - status
      - externalConnectUrl
      - retry
      - bankName
      - email
      - comment
      - orgId
      - provider
      - providerState
      - userReturnUrl
      - trackedPersonId
    GetSessionResponseBodyPendingInternal:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
          - pending-internal
      required:
      - id
      - status
      description: We're waiting on an internal process
    GetSessionResponseBodyPendingExternal:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
          - pending-external
        externalUrl:
          type: string
          format: uri
      required:
      - id
      - status
      - externalUrl
      description: We're waiting on an external process
  securitySchemes:
    JWT_Bearer:
      bearerFormat: JWT
      handlers:
      - null
      - null
      scheme: bearer
      type: http
    Cookie:
      handlers:
      - null
      - null
      name: .dbt.accessToken
      scheme: cookie
      type: http