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.
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": "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