BNY Mellon Treasury Services API

The BNY Mellon Treasury Services API enables institutional clients to programmatically initiate and track payments (wire, ACH, SWIFT, CHIPS), access account balances and transaction history, and manage funds transfers. The API is available via the BNY Mellon Marketplace and supports global treasury operations across multiple currencies.

OpenAPI Specification

bny-mellon-treasury-services-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: BNY Mellon Treasury Services API
  description: >-
    The BNY Mellon Treasury Services API enables corporate clients to programmatically
    initiate and track payments, access account balances and transaction history, manage
    wire transfers, and retrieve reporting data. The API is available via the BNY Mellon
    Marketplace (marketplace.bnymellon.com) and supports global treasury operations
    across multiple currencies and payment rails.
  version: 4.0.0
  contact:
    url: https://marketplace.bnymellon.com/treasury/api-central/
servers:
  - url: https://api.bnymellon.com/treasury/v4
    description: BNY Mellon Treasury Services API Production
  - url: https://apiuat.bnymellon.com/treasury/v4
    description: BNY Mellon Treasury Services API UAT/Sandbox
security:
  - OAuth2: []
paths:
  /accounts:
    get:
      operationId: listAccounts
      summary: List Accounts
      description: Retrieve a list of accounts accessible to the authenticated client.
      tags:
        - Accounts
      parameters:
        - name: currency
          in: query
          description: Filter accounts by currency (ISO 4217)
          schema:
            type: string
        - name: accountType
          in: query
          description: Filter by account type
          schema:
            type: string
      responses:
        '200':
          description: Account list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountListResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accounts/{accountId}:
    get:
      operationId: getAccount
      summary: Get Account
      description: Retrieve details for a specific account.
      tags:
        - Accounts
      parameters:
        - name: accountId
          in: path
          required: true
          description: 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, available, and intraday balances for an account.
      tags:
        - Balances
      parameters:
        - name: accountId
          in: path
          required: true
          description: Account identifier
          schema:
            type: string
        - name: balanceType
          in: query
          description: Balance type filter (current, available, intraday)
          schema:
            type: string
      responses:
        '200':
          description: 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 transaction history for a specific account.
      tags:
        - Transactions
      parameters:
        - name: accountId
          in: path
          required: true
          description: Account identifier
          schema:
            type: string
        - name: fromDate
          in: query
          description: Start date (ISO 8601)
          schema:
            type: string
            format: date
        - name: toDate
          in: query
          description: End date (ISO 8601)
          schema:
            type: string
            format: date
        - name: limit
          in: query
          description: Page size
          schema:
            type: integer
            default: 100
      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 including wire transfers, ACH, SWIFT, and international payments.
      tags:
        - Payments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentRequest'
      responses:
        '201':
          description: Payment initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '400':
          description: Invalid request
          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 payments with optional status and date filters.
      tags:
        - Payments
      parameters:
        - name: status
          in: query
          description: Payment status filter
          schema:
            type: string
            enum: [pending, processing, completed, rejected, returned]
        - name: fromDate
          in: query
          description: Start date filter
          schema:
            type: string
            format: date
        - name: toDate
          in: query
          description: End date filter
          schema:
            type: string
            format: date
      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
      description: Retrieve the status and details of a specific payment.
      tags:
        - Payments
      parameters:
        - name: paymentId
          in: path
          required: true
          description: Payment 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'
  /funds-transfers:
    post:
      operationId: initiateFundsTransfer
      summary: Initiate Funds Transfer
      description: Initiate a domestic or international funds transfer between accounts.
      tags:
        - Funds Transfers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FundsTransferRequest'
      responses:
        '201':
          description: Funds transfer initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FundsTransferResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /funds-transfers/{transferId}:
    get:
      operationId: getFundsTransfer
      summary: Get Funds Transfer
      description: Retrieve status and details of a specific funds transfer.
      tags:
        - Funds Transfers
      parameters:
        - name: transferId
          in: path
          required: true
          description: Funds transfer identifier
          schema:
            type: string
      responses:
        '200':
          description: Funds transfer details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FundsTransferResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Transfer not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.bnymellon.com/oauth/token
          scopes:
            accounts:read: Read account data
            balances:read: Read balance data
            transactions:read: Read transaction history
            payments:write: Initiate and manage payments
            transfers:write: Initiate funds transfers
  schemas:
    Account:
      type: object
      description: A BNY Mellon treasury account
      properties:
        accountId:
          type: string
          description: Unique account identifier
        accountNumber:
          type: string
          description: Account number (masked)
        accountName:
          type: string
          description: Account name
        accountType:
          type: string
          description: Account type
        currency:
          type: string
          description: Account currency (ISO 4217)
        status:
          type: string
          description: Account status
          enum: [active, inactive, closed]
        bankCode:
          type: string
          description: BNY Mellon bank code
    AccountListResponse:
      type: object
      description: List of accounts
      properties:
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/Account'
        totalCount:
          type: integer
    Balance:
      type: object
      description: Account balance record
      properties:
        accountId:
          type: string
        balanceType:
          type: string
          description: Balance type (current, available, intraday)
        amount:
          type: number
          format: double
        currency:
          type: string
        asOfDateTime:
          type: string
          format: date-time
        openingBalance:
          type: number
          format: double
        closingBalance:
          type: number
          format: double
    BalanceResponse:
      type: object
      description: Account balances response
      properties:
        accountId:
          type: string
        balances:
          type: array
          items:
            $ref: '#/components/schemas/Balance'
    Transaction:
      type: object
      description: A transaction on a BNY Mellon account
      properties:
        transactionId:
          type: string
        accountId:
          type: string
        amount:
          type: number
          format: double
        currency:
          type: string
        debitCredit:
          type: string
          enum: [debit, credit]
        description:
          type: string
        referenceNumber:
          type: string
        valueDate:
          type: string
          format: date
        bookingDate:
          type: string
          format: date
        status:
          type: string
    TransactionListResponse:
      type: object
      description: Paginated transaction list
      properties:
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/Transaction'
        totalCount:
          type: integer
        pageSize:
          type: integer
    PaymentRequest:
      type: object
      description: Payment initiation request
      required:
        - paymentType
        - amount
        - currency
        - debitAccountId
        - creditorName
        - creditorAccountNumber
      properties:
        paymentType:
          type: string
          description: Payment type (WIRE, ACH_CREDIT, ACH_DEBIT, SWIFT, CHIPS)
        amount:
          type: number
          format: double
        currency:
          type: string
        debitAccountId:
          type: string
        valueDate:
          type: string
          format: date
        creditorName:
          type: string
        creditorAccountNumber:
          type: string
        creditorBankCode:
          type: string
        creditorSwiftCode:
          type: string
        remittanceInfo:
          type: string
        clientReference:
          type: string
    PaymentResponse:
      type: object
      description: Payment response
      properties:
        paymentId:
          type: string
        clientReference:
          type: string
        status:
          type: string
          enum: [pending, processing, completed, rejected, returned]
        paymentType:
          type: string
        amount:
          type: number
          format: double
        currency:
          type: string
        valueDate:
          type: string
          format: date
        createdAt:
          type: string
          format: date-time
        statusMessage:
          type: string
    PaymentListResponse:
      type: object
      description: List of payments
      properties:
        payments:
          type: array
          items:
            $ref: '#/components/schemas/PaymentResponse'
        totalCount:
          type: integer
    FundsTransferRequest:
      type: object
      description: Funds transfer request between accounts
      required:
        - amount
        - currency
        - debitAccountId
        - creditAccountId
      properties:
        amount:
          type: number
          format: double
        currency:
          type: string
        debitAccountId:
          type: string
        creditAccountId:
          type: string
        valueDate:
          type: string
          format: date
        memo:
          type: string
        clientReference:
          type: string
    FundsTransferResponse:
      type: object
      description: Funds transfer response
      properties:
        transferId:
          type: string
        clientReference:
          type: string
        status:
          type: string
          enum: [pending, processing, completed, rejected]
        amount:
          type: number
          format: double
        currency:
          type: string
        debitAccountId:
          type: string
        creditAccountId:
          type: string
        valueDate:
          type: string
          format: date
        createdAt:
          type: string
          format: date-time
    ErrorResponse:
      type: object
      description: API error response
      properties:
        errorCode:
          type: string
        message:
          type: string
        requestId:
          type: string
        details:
          type: array
          items:
            type: string