Deutsche Bank Order Entry API

Create an order or preview an order creation

Operations 4

POST / Order entry #
POST /bulk Bulk order entry #
POST /preview Order entry preview #
POST /estimatedExpense Cost information #

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/deutsche-bank-order-entry-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

deutsche-bank-order-entry-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: dbapi-investments-orders Order Entry API
  description: 'The Order Service API is a dbAPI platform service that enables developers and customers to create their own investment applications for executing securities orders (stocks, funds, bonds or ETFs) on the German stock exchanges or on the most important foreign stock exchanges.

    The service enables client applications to allow users to create, view, modify or cancel their orders in near real-time in the Deutsche Bank order management system.'
  termsOfService: https://developer.db.com/termsandconditions
  contact:
    url: https://developer.db.com/contact
    email: bank.api@db.com
  version: v1
servers:
- url: https://simulator-api.db.com:443/gw/dbapi/investments/orders/v1
tags:
- name: Order Entry
  description: Create an order or preview an order creation
paths:
  /:
    post:
      tags:
      - Order Entry
      description: This API call places an order for execution. In case of successful validation (order is accepted) the API returns an order confirmation including an estimated expense report (also for regulatory reasons). In parallel, the order is forwarded to the order system for actual execution. Once the order has been submitted, the order details and its current state can be viewed by invoking the order book call (GET).
      operationId: orderEntry
      parameters:
      - name: idempotency-id
        in: header
        description: Unique id of the service call. Should be resent during retries to avoid multiple processing of the same request
        required: true
        style: simple
        explode: false
        schema:
          type: string
          format: uuid
      - name: OTP
        in: header
        description: The one-time password to gain access to sensitive data
        required: false
        style: simple
        explode: false
        schema:
          type: string
      - name: previewSignature
        in: header
        description: JWT for order validation - mandatory except for individual use cases
        required: false
        style: simple
        explode: false
        schema:
          type: string
      - name: Correlation-Id
        in: header
        description: Free form key controlled by the caller e.g. uuid
        required: false
        schema:
          maxLength: 50
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderEntryRequest'
        required: true
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderEntryResponse'
        '400':
          description: Unsuccessful operation, returns http status 400. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 2
                message: Invalid value for %s.
              - code: 3
                message: 'Invalid value for %s: %s.'
              - code: 17
                message: Invalid OTP.
              - code: 102
                message: Invalid value for parameter externalOrderReference or securityAccountId.
              - code: 111
                message: 2FA method is not ACTIVE.
              - code: 114
                message: Unable to identify transaction by Id.
              - code: 127
                message: Booking date from must precede booking date to.
              - code: 131
                message: Invalid value for 'sortBy'. Valid values are 'bookingDate[ASC]' and 'bookingDate[DESC]'.
              - code: 601
                message: Order deletion/modification not allowed due to order state.
              - code: 602
                message: Multiple positions exist. Please contact your personal bank advisor.
              - code: 603
                message: Insufficient stock
              - code: 604
                message: Security data not found
              - code: 605
                message: Missing authorization
              - code: 606
                message: Quantity not tradeable
              - code: 607
                message: No suitable position found
              - code: 609
                message: Only one price should be provided for the order limit
              - code: 610
                message: 'The order exceeds the maximum available quota: Free quota: {freeQuota}'
              - code: 611
                message: Not enough securities with minimum holding period available
              - code: 613
                message: Ordering quotas of OEREFs (Open-Ended Real Estate Funds) bought after 21.07.2013 and cannot be returned
              - code: 614
                message: Ordering quotas of OEREFs (Open-Ended Real Estate Funds) bought partly after 21.07.2013 and cannot be returned
              - code: 615
                message: Security not tradeable
              - code: 616
                message: Order not in orderbook
              - code: 617
                message: Minimum order amount not reached
              - code: 620
                message: CashAccount does not exist
              - code: 621
                message: Customer is not allowed to order
              - code: 622
                message: Security Account is not valid for orders
              - code: 623
                message: Liquidity not sufficient for order
              - code: 624
                message: MarketPlace does not exist
              - code: 633
                message: SecurityAccount does not exist
              - code: 634
                message: ExpiryDate is before current date
              - code: 635
                message: Invalid blockingDate
              - code: 636
                message: ExpiryDate must be a business day
              - code: 637
                message: Setting a limit when ordering over the capital management company is not possible
              - code: 638
                message: Setting an expiry date when ordering over the capital management company is not possible
              - code: 639
                message: Either WKN or ISIN must be provided
              - code: 640
                message: invalid preview Signature
              - code: 641
                message: preview Signature expired
              - code: 642
                message: preview Signature order parameter mismatch
              - code: 643
                message: Unique external order reference missing
              - code: 654
                message: Invalid limit price/stop price.
              - code: 655
                message: The order is part of a bulk order and cannot be changed.
              - code: 656
                message: addOns.expiryDate not allowed with type of addOns.restriction
              - code: 657
                message: OTC market place not allowed
              - code: 658
                message: Maximum addOns.expiryDate exceeded.
              - code: 659
                message: Token doesn't exist
              - code: 660
                message: No price returned by PriceModule
              - code: 661
                message: BestEx could not be retrieved for holding recommendation
              - code: 662
                message: No data for given wkn found
              - code: 664
                message: Mismatching ccy for the given security
              - code: 665
                message: Security not tradeable with market place
              - code: 666
                message: Best Execution stock market could not be determined
              - code: 667
                message: Portfolio not found
              - code: 668
                message: Security data not found
              - code: 670
                message: Market place ID not provided
              - code: 671
                message: The order cannot be cancelled, it is already executed.
              - code: 673
                message: Investment decider was not provided
              - code: 699
                message: reportToken doesn't exist
              - code: 701
                message: 'validation not successful: consent information is not available, but required.'
              - code: 702
                message: 'validation not successful: consent information cannot be validated completely.'
              - code: 703
                message: The user’s investment decision experience rating needs to be updated. The required steps can be performed within the Online Banking.
        '401':
          description: Unsuccessful operation, returns http status 401. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 401
                message: The requested function requires a SCA Level Authentication.
              - code: 644
                message: Order type is not allowed for user
              - code: 645
                message: User not allowed to use (2FA) session
              - code: 646
                message: Daily order limit exceeded
              - code: 647
                message: 2FA for session renewal required. Limit exceeded
              - code: 648
                message: 2FA for session renewal required. Time exceeded
              - code: 649
                message: 2FA for session renewal required. Transaction count greater than max transaction count
              - code: 650
                message: Business authorisation issue. Cash account not found
              - code: 651
                message: Business authorisation issue. Security account not found
              - code: 652
                message: Business authorisation issue. Partner ID not found
              - code: 653
                message: Business authorisation issue. Client ID setup incorrect
              - code: 672
                message: Investment decider rejected
        '500':
          description: Unsuccessful operation, returns http status 500. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 669
                message: Backend responded with an unexpected SA Key
      security:
      - api_auth_code:
        - order_securities
      x-codegen-request-body-name: body
      summary: Order entry
      x-summary-source: derived
  /bulk:
    post:
      tags:
      - Order Entry
      description: This API call places a bulk order for execution. Instead of placing a separate order for each customer, a block order covers the entire number of units required for a specific security. In case of successful validation (order is accepted) the order is forwarded to the order system for actual execution. Afterwards the total number of units is allocated to the individual customer securities accounts included in the given list. This procedure enables a group of customers for whom a security is to be acquired or sold to be treated as equally as possible. Once the order has been submitted, the order details and its current state can be viewed by invoking the order book call (GET).
      operationId: bulkOrderEntry
      parameters:
      - name: idempotency-id
        in: header
        description: Unique id of the service call. Should be resent during retries to avoid multiple processing of the same request
        required: true
        style: simple
        explode: false
        schema:
          type: string
          format: uuid
      - name: OTP
        in: header
        description: The one-time password to gain access to sensitive data
        required: false
        style: simple
        explode: false
        schema:
          type: string
      - name: previewSignature
        in: header
        description: JWT for order validation - mandatory except for individual use cases
        required: false
        style: simple
        explode: false
        schema:
          type: string
      - name: Correlation-Id
        in: header
        description: Free form key controlled by the caller e.g. uuid
        required: false
        schema:
          maxLength: 50
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkOrderEntryRequest'
        required: true
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOrderEntryResponse'
        '400':
          description: Unsuccessful operation, returns http status 400. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 2
                message: Invalid value for %s.
              - code: 3
                message: 'Invalid value for %s: %s.'
              - code: 17
                message: Invalid OTP.
              - code: 102
                message: Invalid value for parameter externalOrderReference or securityAccountId.
              - code: 111
                message: 2FA method is not ACTIVE.
              - code: 114
                message: Unable to identify transaction by Id.
              - code: 127
                message: Booking date from must precede booking date to.
              - code: 131
                message: Invalid value for 'sortBy'. Valid values are 'bookingDate[ASC]' and 'bookingDate[DESC]'.
              - code: 601
                message: Order deletion/modification not allowed due to order state.
              - code: 602
                message: Multiple positions exist. Please contact your personal bank advisor.
              - code: 603
                message: Insufficient stock
              - code: 604
                message: Security data not found
              - code: 605
                message: Missing authorization
              - code: 606
                message: Quantity not tradeable
              - code: 607
                message: No suitable position found
              - code: 609
                message: Only one price should be provided for the order limit
              - code: 610
                message: 'The order exceeds the maximum available quota: Free quota: {freeQuota}'
              - code: 611
                message: Not enough securities with minimum holding period available
              - code: 613
                message: Ordering quotas of OEREFs (Open-Ended Real Estate Funds) bought after 21.07.2013 and cannot be returned
              - code: 614
                message: Ordering quotas of OEREFs (Open-Ended Real Estate Funds) bought partly after 21.07.2013 and cannot be returned
              - code: 615
                message: Security not tradeable
              - code: 616
                message: Order not in orderbook
              - code: 617
                message: Minimum order amount not reached
              - code: 620
                message: CashAccount does not exist
              - code: 621
                message: Customer is not allowed to order
              - code: 622
                message: Security Account is not valid for orders
              - code: 623
                message: Liquidity not sufficient for order
              - code: 624
                message: MarketPlace does not exist
              - code: 633
                message: SecurityAccount does not exist
              - code: 634
                message: ExpiryDate is before current date
              - code: 635
                message: Invalid blockingDate
              - code: 636
                message: ExpiryDate must be a business day
              - code: 637
                message: Setting a limit when ordering over the capital management company is not possible
              - code: 638
                message: Setting an expiry date when ordering over the capital management company is not possible
              - code: 639
                message: Either WKN or ISIN must be provided
              - code: 640
                message: invalid preview Signature
              - code: 641
                message: preview Signature expired
              - code: 642
                message: preview Signature order parameter mismatch
              - code: 643
                message: Unique external order reference missing
              - code: 654
                message: Invalid limit price/stop price.
              - code: 655
                message: The order is part of a bulk order and cannot be changed.
              - code: 656
                message: addOns.expiryDate not allowed with type of addOns.restriction
              - code: 657
                message: OTC market place not allowed
              - code: 658
                message: Maximum addOns.expiryDate exceeded.
              - code: 659
                message: Token doesn't exist
              - code: 660
                message: No price returned by PriceModule
              - code: 661
                message: BestEx could not be retrieved for holding recommendation
              - code: 662
                message: No data for given wkn found
              - code: 664
                message: Mismatching ccy for the given security
              - code: 665
                message: Security not tradeable with market place
              - code: 666
                message: Best Execution stock market could not be determined
              - code: 667
                message: Portfolio not found
              - code: 668
                message: Security data not found
              - code: 670
                message: Market place ID not provided
              - code: 671
                message: The order cannot be cancelled, it is already executed.
              - code: 673
                message: Investment decider was not provided
              - code: 699
                message: reportToken doesn't exist
              - code: 701
                message: 'validation not successful: consent information is not available, but required.'
              - code: 702
                message: 'validation not successful: consent information cannot be validated completely.'
              - code: 703
                message: The user’s investment decision experience rating needs to be updated. The required steps can be performed within the Online Banking.
        '401':
          description: Unsuccessful operation, returns http status 401. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 401
                message: The requested function requires a SCA Level Authentication.
              - code: 644
                message: Order type is not allowed for user
              - code: 645
                message: User not allowed to use (2FA) session
              - code: 646
                message: Daily order limit exceeded
              - code: 647
                message: 2FA for session renewal required. Limit exceeded
              - code: 648
                message: 2FA for session renewal required. Time exceeded
              - code: 649
                message: 2FA for session renewal required. Transaction count greater than max transaction count
              - code: 650
                message: Business authorisation issue. Cash account not found
              - code: 651
                message: Business authorisation issue. Security account not found
              - code: 652
                message: Business authorisation issue. Partner ID not found
              - code: 653
                message: Business authorisation issue. Client ID setup incorrect
              - code: 672
                message: Investment decider rejected
        '500':
          description: Unsuccessful operation, returns http status 500. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 669
                message: Backend responded with an unexpected SA Key
      security:
      - api_auth_code:
        - order_securities
      x-codegen-request-body-name: body
      summary: Bulk order entry
      x-summary-source: derived
  /preview:
    post:
      tags:
      - Order Entry
      description: This API call simulates an order placement. The order is validated but not executed (by the order system). Beside price and total amount an expense estimation (report) is created to review estimated costs and expenses before submitting an order for actual execution. The preview order is not stored in the DB systems (and therefore not included in the order book).
      operationId: orderEntryPreview
      parameters:
      - name: Correlation-Id
        in: header
        description: Free form key controlled by the caller e.g. uuid
        required: false
        schema:
          maxLength: 50
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderEntryRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderEntryPreviewResponse'
        '400':
          description: Unsuccessful operation, returns http status 400. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 2
                message: Invalid value for %s.
              - code: 3
                message: 'Invalid value for %s: %s.'
              - code: 17
                message: Invalid OTP.
              - code: 102
                message: Invalid value for parameter externalOrderReference or securityAccountId.
              - code: 111
                message: 2FA method is not ACTIVE.
              - code: 114
                message: Unable to identify transaction by Id.
              - code: 127
                message: Booking date from must precede booking date to.
              - code: 131
                message: Invalid value for 'sortBy'. Valid values are 'bookingDate[ASC]' and 'bookingDate[DESC]'.
              - code: 601
                message: Order deletion/modification not allowed due to order state.
              - code: 602
                message: Multiple positions exist. Please contact your personal bank advisor.
              - code: 603
                message: Insufficient stock
              - code: 604
                message: Security data not found
              - code: 605
                message: Missing authorization
              - code: 606
                message: Quantity not tradeable
              - code: 607
                message: No suitable position found
              - code: 609
                message: Only one price should be provided for the order limit
              - code: 610
                message: 'The order exceeds the maximum available quota: Free quota: {freeQuota}'
              - code: 611
                message: Not enough securities with minimum holding period available
              - code: 613
                message: Ordering quotas of OEREFs (Open-Ended Real Estate Funds) bought after 21.07.2013 and cannot be returned
              - code: 614
                message: Ordering quotas of OEREFs (Open-Ended Real Estate Funds) bought partly after 21.07.2013 and cannot be returned
              - code: 615
                message: Security not tradeable
              - code: 616
                message: Order not in orderbook
              - code: 617
                message: Minimum order amount not reached
              - code: 620
                message: CashAccount does not exist
              - code: 621
                message: Customer is not allowed to order
              - code: 622
                message: Security Account is not valid for orders
              - code: 623
                message: Liquidity not sufficient for order
              - code: 624
                message: MarketPlace does not exist
              - code: 633
                message: SecurityAccount does not exist
              - code: 634
                message: ExpiryDate is before current date
              - code: 635
                message: Invalid blockingDate
              - code: 636
                message: ExpiryDate must be a business day
              - code: 637
                message: Setting a limit when ordering over the capital management company is not possible
              - code: 638
                message: Setting an expiry date when ordering over the capital management company is not possible
              - code: 639
                message: Either WKN or ISIN must be provided
              - code: 640
                message: invalid preview Signature
              - code: 641
                message: preview Signature expired
              - code: 642
                message: preview Signature order parameter mismatch
              - code: 643
                message: Unique external order reference missing
              - code: 654
                message: Invalid limit price/stop price.
              - code: 655
                message: The order is part of a bulk order and cannot be changed.
              - code: 656
                message: addOns.expiryDate not allowed with type of addOns.restriction
              - code: 657
                message: OTC market place not allowed
              - code: 658
                message: Maximum addOns.expiryDate exceeded.
              - code: 659
                message: Token doesn't exist
              - code: 660
                message: No price returned by PriceModule
              - code: 661
                message: BestEx could not be retrieved for holding recommendation
              - code: 662
                message: No data for given wkn found
              - code: 664
                message: Mismatching ccy for the given security
              - code: 665
                message: Security not tradeable with market place
              - code: 666
                message: Best Execution stock market could not be determined
              - code: 667
                message: Portfolio not found
              - code: 668
                message: Security data not found
              - code: 670
                message: Market place ID not provided
              - code: 671
                message: The order cannot be cancelled, it is already executed.
              - code: 673
                message: Investment decider was not provided
              - code: 699
                message: reportToken doesn't exist
              - code: 701
                message: 'validation not successful: consent information is not available, but required.'
              - code: 702
                message: 'validation not successful: consent information cannot be validated completely.'
              - code: 703
                message: The user’s investment decision experience rating needs to be updated. The required steps can be performed within the Online Banking.
        '401':
          description: Unsuccessful operation, returns http status 401. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 401
                message: The requested function requires a SCA Level Authentication.
              - code: 644
                message: Order type is not allowed for user
              - code: 645
                message: User not allowed to use (2FA) session
              - code: 646
                message: Daily order limit exceeded
              - code: 647
                message: 2FA for session renewal required. Limit exceeded
              - code: 648
                message: 2FA for session renewal required. Time exceeded
              - code: 649
                message: 2FA for session renewal required. Transaction count greater than max transaction count
              - code: 650
                message: Business authorisation issue. Cash account not found
              - code: 651
                message: Business authorisation issue. Security account not found
              - code: 652
                message: Business authorisation issue. Partner ID not found
              - code: 653
                message: Business authorisation issue. Client ID setup incorrect
              - code: 672
                message: Investment decider rejected
        '500':
          description: Unsuccessful operation, returns http status 500. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 669
                message: Backend responded with an unexpected SA Key
      security:
      - api_auth_code:
        - order_securities
      x-codegen-request-body-name: body
      summary: Order entry preview
      x-summary-source: derived
  /estimatedExpense:
    post:
      tags:
      - Order Entry
      description: This API call returns cost information for the given security.
      operationId: costInformation
      parameters:
      - name: Correlation-Id
        in: header
        description: Free form key controlled by the caller e.g. uuid
        required: false
        schema:
          maxLength: 50
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EstimatedExpenseRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EstimatedExpenseResponse'
        '400':
          description: Unsuccessful operation, returns http status 400. See 'example' property for possible values.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
              - code: 2
                message: Invalid value for %s.
              - code: 3
                message: 'Invalid value for %s: %s.'
              - code: 17
                message: Invalid OTP.
              - code: 102
                message: Invalid value for parameter externalOrderReference or securityAccountId.
              - code: 111
                message: 2FA method is not ACTIVE.
              - code: 114
                message: Unable to identify transaction by Id.
              - code: 127
                message: Booking date from must precede booking date to.
              - code: 131
                message: Invalid value for 'sortBy'. Valid values are 'bookingDate[ASC]' and 'bookingDate[DESC]'.
              - code: 601
                message: Order deletion/modification not allowed due to order state.
              - code: 602
                message: Multiple positions exist. Please contact your personal bank advisor.
              - code: 603
                message: Insufficient stock
              - code: 604
                message: Security data not found
              - code: 605
                message: Missing authorization
              - code: 606
                message: Quantity not tradeable
              - code: 607
                message: No suitable position found
              - code: 609
                message: Only one price should be provided for the order limit
              - code: 610
                message: 'The order exceeds the maximum available quota: Free quota: {freeQuota}'
              - code: 611
                message: Not enough securities with mi

# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/deutsche-bank/refs/heads/main/openapi/deutsche-bank-order-entry-api-openapi.yml