Smokeball Bank Accounts API

The Bank Accounts API from Smokeball — 9 operation(s) for bank accounts.

Operations 10

GET /bankaccounts/{id} Get a bank account #
GET /bankaccounts Get bank accounts #
GET /bankaccounts/{id}/matter-balances Get bank account matter balances #
GET /bankaccounts/{id}/protected-balances/{protectionId} Get a protected bank account balance #
POST /bankaccounts/{id}/protect-funds Protect bank account funds #
POST /bankaccounts/{id}/unprotect-funds/{protectionId} Unprotect bank account funds #
POST /bankaccounts/{id}/requisitions Create a requisition #
GET /bankaccounts/{bankAccountId}/transactions Get transactions #
POST /bankaccounts/{bankAccountId}/transactions Create a transaction #
GET /bankaccounts/{bankAccountId}/transactions/{id} Get a transaction #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/smokeball-bank-accounts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

smokeball-bank-accounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Smokeball Bank Accounts API
  version: '1.0'
  description: REST API for integrating with Smokeball legal practice management software. Supports matters, contacts, documents, time entries, billing, trust accounting, staff, webhooks, and law firm workflows across US, AU, and UK regions. Uses OAuth 2.0 (client credentials) authentication.
  contact:
    name: Smokeball Developer Support
    url: https://docs.smokeball.com/docs/api-docs/1e13a13124aee-introduction
  x-api-id: smokeball
  x-audience: external-public
servers:
- url: https://api.smokeball.com
- url: https://api.smokeball.com.au
- url: https://api.smokeball.co.uk
- url: https://stagingapi.smokeball.com
- url: https://stagingapi.smokeball.com.au
- url: https://stagingapi.smokeball.co.uk
security:
- api-key: []
  token: []
tags:
- name: Bank Accounts
paths:
  /bankaccounts/{id}:
    get:
      tags:
      - Bank Accounts
      summary: Get a bank account
      description: Retrieves a specified bank account.
      operationId: GetBankAccountById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a 'BankAccount' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When bank account with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When bank account with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /bankaccounts:
    get:
      tags:
      - Bank Accounts
      summary: Get bank accounts
      description: Returns a list of bank accounts.
      operationId: GetBankAccounts
      parameters:
      - name: type
        in: query
        schema:
          type: string
      - name: matterId
        in: query
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a collection of 'BankAccount' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCollection'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /bankaccounts/{id}/matter-balances:
    get:
      tags:
      - Bank Accounts
      summary: Get bank account matter balances
      description: Returns a list of bank account matter balances.
      operationId: GetBankAccountMatterBalances
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Offset
        in: query
        schema:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
      - name: Limit
        in: query
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
      - name: LastUpdated
        in: query
        description: Returns items updated since the specified date and time.
        schema:
          type: string
          format: date-time
          example: '2022-04-23T14:00:00Z'
        example: '2022-04-23T14:00:00Z'
      - name: MatterId
        in: query
        description: Filters items by the specified matter ID.
        schema:
          type: string
          example: da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262
        example: da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262
      responses:
        '200':
          description: When request is successful. Returns a collection of 'BankAccountMatterBalance' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountMatterBalancePagedCollection'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /bankaccounts/{id}/protected-balances/{protectionId}:
    get:
      tags:
      - Bank Accounts
      summary: Get a protected bank account balance
      description: Retrieves a specified protected account balance record.
      operationId: GetProtectedAccountBalanceById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: protectionId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a 'ProtectedAccountBalance' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProtectedAccountBalance'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When protected balance record is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When protected balance record does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /bankaccounts/{id}/protect-funds:
    post:
      tags:
      - Bank Accounts
      summary: Protect bank account funds
      description: Protects funds in a trust bank account. Only trust accounts are supported.
      operationId: ProtectFundsAsync
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ProtectFundsDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ProtectFundsDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ProtectFundsDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When bank account is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When bank account does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /bankaccounts/{id}/unprotect-funds/{protectionId}:
    post:
      tags:
      - Bank Accounts
      summary: Unprotect bank account funds
      description: Unprotects funds in a trust bank account. Only trust accounts are supported.
      operationId: UnprotectFundsAsync
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: protectionId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/UnprotectFundsDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/UnprotectFundsDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/UnprotectFundsDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When bank account is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When bank account or protection record does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /bankaccounts/{id}/requisitions:
    post:
      tags:
      - Bank Accounts
      summary: Create a requisition
      description: 'Creates a requisition against a trust account and supports the account approval workflow.


        Whether the requisition requires approval depends on the trust account configuration:

        - If approvals are enabled, firm owners can create requisitions without approval, while all other users require approval.

        - If approvals are disabled, the requisition is automatically approved upon creation.'
      operationId: CreateRequisitionAsync
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RequisitionDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RequisitionDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RequisitionDto'
      responses:
        '202':
          description: When request is accepted. Returns requisition status and balances.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Requisition'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When bank account is not associated with authenticated client or client credentials are used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When bank account does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /bankaccounts/{bankAccountId}/transactions:
    get:
      tags:
      - Bank Accounts
      summary: Get transactions
      description: Retrieves a specified bank accounts transaction.
      operationId: GetTransactions
      parameters:
      - name: bankAccountId
        in: path
        required: true
        schema:
          type: string
      - name: Offset
        in: query
        schema:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
      - name: Limit
        in: query
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
      - name: LastUpdated
        in: query
        description: Returns items updated since the specified date and time.
        schema:
          type: string
          format: date-time
          example: '2022-04-23T14:00:00Z'
        example: '2022-04-23T14:00:00Z'
      - name: MatterId
        in: query
        description: Filters items by the specified matter ID.
        schema:
          type: string
          example: da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262
        example: da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262
      responses:
        '200':
          description: When request is successful. Returns a 'Transaction' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When transaction with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When transaction with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
      - Bank Accounts
      summary: Create a transaction
      description: Creates a transaction.
      operationId: CreateTransactionForBankAccount
      parameters:
      - name: bankAccountId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/TransactionDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/TransactionDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/TransactionDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the transaction to be created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When transaction with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When transaction with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /bankaccounts/{bankAccountId}/transactions/{id}:
    get:
      tags:
      - Bank Accounts
      summary: Get a transaction
      description: Retrieves a specified bank account transaction.
      operationId: GetTransactionById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: bankAccountId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a 'Transaction' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When transaction with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When transaction with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    Link:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
      additionalProperties: false
    BankAccountCollection:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        value:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/BankAccount'
      additionalProperties: false
    AccountState:
      enum:
      - 0
      - 1
      type: integer
      format: int32
    TransactionDto:
      type: object
      properties:
        matterId:
          type:
          - string
          - 'null'
          description: Unique identifier of the associated matter.
          example: da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262
        payorId:
          type:
          - string
          - 'null'
          description: Unique identifier of the associated contact.
        type:
          type:
          - string
          - 'null'
          description: 'The type of the transaction.


            Possible values: Deposit.'
          example: Deposit
        amount:
          type: number
          description: The amount of the transaction in dollars. Limited to 2 decimal places (cents).
          format: double
          example: 102.65
        effectiveDate:
          type: string
          description: Date of the transaction.
          format: date-time
        reference:
          type:
          - string
          - 'null'
          description: Reference for the transaction.
        reason:
          type:
          - string
          - 'null'
          description: Reason for the transaction.
        description:
          type:
          - string
          - 'null'
          description: Description of the transaction.
        note:
          type:
          - string
          - 'null'
          description: Note for the transaction (for internal use).
      additionalProperties: false
    ProtectFundsDto:
      required:
      - amount
      - effectiveDate
      - matterId
      type: object
      properties:
        matterId:
          minLength: 1
          type: string
          description: Unique identifier of the associated matter. Required.
          example: da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262
        contactId:
          type:
          - string
          - 'null'
          description: Unique identifier of the associated contact. Required in US only.
          example: 18c05819-c321-4907-800c-d5a608729c5a
        reason:
          type:
          - string
          - 'null'
          description: Reason for protecting the funds.
          example: Court order requiring protection of funds
        effectiveDate:
          type: string
          description: Date of protecting the funds.
          format: date-time
        amount:
          minimum: 0.01
          type: number
          description: The amount to protect in dollars. Limited to 2 decimal places (cents).
          format: double
          example: 100.5
      additionalProperties: false
    Requisition:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
          description: Requisition ID if requisition requires approval.
          example: 18c05819-c321-4907-800c-d5a608729c5a
        status:
          type: string
          description: Status of the requisition (e.g., Pending, Approved).
          example: Approved
        protectedBalance:
          type: number
          description: Protected balance after the requisition.
          format: double
          example: 1000
        availableBalance:
          type: number
          description: Available balance after the requisition.
          format: double
          example: 5000
        totalBalance:
          type: number
          description: Total balance after the requisition.
          format: double
          example: 6000
        pdfPaymentDetail:
          type:
          - string
          - 'null'
          description: Link to the PDF payment detail document.
      additionalProperties: false
    BankAccount:
      type: object
      properties:
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        id:
          type:
          - string
          - 'null'
          description: Unique identifier of the bank account.
          example: b471682e-fa17-4e46-b7fe-9b2b8fdcb3c2
        type:
          type: string
          description: The type of the bank account (Operating, Trust, Credit, ControlledMoney).
          example: Trust
        status:
          allOf:
          - $ref: '#/components/schemas/AccountState'
          description: The status of the account (Open, Closed).
        matter:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: "The Matter associated to the account. \n\nApplies to 'ControlledMoney' accounts only."
        accountType:
          type: integer
          description: 'The type of the bank account (Operating = 0, Trust = 1, Credit = 2, ControlledMoney = 3).


            This field is deprecated and scheduled for removal - use the Type field instead.'
          format: int32
          example: 0
        accountName:
          type:
          - string
          - 'null'
          description: Account Name.
          example: John Smith
        accountNumber:
          type:
          - string
          - 'null'
          description: Account Number.
          example: '10436489'
        bankName:
          type:
          - string
          - 'null'
          description: Bank Name.
          example: Commonwealth Bank
        branchNumber:
          type:
          - string
          - 'null'
          description: Branch Number.
          example: '062201'
        branchName:
          type:
          - string
          - 'null'
          description: Branch Name.
          example: Sydney
        balance:
          type: number
          description: Total balance of the bank account.
          format: double
          example: 1000
        contactBalances:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/BankAccountContactBalance'
          description: 'List of contact balances.


            If balances are stored by matter, not by contact, then there can be

            a contact balance with no contact id. In this case, MatterBalances are used instead.


            Only supported in US.'
        matterBalances:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/BankAccountMatterBalance'
          description: 'List of matter balances.


            A matter balance will be equal to the sum of all contact balances with the same MatterId.'
      additionalProperties: false
    BankAccountMatterBalancePagedCollection:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        value:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/BankAccountMatterBalance'
        offset:
          type:
          - integer
          - 'null'
          format: int32
        limit:
          type:
          - integer
          - 'null'
          format: int32
        size:
          type: integer
          format: int64
        first:
          allOf:
          - $ref: '#/components/schemas/Link'
        previous:
          allOf:
          - $ref: '#/components/schemas/Link'
        next:
          allOf:
          - $ref: '#/components/schemas/Link'
        last:
          allOf:
          - $ref: '#/components/schemas/Link'
      additionalProperties: false
    BankAccountContactBalance:
      type: object
      properties:
        matter:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: The associated matter.
        contact:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: The associated contact.
        balance:
          type: number
          description: The balance belonging for the specified matter contact.
          format: double
          example: 1000
        protectedBalance:
          type: number
          description: The protected balance for the specified matter and contact.
          format: double
          example: 1000
        availableBalance:
          type: number
          description: "The available balance for the specified matter and contact.\n            \nThis value is calculated as the total balance minus the protected balance."
          format: double
          example: 1000
        lastUpdated:
          type:
          - string
          - 'null'
          description: Date and time that the balance was last updated.
          format: date-time
      additionalProperties: false
    RequisitionDto:
      required:
      - amount
      - matterId
      - payeeId
      - source
      type: object
      properties:
        matterId:
          minLength: 1
          type: string
          description: Unique identifier of the associated matter. Required.
          example: da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262
        approverUserId:
          type:
          - string
          - 'null'
          description: 'Approver user ID.


            Cannot be the same user ID as the user making the requisition request. If provided, must be a valid user ID in the system.


            Optional. If not provided, default approver will be used.'
          example: 18c05819-c321-4907-800c-d5a608729c5a
        payorId:
          type:
          - string
          - 'null'
          description: Unique identifier of the Payor/Contact ID. Required in US region only.
          example: 18c05819-c321-4907-800c-d5a608729c5a
        payeeId:
          minLength: 1
          type: string
          description: Unique identifier of the person or organisation being paid. Required.
          example: 18c05819-c321-4907-800c-d5a608729c5a
        source:
          minLength: 1
          type: string
          description: 'Payment source. Required.

            Possible values:

            - "Bank Transfer" - always available

            - "Bank Check" - available in AU and UK only

            - "Trust Check" - available in AU and UK only

            - "Direct Debit" - available in AU and UK only

            - "Check" - available in US only'
          example: Bank Transfer
        reference:
          type:
          - string
          - 'null'
          description: Payment reference.
          example: REF123456
        amount:
          minimum: 0.01
          type: number
          description: The payment amount in dollars. Limited to 2 decimal places (cents).
          format: double
          example: 100.5
        effectiveDate:
          type: string
          description: Date of requisition.
          format: date-time
        accountName:
          type:
          - string
          - 'null'
          description: Account name. Required when Source is an electronic payment ('Bank Transfer' or 'Direct Debit') and transfer is expected to be via Direct Deposit (provide AccountName, BSB, and AccountNumber).
          example: John Doe
        bsb:
          type:
          - string
          - 'null'
          description: BSB (Bank State Branch). Required when Source is an electronic payment ('Bank Transfer' or 'Direct Debit') and transfer is expected to be via Direct Deposit (provide AccountName, BSB, and AccountNumber).
          example: '123456'
        accountNumber:
          type:
          - string
          - 'null'
          description: Account number. Required when Source is an electronic payment ('Bank Transfer' or 'Direct Debit') and transfer is expected to be via Direct Deposit (provide AccountName, BSB, and AccountNumber).
          example: '12345678'
        organizationOrCompanyName:
          type:
          - string
          - 'null'
          description: Organization or company name. Required when Source is an electronic payment ('Bank Transfer' or 'Direct Debit') and transfer is expected to be via BPAY (provide OrganizationOrCompanyName, BillerCode, and BillerReference).
          example: ACME Corporation
        billerCode:
          type:
          - string
          - 'null'
          description: Biller code. Required when Source is an electronic payment ('Bank Transfer' or 'Direct Debit') and transfer is expected to be via BPAY (provide OrganizationOrCompanyName, BillerCode, and BillerReference).
          example: '12345'
        billerReference:
          type:
          - string
          - 'null'
          description: Biller reference. Required when Source is an electronic payment ('Bank Transfer' or 'Direct Debit') and transfer is expected to be via BPAY (provide OrganizationOrCompanyName, BillerCode, and BillerReference).
          example: REF123456
        reason:
          type:
          - string
          - 'null'
          description: Reason for the payment. Free format string.
          example: Payment for services rendered
        internalNote:
          type:
          - string
          - 'null'
          description: Internal note. Free format string.
          example: Internal note about this payment
      additionalProperties: false
    Transaction:
      type: object
      properties:
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        id:
          type:
          - string
          - 'null'
          description: Unique identifier of the transaction.
          example: 64818ee0-c7b4-46ec-862e-514d8b29540a
        payorName:
          type:
          - string
          - 'null'
          description: The name of the associated contact.
          example: John Smith
        matter:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: The associated matter.
        payor:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: The associated contact that paid the funds.
        bankAccount:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: The bank account where the transaction took place.
        type:
          type:
          - string
          - 'null'
          description: "The type of the transaction.\n\nPossible values:\n    Deposit, DepositReversal, InvoicePayment, InvoicePaymentReversal, \n    VendorPayment, VendorPaymentReversal Transfer, \n    BankFees, BankFeesReversal, Interest, InterestReversal."
          example: Deposit
        am

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/smokeball/refs/heads/main/openapi/smokeball-bank-accounts-api-openapi.yml