Citizens Account Transfer API

The Citizens Account Transfer API moves funds near real-time between accounts a client already holds at Citizens. Single same-day transfers only - batch and future-dated transfers are not supported in this version - with a minimum amount of $0.01. No duplicate-key protection, status lookup or reversal operation is published on this surface.

Operations 1

POST /initiate Initiate the transfer for a authorized Non human Account system identifier #

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/citizens-account-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

citizens-financial-group-account-transfer-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Account Transfer
  x-ibm-name: account-transfer
  version: 1.0.6
  description: "The Account Transfer API enables near real‑time movement of funds between a client’s own\
    \ accounts at Citizens. Designed to support day‑to‑day cash‑management needs, this API provides a\
    \ simple, secure way to initiate single, same‑day transfers (future‑dated transfers are not supported\
    \ in the current version).\nWhile the Payments API handles external disbursements, clients often need\
    \ a separate capability to move money internally across their accounts. The Account Transfer API fulfills\
    \ this need with a streamlined process built for automation and integration.\n\n**Key features include:**\n\
    \n- **Near real‑time internal transfers between a client’s own accounts**\n- **Single‑transaction\
    \ initiation (batch transfers not supported)**\n- **FAPI‑compliant security, including OAuth 2.0 with\
    \ fine‑grained scopes**\n- **Standardized JSON-based responses for consistent, easy integration**\n\
    \nThis API gives clients a secure, modern, API-driven mechanism to manage liquidity across their accounts\
    \ without relying on manual or online banking processes.\n\n The **Account To Account Transfer API**\
    \ provides the following functionalities:\n \n<br>  **Account Transfer API**:\n   - Initiates fund\
    \ transfer by providing account numbers and Amount atleast $ 0.01 .\n   - **Endpoint**: `v1/account-transfer/initiate`\
    \ (POST)\n   - **Purpose**: To initiate the transfer between accounts.\n   \n"
  x-pathalias: accounttransfer-v1
  contact:
    url: https://www.citizensbank.com/corporate-finance/overview.aspx?cmclmkt#next-step
    name: Commercial Sales team
  x-ibm-summary: ''
  x-source-url: https://developer.citizensbank.com/product/commercial-banking/api/accounttransfer-v1
  x-harvested: '2026-09-05'
  x-harvest-method: searched
  x-environment: production
externalDocs:
  description: API Documentation
  url: https://developer.citizensbank.com/content/qut/CitizensAccountTransferAPIUserGuide.pdf
security:
- client-id: []
paths:
  /initiate:
    post:
      tags:
      - Account Transfer
      summary: 'Initiate the transfer for a authorized Non human Account system identifier '
      description: The Account Transfer API is used to initiate transfers between Citizens Bank accounts
        that are entitled to the Trasnfer using the associated API‑User ID.
      operationId: initiateTransfer
      parameters:
      - $ref: '#/components/parameters/x-fapi-trace-id'
      - $ref: '#/components/parameters/x-fapi-channel-id'
      - $ref: '#/components/parameters/authorization'
      requestBody:
        description: Provide amount and from / to account number
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountTransferRequest'
        required: true
      responses:
        '200':
          description: Successfully processed the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountTransferResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse400'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse401'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    AccountTransferResponse:
      type: object
      properties:
        message:
          type: string
          description: The message associated with the API response.
          example: Success
        description:
          type: string
          description: A detailed description of the API response.
          example: Request processed successfully.
        requestId:
          type: string
          description: The unique identifier for the API request.
          example: 696888e9c7efa981ebd718089c71dxxae
        requestTime:
          type: string
          description: The timestamp of the API request in US/Eastern timezone.
          format: date-time
        data:
          type: object
          description: The actual data returned in the response. Can be of any type.
          example:
            transactionId: 69657e9c7efa981ebd718089c71dd5f1
            confirmationNumber: '12345'
          items:
            $ref: '#/components/schemas/AccountTransferData'
        status:
          type: integer
          description: The HTTP status code of the API response.
          format: int32
          example: 200
      description: Represents the response data containing the API status and additional data.
    AuthorizationHeader:
      type: string
      title: JWT Access Token
      description: Bearer Token required for Client authorization validated against Ping Federate
    AccountTransferRequest:
      required:
      - fromAccountNumber
      - toAccountNumber
      - amount
      type: object
      properties:
        fromAccountNumber:
          maxLength: 10
          minLength: 10
          type: string
          description: The from account number is the number that identifies the account from which funds
            are being transferred.. Must be 10 characters.
          example: '1123456789'
        toAccountNumber:
          maxLength: 10
          minLength: 10
          type: string
          title: To Account Number of Max size 10 digit char
          description: The to account number is the number that identifies the account to which funds
            are being transferred.
          example: '1234567890'
        amount:
          type: number
          title: 'Amount with minimum of $0.01 '
          description: The amount is ensure being transferred between the From/To accounts
          example: 0.01
        memo:
          maxLength: 50
          type: string
          title: Instruction of A debit memo on a company’s bank statement
          description: Document that helps account holders understand deductions from their accounts,
            ensuring clarity and accuracy in their financial records.
          example: Maximum 50 Character
      description: Represents the request for account transfer.
    AccountTransferData:
      type: object
      properties:
        transactionId:
          maxLength: 10
          type: string
          title: Unique Transaction Id to track the transaction details
        confirmationNumber:
          maxLength: 10
          type: string
          title: Ensure the transaction is successfull and generate a unique id in the system
      required:
      - transactionId
      - confirmationNumber
    ErrorResponse401:
      type: object
      properties:
        result:
          type: string
          maxLength: 7
          enum:
          - FATAL
          - WARNING
          example: WARNING
          description: It represents the error status. Its value should be either WARNING or FATAL. *
            `FATAL` - is an error which represents that something is not correct while processing the
            request, it could be because of the request or something is not correct with the processing
            system. * `WARNING` - is a success with some info which means it is not absolute successful
            transaction, however response will have information about what is needed in order to have
            absolute successful transaction.
        source:
          type: string
          maxLength: 100
          example: Account Transfer API -Entitlement
          description: Source of error occured in the system
        requestId:
          type: string
          maxLength: 36
          example: 685af2c80f9b1a93ca106902937c2e01
          description: traceid to track the error in the APM logs.
        errorDetails:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                maxLength: 10
                example: AT-401
                description: This is the application error code returned by the API layer or the Implementation
                  layer. A list of error codes will be provided in the user guide.
              description:
                type: string
                maxLength: 250
                example: Your request could not be processed. Please refer to the user guide for error
                  codes information.
                description: Description of the operation's status. It will have detailed error description
                  in case of any error.
              messageDetail:
                type: string
                maxLength: 250
                example:
                - AT-1010
                - AT-1011
                description: Capture all the error codes occured due to entitlement issue
            required:
            - code
            - description
      required:
      - result
      - source
      - errorDetails
    ErrorResponse400:
      type: object
      properties:
        result:
          type: string
          maxLength: 7
          enum:
          - FATAL
          - WARNING
          example: WARNING
          description: It represents the error status. Its value should be either WARNING or FATAL. *
            `FATAL` - is an error which represents that something is not correct while processing the
            request, it could be because of the request or something is not correct with the processing
            system. * `WARNING` - is a success with some info which means it is not absolute successful
            transaction, however response will have information about what is needed in order to have
            absolute successful transaction.
        source:
          type: string
          maxLength: 100
          example: Account Transfer API
          description: Source of error occured in the system
        requestId:
          type: string
          maxLength: 36
          example: 685af2c80f9b1a93ca106902937c2e01
          description: traceid to track the error in the APM logs.
        errorDetails:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                maxLength: 10
                example: AT-400
                description: This is the application error code returned by the API layer or the Implementation
                  layer. A list of error codes will be provided in the user guide.
              description:
                type: string
                maxLength: 250
                example: Your request could not be processed. Please refer to the user guide for error
                  codes information.
                description: Description of the operation's status. It will have detailed error description
                  in case of any error.
              messageDetail:
                type: string
                maxLength: 250
                example:
                - AT-1001
                - AT-1002
                - AT-1003
                - AT-1004
                - AT-1005
                - AT-1006
                - AT-1007
                - AT-1008
                - AT-1009
                description: Capture all the error codes occured due t0 invalid client request
            required:
            - code
            - description
      required:
      - result
      - source
      - errorDetails
    ErrorResponse:
      type: object
      properties:
        result:
          type: string
          maxLength: 7
          enum:
          - FATAL
          - WARNING
          example: FATAL
          description: It represents the error status. Its value should be either WARNING or FATAL. *
            `FATAL` - is an error which represents that something is not correct while processing the
            request, it could be because of the request or something is not correct with the processing
            system. * `WARNING` - is a success with some info which means it is not absolute successful
            transaction, however response will have information about what is needed in order to have
            absolute successful transaction.
        source:
          type: string
          maxLength: 100
          example: Account Transfer API
          description: Source system or provider system which causes error.
        requestId:
          type: string
          maxLength: 36
          example: 685af2c80f9b1a93ca106902937c2e01
          description: traceid to track the error in the APM logs.
        errorDetails:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                maxLength: 10
                example: IR-500
                description: This is the application error code returned by the API layer or the Implementation
                  layer. A list of error codes will be provided in the user guide.
              description:
                type: string
                maxLength: 250
                example: Internal server error.
                description: Description of the operation's status. It will have detailed error description
                  in case of any error.
              messageDetail:
                type: string
                maxLength: 250
                example: Due to technical error, your request cannot be processed. Please try later again!
                description: Details about error including stack traces. This will not be populated for
                  any handled error.
            required:
            - code
            - description
      required:
      - result
      - source
      - errorDetails
  securitySchemes:
    client-id:
      type: apiKey
      in: header
      name: X-IBM-Client-Id
      x-key-type: client_id
    OAuth2:
      type: oauth2
      x-ibm-oauth-provider: externalpingfederate
      flows:
        clientCredentials:
          tokenUrl: https://pf-fam.internal.citizensbank.com/as/token.oauth2
          scopes:
            transfer:initiate: Access to initiate the transfer
  parameters:
    x-fapi-trace-id:
      schema:
        maxLength: 36
        type: string
      name: x-fapi-trace-id
      in: header
      description: Unique request id for each request to make it traceable if needed.
      style: simple
      required: true
    x-fapi-channel-id:
      schema:
        maxLength: 20
        type: string
      name: x-fapi-channel-id
      in: header
      description: Identifier used to distinguish between different communication channels or data streams
        within a client system.
      style: simple
      required: false
      explode: false
    authorization:
      schema:
        $ref: '#/components/schemas/AuthorizationHeader'
      name: Authorization
      in: header
      description: OAuth 2.0 Authorization Bearer Token
      style: simple
      required: true
      example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkhMMkQtYVdmaUxVS1BpUHQ5b2lweWNiYXo4WV9SUzI1NiIsInBpLmF0bSI6InphYXciLCJ0eXAiOiJKV1QifQ.eyJzY29wZSI6ImlyOnJlYWQiLCJjaWQiOiIyNzFmYTdkZDI3MDExMTA5Mzc4ZWE5MTU1YzA2ZTcxMSIsImlzcyI6Imh0dHBzOi8vcGYtZmFtLWRldi5pbnRlcm5hbC5jaXRpemVuc2JhbmsuY29tIiwiYXVkIjoiaW5mb3JtYXRpb25fcmVwb3J0aW5nIiwianRpIjoiOHpRMUJVSnlTT0xkWHZmQXJtb1pQSXVpZXBmdkF5WnJwdnc4NVlGY2dDVk1FbyIsInN1YmplY3QiOiJBQ01FLUFQSV9VQVRBTExfTU1HUFMiLCJjbmYiOnsieDV0IjoiOTlmN2Q3ZDQzOGMxZjViMWFiNzc4MDA1YmU3OGNkODY0NDU1YmYyYSJ9LCJleHAiOjE3NTczNTE2NzR9.c6y4ZcVxP8c8dZK8IwMPhVnKkrk7Kyf4h4cUo8GOPxrrR_AYq-59tcO9lzTkr4Kfa5-7q_HbxCV14wUnwz_N1JuehZ5N3wyuJ3wjc2jEfOnto8YwSEhY4qWbFm1TTdU8jqRZMp2KpvBpwa5BKNfjo3t0xAMqQ2til5-1JQHEZyint56OglKq13OzG265jW_RKOhmmmGuTlqDjiC4Mz2AQU-1VZY2i6LZTqKKTr7dvQVy5TKm9-akEkie8s-cXymaQ9Km54-PARdH8orezez8NuJc4LN550m46ulWJ2mNMDs4D9NnKQMr-stla2mQtovU__vNg3WDCvQ8Nrw1db5icA
x-ibm-configuration:
  type: rest
  phase: realized
  enforced: true
  testable: true
  cors:
    enabled: true
  application-authentication:
    certificate: false
  application-authentication-source: []
servers:
- url: https://apis.citizensbank.com/v1/account-transfer
x-ibm-endpoints:
- url: https://apis.citizensbank.com/v1/account-transfer