Bank of America CashPro API

The Bank of America CashPro API enables corporate treasury clients to programmatically access banking services including payments, account information, balance reporting, and transaction history. The API supports over 350 payment types and integrates with Treasury Management Systems (TMS) and ERP platforms.

OpenAPI Specification

bank-of-america-cashpro-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Bank of America CashPro API
  description: >-
    The Bank of America CashPro API enables corporate treasury clients to programmatically
    access banking services including payments, account information, balance reporting,
    and transaction history. The API supports over 350 payment types and integrates with
    Treasury Management Systems (TMS) and ERP platforms.
  version: 1.0.0
  contact:
    email: [email protected]
    url: https://developer.bankofamerica.com/
servers:
  - url: https://api.bankofamerica.com/cashpro/v1
    description: CashPro API Production
  - url: https://sandbox.bankofamerica.com/cashpro/v1
    description: CashPro API Sandbox
security:
  - OAuth2: []
paths:
  /accounts:
    get:
      operationId: listAccounts
      summary: List Accounts
      description: Retrieve a list of accounts associated with the authenticated CashPro client.
      tags:
        - Accounts
      parameters:
        - name: accountType
          in: query
          description: Filter by account type (checking, savings, etc.)
          schema:
            type: string
        - name: currency
          in: query
          description: Filter by currency code (ISO 4217)
          schema:
            type: string
      responses:
        '200':
          description: Successful response with account list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountListResponse'
        '401':
          description: Unauthorized — invalid or missing credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden — insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accounts/{accountId}:
    get:
      operationId: getAccount
      summary: Get Account Details
      description: Retrieve detailed information for a specific account including current balance and account metadata.
      tags:
        - Accounts
      parameters:
        - name: accountId
          in: path
          required: true
          description: Unique account identifier
          schema:
            type: string
      responses:
        '200':
          description: Account details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Account not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accounts/{accountId}/balances:
    get:
      operationId: getAccountBalances
      summary: Get Account Balances
      description: Retrieve current and available balances for a specific account including intraday balance information.
      tags:
        - Balances
      parameters:
        - name: accountId
          in: path
          required: true
          description: Unique account identifier
          schema:
            type: string
        - name: asOf
          in: query
          description: Balance as of date (ISO 8601)
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Account balance information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accounts/{accountId}/transactions:
    get:
      operationId: listTransactions
      summary: List Transactions
      description: Retrieve a paginated list of transactions for a specific account within a date range.
      tags:
        - Transactions
      parameters:
        - name: accountId
          in: path
          required: true
          description: Unique account identifier
          schema:
            type: string
        - name: fromDate
          in: query
          description: Start date for transaction history (ISO 8601)
          schema:
            type: string
            format: date
        - name: toDate
          in: query
          description: End date for transaction history (ISO 8601)
          schema:
            type: string
            format: date
        - name: limit
          in: query
          description: Maximum number of transactions to return
          schema:
            type: integer
            default: 100
            maximum: 500
        - name: offset
          in: query
          description: Pagination offset
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: Transaction list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionListResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /payments:
    post:
      operationId: initiatePayment
      summary: Initiate Payment
      description: >-
        Initiate a payment transaction. Supports over 350 payment types including ACH,
        wire transfers, SWIFT, checks, and real-time payments. The payment type is
        determined by the paymentType field in the request body.
      tags:
        - Payments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentRequest'
      responses:
        '201':
          description: Payment initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '400':
          description: Bad request — invalid payment data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    get:
      operationId: listPayments
      summary: List Payments
      description: Retrieve a list of payment transactions filtered by date range and status.
      tags:
        - Payments
      parameters:
        - name: fromDate
          in: query
          description: Start date filter (ISO 8601)
          schema:
            type: string
            format: date
        - name: toDate
          in: query
          description: End date filter (ISO 8601)
          schema:
            type: string
            format: date
        - name: status
          in: query
          description: Filter by payment status
          schema:
            type: string
            enum: [pending, processing, completed, rejected, cancelled]
        - name: paymentType
          in: query
          description: Filter by payment type
          schema:
            type: string
      responses:
        '200':
          description: Payment list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentListResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /payments/{paymentId}:
    get:
      operationId: getPayment
      summary: Get Payment Status
      description: Retrieve the current status and details of a specific payment transaction.
      tags:
        - Payments
      parameters:
        - name: paymentId
          in: path
          required: true
          description: Unique payment transaction identifier
          schema:
            type: string
      responses:
        '200':
          description: Payment details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Payment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    delete:
      operationId: cancelPayment
      summary: Cancel Payment
      description: Cancel a pending payment that has not yet been processed.
      tags:
        - Payments
      parameters:
        - name: paymentId
          in: path
          required: true
          description: Unique payment identifier
          schema:
            type: string
      responses:
        '200':
          description: Payment cancelled successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — payment cannot be cancelled in current state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /statements:
    get:
      operationId: listStatements
      summary: List Statements
      description: Retrieve a list of available account statements.
      tags:
        - Statements
      parameters:
        - name: accountId
          in: query
          description: Filter statements by account ID
          schema:
            type: string
        - name: year
          in: query
          description: Filter by statement year
          schema:
            type: integer
      responses:
        '200':
          description: Statement list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementListResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /statements/{statementId}:
    get:
      operationId: getStatement
      summary: Get Statement
      description: Retrieve a specific account statement by ID.
      tags:
        - Statements
      parameters:
        - name: statementId
          in: path
          required: true
          description: Unique statement identifier
          schema:
            type: string
      responses:
        '200':
          description: Statement details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Statement'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Statement not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.bankofamerica.com/oauth/token
          scopes:
            accounts:read: Read account information and balances
            transactions:read: Read transaction history
            payments:write: Initiate and manage payments
            statements:read: Access account statements
  schemas:
    Account:
      type: object
      description: A Bank of America CashPro account
      properties:
        accountId:
          type: string
          description: Unique account identifier
        accountNumber:
          type: string
          description: Masked account number
        accountName:
          type: string
          description: Account display name
        accountType:
          type: string
          description: Account type (checking, savings, etc.)
        currency:
          type: string
          description: Account currency (ISO 4217)
        routingNumber:
          type: string
          description: ABA routing number
        status:
          type: string
          description: Account status
          enum: [active, inactive, closed]
        openDate:
          type: string
          format: date
          description: Date the account was opened
    AccountListResponse:
      type: object
      description: Paginated list of accounts
      properties:
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/Account'
        totalCount:
          type: integer
          description: Total number of accounts
        pageSize:
          type: integer
        offset:
          type: integer
    Balance:
      type: object
      description: Account balance information
      properties:
        accountId:
          type: string
          description: Account identifier
        ledgerBalance:
          type: number
          format: double
          description: Current ledger balance
        availableBalance:
          type: number
          format: double
          description: Available balance for transactions
        collectedBalance:
          type: number
          format: double
          description: Collected balance after float
        currency:
          type: string
          description: Balance currency (ISO 4217)
        asOfDate:
          type: string
          format: date-time
          description: Balance as of timestamp
    BalanceResponse:
      type: object
      description: Account balance response
      properties:
        accountId:
          type: string
        balances:
          type: array
          items:
            $ref: '#/components/schemas/Balance'
    Transaction:
      type: object
      description: An account transaction record
      properties:
        transactionId:
          type: string
          description: Unique transaction identifier
        accountId:
          type: string
          description: Account the transaction belongs to
        type:
          type: string
          description: Transaction type (debit, credit)
          enum: [debit, credit]
        amount:
          type: number
          format: double
          description: Transaction amount
        currency:
          type: string
          description: Transaction currency
        description:
          type: string
          description: Transaction description or memo
        referenceNumber:
          type: string
          description: Bank reference number
        valueDate:
          type: string
          format: date
          description: Value date of the transaction
        postDate:
          type: string
          format: date
          description: Post date of the transaction
        status:
          type: string
          description: Transaction status
    TransactionListResponse:
      type: object
      description: Paginated list of transactions
      properties:
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/Transaction'
        totalCount:
          type: integer
        pageSize:
          type: integer
        offset:
          type: integer
    PaymentRequest:
      type: object
      description: Payment initiation request
      required:
        - paymentType
        - amount
        - currency
        - debitAccountId
        - beneficiary
      properties:
        paymentType:
          type: string
          description: Payment type (ACH_CREDIT, WIRE, SWIFT, CHECK, RTP, etc.)
        amount:
          type: number
          format: double
          description: Payment amount
        currency:
          type: string
          description: Payment currency (ISO 4217)
        debitAccountId:
          type: string
          description: Account to debit
        valueDate:
          type: string
          format: date
          description: Requested value date (ISO 8601)
        reference:
          type: string
          description: Client reference number
        memo:
          type: string
          description: Payment memo or description
        beneficiary:
          $ref: '#/components/schemas/Beneficiary'
    Beneficiary:
      type: object
      description: Payment beneficiary details
      properties:
        name:
          type: string
          description: Beneficiary name
        accountNumber:
          type: string
          description: Beneficiary account number
        routingNumber:
          type: string
          description: Beneficiary bank routing number (ABA)
        bankName:
          type: string
          description: Beneficiary bank name
        bankAddress:
          type: string
          description: Beneficiary bank address
        swiftCode:
          type: string
          description: SWIFT/BIC code for international wires
    PaymentResponse:
      type: object
      description: Payment transaction response
      properties:
        paymentId:
          type: string
          description: Unique payment identifier
        clientReferenceId:
          type: string
          description: Client-provided reference
        status:
          type: string
          description: Payment status
          enum: [pending, processing, completed, rejected, cancelled]
        paymentType:
          type: string
          description: Payment type
        amount:
          type: number
          format: double
        currency:
          type: string
        valueDate:
          type: string
          format: date
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        statusMessage:
          type: string
          description: Additional status information
    PaymentListResponse:
      type: object
      description: Paginated list of payments
      properties:
        payments:
          type: array
          items:
            $ref: '#/components/schemas/PaymentResponse'
        totalCount:
          type: integer
        pageSize:
          type: integer
        offset:
          type: integer
    Statement:
      type: object
      description: An account statement
      properties:
        statementId:
          type: string
          description: Unique statement identifier
        accountId:
          type: string
          description: Associated account ID
        statementDate:
          type: string
          format: date
          description: Statement date
        openingBalance:
          type: number
          format: double
        closingBalance:
          type: number
          format: double
        currency:
          type: string
        totalCredits:
          type: number
          format: double
        totalDebits:
          type: number
          format: double
        transactionCount:
          type: integer
    StatementListResponse:
      type: object
      description: List of available statements
      properties:
        statements:
          type: array
          items:
            $ref: '#/components/schemas/Statement'
        totalCount:
          type: integer
    ErrorResponse:
      type: object
      description: API error response
      properties:
        errorCode:
          type: string
          description: Machine-readable error code
        message:
          type: string
          description: Human-readable error message
        details:
          type: array
          items:
            type: string
          description: Additional error details
        requestId:
          type: string
          description: Request identifier for support