BMO

BMO Account Information API

Retrieves account details, balances, and transaction information for Online Banking for Business accounts, secured with OAuth 2.0 and a client API key on BMO's IBM API Connect open-banking gateway.

OpenAPI Specification

bmo-account-information-openapi.json Raw ↑
{
  "openapi": "3.0.0",
  "info": {
    "version": "5.3.0",
    "title": "Account Information",
    "description": "Retrieve real-time account and transaction information for all your authorized BMO accounts without the need to switch applications.",
    "x-api-id": "BMO-ENT-7673dc36-7935-44e4-aeff-3c9ddd5d8e85",
    "x-bmoservicedomain-name": "Commercial-sb",
    "x-api-specification-compliant": true,
    "x-audience": "company-internal",
    "x-bmo-api-type": "internal-api",
    "x-bmo-api-provider-id": 3284,
    "x-ibm-name": "account-information",
    "x-ibm-summary": ""
  },
  "tags": [
    {
      "name": "Account Information",
      "description": "Query all information for a set of accounts provided in the payload"
    },
    {
      "name": "Account Transactions",
      "description": "Search for account transactions"
    }
  ],
  "paths": {
    "/accounts": {
      "get": {
        "x-dataclassification-code": "Confidential",
        "operationId": "Search for Accounts",
        "tags": [
          "Account Information"
        ],
        "description": "Search for Authorized Accounts",
        "summary": "Search for Authorized Accounts",
        "parameters": [
          {
            "name": "accountIds",
            "in": "query",
            "description": "Comma separated list of account ids",
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "startTime",
            "in": "query",
            "description": "Please ignore Start time",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "endTime",
            "in": "query",
            "description": "Please ignore End time",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "resultType",
            "in": "query",
            "description": "Flag to indicate if you want a lightweight array of descriptors or full account details. If set to `lightweight`, should only return the fields associated with the `AccountDescriptor` entity. This field is not required, but defaults to lightweight",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "lightweight",
                "details"
              ],
              "default": "lightweight"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Opaque cursor used by the provider to send the next set of records",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of elements that the consumer wishes to receive - Providers should implement reasonable defaults and maximum",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Array of accounts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAccounts"
                },
                "examples": {
                  "example1": {
                    "value": {
                      "page": {
                        "nextOffset": "2",
                        "total": 3
                      },
                      "links": {
                        "next": {
                          "href": "/accounts?offSet=2&limit=10"
                        }
                      },
                      "accounts": [
                        {
                          "depositAccount": {
                            "accountId": "8be3jd08sndsj33h2uhb423j",
                            "accountNumber": "4809372058",
                            "description": "dposit acc desc",
                            "hostAccountName": "My Checking Acc XXXX3223",
                            "accountType": "DDA",
                            "currency": {
                              "currencyCode": "USD"
                            }
                          }
                        },
                        {
                          "depositAccount": {
                            "accountId": "6acs6d87c8as9c7s97c7sd90",
                            "accountNumber": "994208420",
                            "description": "account 2 description",
                            "hostAccountName": "Deposit account XXXX943",
                            "accountType": "FCA",
                            "currency": {
                              "currencyCode": "EUR"
                            }
                          }
                        },
                        {
                          "locAccount": {
                            "accountId": "2w0d5a4sdf0fx0x1",
                            "accountNumber": "9001201858",
                            "description": "locAccount cad",
                            "hostAccountName": "My loc Acc XXXX9979",
                            "accountType": "LOAN",
                            "currency": {
                              "currencyCode": "CAD"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was not accepted, often caused by a missing required parameter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "API key provided was invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - the user is not authorized to use this resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource could not be found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests hit the API in too short of a period",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Integration or Backend Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/{accountId}": {
      "get": {
        "x-dataclassification-code": "Confidential",
        "operationId": "Get an Account",
        "tags": [
          "Account Information"
        ],
        "description": "Get an Account",
        "summary": "Get an Account",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account Identifier",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "This can be one of LoanAccount, DepositAccount, LocAccount, or InvestmentAccount",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAccount"
                },
                "examples": {
                  "example1": {
                    "value": {
                      "depositAccount": {
                        "accountId": "b99bb688b7cf877ef111afd9c23110059b2912f37b5c24c6b9d2811850d945fa",
                        "accountNumber": "1095355",
                        "currency": {
                          "currencyCode": "USD"
                        },
                        "hostAccountName": "XIM USD1",
                        "accountType": "DDA",
                        "fiAttributes": [
                          {
                            "name": "1DayFloat",
                            "value": 1706739.05
                          },
                          {
                            "name": "2orMoreDaysFloat",
                            "value": 2444.77
                          },
                          {
                            "name": "OpenDate",
                            "value": "2003-06-26"
                          },
                          {
                            "name": "StatementName",
                            "value": "ALPINE TOTAL DYNAMIC DIVIDEND FUND"
                          }
                        ],
                        "status": "OPEN",
                        "balanceAsOf": "1975-11-18",
                        "currentBalance": -622390531.27,
                        "interestYtd": 0,
                        "priorInterestRate": 0.5
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was not accepted, often caused by a missing required parameter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "API key provided was invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - the user is not authorized to use this resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource could not be found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests hit the API in too short of a period",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Integration or Backend Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/{accountId}/transactions": {
      "get": {
        "x-dataclassification-code": "Confidential",
        "operationId": "Search for Account Transactions",
        "tags": [
          "Account Transactions"
        ],
        "description": "Search for Account Transactions",
        "summary": "Search for Account Transactions",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account Identifier",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "in": "query",
            "description": "Start time for use in retrieval of transactions",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "endTime",
            "in": "query",
            "description": "End time for use in retrieval of transactions",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Opaque cursor used by the provider to send the next set of records",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of elements that the consumer wishes to receive - Providers should implement reasonable defaults and maximum",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "distinct",
            "in": "header",
            "schema": {
              "type": "boolean"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Paged collection of transactions, which can be one of DepositTransaction, LoanTransaction, LocTransaction or InvestmentTransaction",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Transactions"
                },
                "examples": {
                  "example1": {
                    "value": {
                      "page": {
                        "nextOffset": "2",
                        "total": 3
                      },
                      "links": {
                        "next": {
                          "href": "/accounts/33333/transactions?offSet=2&limit=10"
                        }
                      },
                      "transactions": [
                        {
                          "depositTransaction": {
                            "accountId": "10001",
                            "transactionId": "20001",
                            "postedTimestamp": "2017-11-05 13:15:30.7",
                            "description": "FED REF=000119        LTN=J7B74I1C        TTM=2024/10/22 15:03        RECEIVED AT=2024/10/22 15:03        ORIG BANK ABA=307088754        ORIG BANK=CoBank, ACB        REC BANK ABA=071000288        REC BANK=BMO Bank National        TRANS TYPE=CUSTOMER TRANSF",
                            "debitCreditMemo": "CREDIT",
                            "amount": "1200.42",
                            "transactionTimestamp": "2025-06-19 07:57:00.0",
                            "fiAttributes": [
                              {
                                "name": "ValueDate",
                                "value": "2025-06-19 07:57:00.0"
                              },
                              {
                                "name": "Posted",
                                "value": "2025-06-19 07:57:00.0"
                              },
                              {
                                "name": "TransactionType",
                                "value": "CREDIT"
                              }
                            ],
                            "BAILevel": "Credit Transaction",
                            "BAICode": "208",
                            "BAIName": "Incoming Money Transfer",
                            "bankRefNo": 271900035,
                            "custRefNo": "241022105844",
                            "fundType": "Distributed Availibility (fixed)",
                            "text": "FED REF=000119        LTN=J7B74I1C        TTM=2024/10/22 15:03        RECEIVED AT=2024/10/22 15:03        ORIG BANK ABA=307088754        ORIG BANK=CoBank, ACB        REC BANK ABA=071000288        REC BANK=BMO Bank National        TRANS TYPE=CUSTOMER TRANSFER        WIRE TYPE=FWI        USD AMOUNT=000000000000000000        VALUE DATE=2024/10/22        SRC=FWIFFT0124102215030400        SBR=2024102200000897        ORG=International Wine & Spirits LLC International Wine & Spirits LLC 14111        Northeast 145th Street Woodinville, WA 98072 /AC-31531001        OGB=CoBank, ACB 2515 University Blvd, Ste 104 Ames IA 50010 US /BC-NBFCUS55        XXX        BNF=OIB OLET HE  ,HBMB MP YX PSTC H/X HBMB SMMPRNTZUD HGRJ 517 J LQEBXB 58J        VS CHICAGO,IL,91053 US /AC-000001095355DD028        RFB=NOTPROVIDED        OBI=<6376177101> AGWEST/INTERNATIONAL WINE & SPIRITS\\\"}},{\\\"depositTransaction\\\":{\\\"accountId\\\":\\\"b99bb688b7cf877ef111afd9c23110059b2912f37b5c24c6b9d2811850d945fa\\\",\\\"transactionId\\\":\\\"1902805570\\\",\\\"description\\\":\\\"ORIG BANK ABA=071000288        ORIG BANK=BMO BANK N.A.        REC BANK=BOFM CA M3        SENT AT=2024/10/23 18:52        WIRE TYPE=SWO        CURRENCY DESC=CANADIAN DOLLAR        EXCHANGE AMOUNT=000000000000026800CAD        EXCHANGE RATE=000000746313000   "
                          }
                        },
                        {
                          "depositTransaction": {
                            "accountId": "10001",
                            "transactionId": "20001",
                            "postedTimestamp": "2017-11-05 13:15:31.7",
                            "description": "ORIG BANK=BOFM CA M2        REC BANK ABA=071000288        REC BANK=BMO BANK N.A.        RECEIVED AT=2024/10/24 03:44        WIRE TYPE=SWI        CURRENCY DESC=CANADIAN DOLLAR        EXCHANGE AMOUNT=000000000007200000CAD        EXC1HANGE RATE=000000740658000",
                            "debitCreditMemo": "DEBIT",
                            "amount": "1200.42",
                            "transactionTimestamp": "2025-06-19 07:57:00.0",
                            "fiAttributes": [
                              {
                                "name": "ValueDate",
                                "value": "2025-06-19 07:57:00.0"
                              },
                              {
                                "name": "Posted",
                                "value": "2025-06-19 07:57:00.0"
                              },
                              {
                                "name": "TransactionType",
                                "value": "DEBIT"
                              }
                            ]
                          },
                          "BAILevel": "Debit Transaction",
                          "BAICode": "699",
                          "BAIName": "Miscellaneous Debit",
                          "bankRefNo": "0000000247",
                          "custRefNo": "241023106132",
                          "fundType": "Unknown",
                          "text": "ORIG BANK=BOFM CA M2        REC BANK ABA=071000288        REC BANK=BMO BANK N.A.        RECEIVED AT=2024/10/24 03:44        WIRE TYPE=SWI        CURRENCY DESC=CANADIAN DOLLAR        EXCHANGE AMOUNT=000000000007200000CAD        EXCHANGE RATE=000000740658000"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "206": {
            "description": "Everything worked as expected. Partial content returned based on the range set in the header",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accounts"
                }
              }
            }
          },
          "400": {
            "description": "The request was not accepted, often caused by a missing required parameter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "API key provided was invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - the user is not authorized to use this resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource could not be found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests hit the API in too short of a period",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Integration or Backend Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ContentTypes": {
        "title": "Content Types",
        "type": "string",
        "description": "Types of document formats. (Suggested)",
        "example": "application/json",
        "enum": [
          "application/pdf",
          "image/gif",
          "image/jpeg",
          "image/tiff",
          "image/png",
          "application/json"
        ]
      },
      "HateoasLink": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "example": "/example/accounts/12345"
          },
          "action": {
            "type": "string",
            "description": "HTTP Method to use for the request (Suggested)",
            "enum": [
              "GET",
              "POST",
              "PATCH",
              "DELETE",
              "PUT"
            ]
          },
          "types": {
            "type": "array",
            "description": "Content-types that can be used in the Accept header.",
            "items": {
              "$ref": "#/components/schemas/ContentTypes"
            }
          }
        }
      },
      "PageMetadataLinks": {
        "type": "object",
        "properties": {
          "next": {
            "$ref": "#/components/schemas/HateoasLink"
          },
          "prev": {
            "$ref": "#/components/schemas/HateoasLink"
          }
        }
      },
      "PageMetadata": {
        "type": "object",
        "properties": {
          "nextOffset": {
            "type": "string",
            "description": "Opaque identified. Does not need to be numeric or have any specific pattern. Implementation specific.",
            "example": "2"
          },
          "prevOffset": {
            "type": "string",
            "description": "Opaque identified. Does not need to be numeric or have any specific pattern. Implementation specific.",
            "example": "2"
          },
          "totalElements": {
            "type": "integer",
            "description": "Total number of elements",
            "example": 3
          }
        }
      },
      "PaginatedArray": {
        "type": "object",
        "properties": {
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          },
          "links": {
            "$ref": "#/components/schemas/PageMetadataLinks"
          }
        },
        "description": "To be used as a mixin using \"allOf\""
      },
      "Account": {
        "title": "Account Entity",
        "description": "An account object with limited details returned in the search for accounts operation.",
        "allOf": [
          {
            "type": "object",
            "properties": {
              "accountId": {
                "maxLength": 256,
                "type": "string",
                "description": "Long-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution."
              },
              "accountType": {
                "$ref": "#/components/schemas/AccountType"
              },
              "accountNumber": {
                "type": "string",
                "description": "Return masked account based on request."
              },
              "hostAccountName": {
                "type": "string",
                "description": "Name given by the user. Used in UIs to assist in account selection"
              },
              "description": {
                "type": "string"
              },
              "currency": {
                "$ref": "#/components/schemas/Currency"
              },
              "fiAttributes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FiAttribute"
                }
              }
            }
          }
        ]
      },
      "AccountDetails": {
        "title": "Account Entity",
        "description": "An account object that adds additional detail parameters to the basic Accounts object, this is used in Get an Account operation.",
        "allOf": [
          {
            "$ref": "#/components/schemas/Account"
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "OPEN",
                  "CLOSED",
                  "PENDINGOPEN",
                  "PENDINGCLOSE",
                  "DELINQUENT",
                  "PAID",
                  "NEGATIVECURRENTBALANCE"
                ]
              },
              "routingTransitNumber": {
                "type": "string",
                "description": "Routing transit number (RTN) associated with account number at owning institution."
              },
              "interestRate": {
                "type": "number",
                "description": "Interest Rate of Account"
              },
              "priorInterestRate": {
                "type": "number",
                "description": "Previous Interest Rate of Account"
              },
              "balanceAsOf": {
                "type": "string",
                "description": "As-of date of balances. YYYY-MM-DD."
              }
            }
          }
        ]
      },
      "Accounts": {
        "description": "An instance of the getAccounts types with limited details.",
        "allOf": [
          {
            "type": "object",
            "properties": {
              "depositAccount": {
                "$ref": "#/components/schemas/Account"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "loanAccount": {
                "$ref": "#/components/schemas/Account"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "locAccount": {
                "$ref": "#/components/schemas/Account"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "investmentAccount": {
                "$ref": "#/components/schemas/Account"
              }
            }
          }
        ]
      },
      "GetAccount": {
        "description": "An instance of an account with full details.",
        "allOf": [
          {
            "type": "object",
            "properties": {
              "depositAccount": {
                "$ref": "#/components/schemas/DepositAccount"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "loanAccount": {
                "$ref": "#/components/schemas/LoanAccount"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "locAccount": {
                "$ref": "#/components/schemas/LocAccount"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "investmentAccount": {
                "$ref": "#/components/schemas/InvestmentAccount"
              }
      

# --- truncated at 32 KB (83 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bmo/refs/heads/main/openapi/bmo-account-information-openapi.json