Western Alliance Bank Intrabank Transfer API

Initiates an intra-bank transfer between two Western Alliance Bank accounts and searches intra-bank transfers as originator or beneficiary. The transfer returns a Payment Message Reference that is the universal identifier for the payment across the Intrabank Search, Intraday, Prior Day and Date Range APIs and the webhook. Family: Transactional APIs on the WAB API Developer Portal; 2 operations captured.

Operations 2

POST /trnsct-ibt-eapi/api/v1/transactions/intraBankTransfer Initiate an intra-bank transfer #
POST /trnsct-ibt-eapi/api/v2/transactions/intraBankSearch Search intra-bank transfers (originator or beneficiary mode) #

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/western-alliance-bancorporation-intrabank-transfer-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

western-alliance-bancorporation-intrabank-transfer-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Western Alliance Bank Intrabank Transfer API
  version: v1-v2
  description: |-
    Initiates an intra-bank transfer between two Western Alliance Bank accounts and searches
    intra-bank transfers as originator or beneficiary. The transfer returns a Payment Message
    Reference that is the universal identifier for the payment across the Intrabank Search,
    Intraday, Prior Day and Date Range APIs and the webhook.

    Authored from the provider's "Intrabank Transfer API User Guide (External)" PDF
    (Western Alliance Bank, (c) 11.25), published on the WAB API Developer Portal CMS. Only
    the two endpoints, request fields, response fields and error envelopes shown in that guide
    are captured; nothing was added beyond it. The guide's cURL samples are the source of the
    paths, headers and JSON shapes.
  contact:
    name: Western Alliance Bank API Developer Portal
    url: https://developer.westernalliancebank.com/s/
  termsOfService: https://www.westernalliancebancorporation.com/sites/default/files/2025-05/api-services-terms-conditions.pdf
  x-family: Transactional
  x-generated-from: documentation
  x-source: https://developer.westernalliancebank.com/sfsites/c/cms/delivery/media/MC2GPNZ5A6AFBB7FPCQ6YISYCQY4
  x-source-page: https://developer.westernalliancebank.com/s/cms-document/user-guide-wab-intrabank-transfer-api-MC2GPNZ5A6AFBB7FPCQ6YISYCQY4
  x-provenance:
    generated: '2026-09-17'
    method: derived
    source: postman/western-alliance-bancorporation-intrabank-transfer-api-user-guide.pdf
    note: Hand transcription of the provider's user guide; the guide documents endpoints, request/response
      JSON and an error index but no full schema, so field types are inferred from the sample values only.
servers:
- url: https://api-connect.westernalliancebank.com
  description: Production (the host used in every cURL sample in the guide)
- url: https://api-connect.westernalliancebanktest.com
  description: Client UAT environment (API Services Terms 6(b) - all data must be fake / masked test data)
tags:
- name: Intrabank Transfer
  description: Initiate an intra-bank transfer. "Accepted" means the request was formatted correctly, not that funds have posted.
- name: Intrabank Search
  description: On-demand lookup of intra-bank transfers; a fallback when the webhook is missed, not a replacement for it.
security:
- bearerToken: []
paths:
  /trnsct-ibt-eapi/api/v1/transactions/intraBankTransfer:
    post:
      operationId: initiateIntraBankTransfer
      summary: Initiate an intra-bank transfer
      description: |-
        Submits a transfer from the originating account to the beneficiary account. Capture the
        PaymentMessageReference and PaymentId from the response; they are the identifiers used to
        trace the payment in the webhook and the Intraday, Prior Day, Date Range and Search APIs.
        The response "Accepted" (StatusCode W02) confirms format validation only. A resubmitted
        PaymentId is rejected as a duplicate (409).
      tags:
      - Intrabank Transfer
      parameters:
      - $ref: '#/components/parameters/XCorrelationId'
      - name: appClientId
        in: header
        required: true
        schema:
          type: string
        description: Client ID assigned by WAB at enrollment (shown alongside the bearer token in the guide's sample).
      - name: appClientSecret
        in: header
        required: true
        schema:
          type: string
        description: Client Secret known only to the client and the WAB API gateway.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntraBankTransferRequest'
            example:
              SystemIdentifier: ECG
              PaymentId: '09232025124'
              ProcessingDate: '20250923'
              Amount: '0124'
              Currency: USD
              OriginatorAccountId: '1212121212'
              BeneficiaryAccountId: '1313131313'
              BeneficiaryName: Internal Account
              RemittanceInformation: TestTransaction
      responses:
        '200':
          description: Transfer accepted for processing (not final - funds have not necessarily posted).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntraBankTransferResponse'
              examples:
                accepted:
                  summary: Accepted (W02)
                  value:
                    Status: Accepted
                    StatusCode: W02
                    StatusMessage: Intrabank transfer is accepted
                    PaymentId: '09232025124'
                    PaymentMessageReference: '526605645490'
                rejectedInvalidDebitAccount:
                  summary: Rejected (W21) - returned in the same envelope
                  value:
                    Status: Rejected
                    StatusCode: W21
                    StatusMessage: Intrabank transfer is rejected due to invalid debit account
                    PaymentId: 2025UATTEST3
                    PaymentMessageReference: ''
        '400':
          description: Rejected - invalid processing date, or the transfer was cancelled while in processing (resubmit with a new PaymentId).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                invalidProcessingDate:
                  value:
                    errors:
                    - code: 400
                      message: Rejected
                      additionalInfo: Processing Date is Invalid
                cancelledWhileProcessing:
                  value:
                    errors:
                    - code: 400
                      message: Rejected
                      additionalInfo: Intrabank transfer is rejected due to Cancelled while in Processing. Please resubmit with new PaymentId
        '403':
          description: Not authorized for Intra Bank transaction on the supplied account / system identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              example:
                errors:
                - code: 403
                  message: Not authorized for Intra Bank transaction
                  additionalInfo: Please pass valid account details and/or system identifier
        '409':
          description: Duplicate - an intrabank transfer request with this PaymentId already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              example:
                errors:
                - code: 409
                  message: Duplicate
                  additionalInfo: Intrabank transfer request already exists
  /trnsct-ibt-eapi/api/v2/transactions/intraBankSearch:
    post:
      operationId: searchIntraBankTransfers
      summary: Search intra-bank transfers (originator or beneficiary mode)
      description: |-
        Searches transfers where the supplied AccountId is the Originator or the Beneficiary.
        Exactly one of ValueDate, PaymentId or PaymentMessageReference is accepted per call,
        together with SystemIdentifier and the account. The query parameter `page` is required.
      tags:
      - Intrabank Search
      parameters:
      - $ref: '#/components/parameters/XCorrelationId'
      - name: page
        in: query
        required: true
        schema:
          type: integer
        example: 1
        description: Result page number (required; omitting it returns 400).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntraBankSearchRequest'
            examples:
              beneficiary:
                value:
                  SystemIdentifier: ECG
                  AccountId: '1313131313'
                  Type: Beneficiary
                  PaymentId: '09232025124'
              originator:
                value:
                  SystemIdentifier: ECG
                  AccountId: '1212121212'
                  Type: Originator
                  PaymentId: '09232025124'
      responses:
        '200':
          description: Matching transfers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntraBankSearchResponse'
              example:
                CurrentPage: /transactions/intraBankSearch?page=1
                TransactionCount: 1
                Transactions:
                - TransactionId: '526605645490'
                  SendersReferenceNumber: '09232025124'
                  BeneficiaryReference: '250923092149235'
                  StatusMessage: Completed
                  Amount: '124'
                  Currency: USD
                  FundTransferDirection: O
                  FundTransferReleaseDate: '2025-09-23'
                  RemittanceInformation: TestTransaction
                  OriginatorAccountId: '1212121212'
                  OriginatorAddress2: RENO NV 89523
                  OriginatorAddress3: US
                  BeneficiaryAccountId: '1313131313'
                  BeneficiaryName: INTERNAL ACCOUNT
        '400':
          description: Missing required `page` parameter, or more than one of ValueDate / PaymentId / PaymentMessageReference supplied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                missingPage:
                  value:
                    errors:
                    - code: 400
                      message: Required query parameter page not specified
                      additionalInfo: Required query parameter page not specified
                multipleParameters:
                  value:
                    errors:
                    - code: 400
                      message: Unavailable
                      additionalInfo: Invalid search parameter. Either ValueDate or PaymentId or PaymentMessageReference will be accepted. Please provide any one of the aforementioned parameter along with SystemIdentifier and OriginatorAccountId.
components:
  securitySchemes:
    bearerToken:
      type: http
      scheme: bearer
      description: Bearer token from GET /entitlements-get-token-eapi/api/v1/token (Token API); the guide labels it "IBT Token". Tokens are valid for a limited period (API Services Terms 6(c)(iii)).
  parameters:
    XCorrelationId:
      name: X-Correlation-Id
      in: header
      required: true
      schema:
        type: string
        format: uuid
      description: Client-generated GUID used to correlate the request across WAB systems.
  schemas:
    IntraBankTransferRequest:
      type: object
      required:
      - SystemIdentifier
      - PaymentId
      - ProcessingDate
      - Amount
      - Currency
      - OriginatorAccountId
      - BeneficiaryAccountId
      properties:
        SystemIdentifier:
          type: string
          description: Client system identifier agreed at enrollment (samples use ECG and GEM).
        PaymentId:
          type: string
          description: Client-assigned unique payment reference; echoed back and used for duplicate detection.
        ProcessingDate:
          type: string
          description: Processing date, yyyyMMdd (e.g. 20250923).
        Amount:
          type: string
          description: Amount in cents as a zero-padded string (0124 = $1.24).
        Currency:
          type: string
          example: USD
        OriginatorAccountId:
          type: string
          description: Account number sending the payment.
        BeneficiaryAccountId:
          type: string
          description: Account number receiving the payment.
        BeneficiaryName:
          type: string
        RemittanceInformation:
          type: string
    IntraBankTransferResponse:
      type: object
      properties:
        Status:
          type: string
          description: Accepted or Rejected.
        StatusCode:
          type: string
          description: W02 = accepted; W21 = rejected due to invalid debit account (codes shown in the guide).
        StatusMessage:
          type: string
        PaymentId:
          type: string
        PaymentMessageReference:
          type: string
          description: System-generated reference; the primary key for matching the transfer in every other API and the webhook.
    IntraBankSearchRequest:
      type: object
      required:
      - SystemIdentifier
      - AccountId
      - Type
      properties:
        SystemIdentifier:
          type: string
        AccountId:
          type: string
        Type:
          type: string
          enum:
          - Beneficiary
          - Originator
        ValueDate:
          type: string
          description: yyyy-MM-dd. Mutually exclusive with PaymentId and PaymentMessageReference.
        PaymentId:
          type: string
        PaymentMessageReference:
          type: string
    IntraBankSearchResponse:
      type: object
      properties:
        CurrentPage:
          type: string
        TransactionCount:
          type: integer
        Transactions:
          type: array
          items:
            $ref: '#/components/schemas/IntraBankTransaction'
    IntraBankTransaction:
      type: object
      properties:
        TransactionId:
          type: string
          description: Equals the PaymentMessageReference.
        SendersReferenceNumber:
          type: string
          description: Equals the client PaymentId.
        BeneficiaryReference:
          type: string
        StatusMessage:
          type: string
          description: e.g. Completed, Cancelled.
        Amount:
          type: string
        Currency:
          type: string
        FundTransferDirection:
          type: string
        FundTransferReleaseDate:
          type: string
        RemittanceInformation:
          type: string
        FundTransferReasonCode:
          type: string
          description: Present on unsuccessful transfers (e.g. MS01).
        FundTransferReasonDescription:
          type: string
        FundTransferCreditorName:
          type: string
        OriginatorName:
          type: string
        OriginatorAccountId:
          type: string
        OriginatorAddress2:
          type: string
        OriginatorAddress3:
          type: string
        BeneficiaryAccountId:
          type: string
        BeneficiaryName:
          type: string
    ErrorEnvelope:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: integer
              message:
                type: string
              additionalInfo:
                type: string