openapi: 3.2.0 info: version: 5.3.0 title: Account Information API 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: '' servers: - url: https://sandbox-open-api.bmo.com/open-banking/commercial-sb security: - api-key-1: [] OAuth: - FinancialInformation tags: - name: Account Information description: Query all information for a set of accounts provided in the payload 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' components: schemas: InvestmentBalance: title: InvestmentBalance Entity type: object properties: balanceName: type: string description: Name of the balance balanceDescription: type: string description: Description of balance balanceType: $ref: '#/components/schemas/InvestmentBalanceType' balanceValue: type: number description: Value of balance name balanceDate: type: string description: Date as of this balance. YYYY-MM-DD. currency: $ref: '#/components/schemas/Currency' LoanAccount: title: LoanAccount Entity description: Loan accounts will have following fields in FiAttributes - BorrowerName, FacilityName, OutstandingBal, OutstandingBalLoanCurr, MaturityDate allOf: - $ref: '#/components/schemas/AccountDetails' - type: object properties: principalBalance: type: number description: Principal balance of loan escrowBalance: type: number description: Escrow balance of loan originalPrincipal: type: number description: Original principal of loan originatingDate: type: string description: Loan origination date. YYYY-MM-DD. loanTerm: type: integer description: Term of loan in months nextPaymentAmount: type: number description: Amount of next payment nextPaymentDate: type: string description: Date of next payment. YYYY-MM-DD. paymentFrequency: $ref: '#/components/schemas/PaymentFrequency' payOffAmount: type: number description: Payoff amount lastPaymentAmount: type: number description: Last payment amount lastPaymentDate: type: string description: Last payment date. YYYY-MM-DD. maturityDate: type: string description: Maturity date. YYYY-MM-DD. interestPaidYearToDate: type: number description: Interest paid year to date 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. PageMetadataLinks: type: object properties: next: $ref: '#/components/schemas/HateoasLink' prev: $ref: '#/components/schemas/HateoasLink' InvestmentBalanceType: title: InvestmentBalanceType type: string enum: - AMOUNT - PERCENTAGE Error: title: Error Entity type: object properties: code: type: string description: Long term persistent identifier which can be used to trace error condition back to log information message: type: string description: End user displayable information which might help the customer diagnose an error description: An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account. 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' 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 AccountType: title: AccountType type: string enum: - 401A - 401K - 403B - '529' - AUTOLOAN - CD - CHARGE - CHECKING - COMMERCIALLINEOFCREDIT - COMMERCIALLOAN - COVERDELL - CREDITCARD - DEPOSIT - ESCROW - ESOP - GUARDIAN - HOMEEQUITYLOAN - HOMELINEOFCREDIT - INSTITUTIONALTRUST - INSTALLMENT - IRA - INVESTMENT - KEOGH - LINEOFCREDIT - LOAN - MILITARYLOAN - MONEYMARKET - MORTGAGE - PERSONALLOAN - ROLLOVER - ROTH - SARSEP - SAVINGS - SMBLOAN - STUDENTLOAN - TAXABLE - TDA - TRUST - UGMA - UTMA - ANNUITY 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' Currency: title: Currency Entity type: object properties: currencyRate: type: number description: Currency rate between original and converted currency currencyCode: $ref: '#/components/schemas/Iso4217Code' originalCurrencyCode: $ref: '#/components/schemas/Iso4217Code' description: Currency information if it is different from Account entity DepositAccount: title: DepositAccount Entity description: Deposit accounts will have following fields in FiAttributes - PreviousBalance, OpenDate, StatementName, 1DayFloat, 2orMoreDaysFloat, AccruedInterestMTD, ProjectedInterested, InterestPaidPreviousMonth allOf: - $ref: '#/components/schemas/AccountDetails' - type: object properties: currentBalance: type: number description: Balance of funds in account openingDayBalance: type: number description: Day's opening fund balance availableBalance: type: number description: Balance of funds available for use interestYtd: type: number description: YTD Interest term: type: integer description: Term of CD in months maturityDate: type: string description: Maturity date for CDs 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' 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' LocAccount: title: LocAccount Entity description: Loc accounts will have following fields in FiAttributes - StatementBalance allOf: - $ref: '#/components/schemas/AccountDetails' - type: object properties: availableCredit: type: number description: Available credit nextPaymentAmount: type: number description: Amount of next payment nextPaymentDate: type: string description: Due date of next payment. YYYY-MM-DD. principalBalance: type: number description: Principal balance currentBalance: type: number description: Current balance LOC lastPaymentAmount: type: number description: Last payment amount lastPaymentDate: type: string description: Last payment date. YYYY-MM-DD. pastDueAmount: type: number description: Past Due Amount lastStmtBalance: type: number description: Last Statement Balance lastStmtDate: type: string description: Last Statement Date. YYYY-MM-DD. InvestmentAccount: title: InvestmentAccount Entity allOf: - $ref: '#/components/schemas/AccountDetails' - type: object properties: currentValue: type: number description: Total current value of all investments balanceList: type: array description: Balance List. Name value pair aggregate. items: $ref: '#/components/schemas/InvestmentBalance' GetAccounts: title: Accounts Entity description: An optionally paginated array of accounts. allOf: - $ref: '#/components/schemas/PaginatedArray' - type: object properties: accounts: type: array items: $ref: '#/components/schemas/Accounts' Iso4217Code: title: Iso4217Code type: string description: The ISO 4217 code of the foreign currency enum: - AED - AFN - ALL - AMD - ANG - AOA - ARS - AUD - AWG - AZN - BAM - BBD - BDT - BGN - BHD - BIF - BMD - BND - BOB - BOV - BRL - BSD - BTN - BWP - BYR - BZD - CAD - CDF - CHE - CHF - CHW - CLF - CLP - CNY - COP - COU - CRC - CUC - CUP - CVE - CZK - DJF - DKK - DOP - DZD - EGP - ERN - ETB - EUR - FJD - FKP - GBP - GEL - GHS - GIP - GMD - GNF - GTQ - GYD - HKD - HNL - HRK - HTG - HUF - IDR - ILS - INR - IQD - IRR - ISK - JMD - JOD - JPY - KES - KGS - KHR - KMF - KPW - KRW - KWD - KYD - KZT - LAK - LBP - LKR - LRD - LSL - LYD - MAD - MDL - MGA - MKD - MMK - MNT - MOP - MRO - MUR - MVR - MWK - MXN - MXV - MYR - MZN - NAD - NGN - NIO - NOK - NPR - NZD - OMR - PAB - PEN - PGK - PHP - PKR - PLN - PYG - QAR - RON - RSD - RUB - RWF - SAR - SBD - SCR - SDG - SEK - SGD - SHP - SLL - SOS - SRD - SSP - STD - SVC - SYP - SZL - THB - TJS - TMT - TND - TOP - TRY - TTD - TWD - TZS - UAH - UGX - USD - USN - UYI - UYU - UZS - VEF - VND - VUV - WST - XAF - XAG - XAU - XBA - XBB - XBC - XBD - XCD - XDR - XOF - XPD - XPF - XPT - XSU - XTS - XUA - XXX - YER - ZAR - ZMW - ZWL 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 PaymentFrequency: title: PaymentFrequency type: string description: DAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY enum: - ANNUALLY - BIWEEKLY - DAILY - MONTHLY - SEMIANNUALLY - SEMIMONTHLY - WEEKLY PaginatedArray: type: object properties: page: $ref: '#/components/schemas/PageMetadata' links: $ref: '#/components/schemas/PageMetadataLinks' description: To be used as a mixin using "allOf" FiAttribute: title: FiAttribute Entity type: object properties: name: type: string description: Name of attribute value: type: string description: Value of attribute. All date fields will be of the string format YYYY-MM-DD. description: Financial platform provider-specific attribute securitySchemes: api-key-1: type: apiKey x-key-type: client_id name: x-api-key in: header OAuth: type: oauth2 x-ibm-oauth-provider: apic-oauth-ob-commercial-sb-provider flows: authorizationCode: authorizationUrl: https://open-api.bmofg.com/open-banking/commercial-sb/oauth20/authorize tokenUrl: https://open-api.bmofg.com/open-banking/commercial-sb/oauth20/token scopes: FinancialInformation: FinancialInformation x-ibm-configuration: categories: - bian--bd--operationalservices enforced: true testable: true phase: realized cors: enabled: true type: rest application-authentication: certificate: false oauth-servers: OAuth: authorizationCode: tokenUrls: - https://open-api.bmofg.com/open-banking/commercial-sb/oauth20/token authorizationUrls: - https://open-api.bmofg.com/open-banking/commercial-sb/oauth20/authorize refreshUrls: [] x-ibm-endpoints: - url: https://sandbox-open-api.bmo.com/open-banking/commercial-sb type: - production - development