> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orum.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Transfer

> Initiate a transfer between a source party and destination party.



## OpenAPI

````yaml api-reference/oas-with-internal-removed.yaml post /deliver/transfers
openapi: 3.0.1
info:
  title: Orum API
  description: Orum API.
  version: v2022-09-21
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://api-sandbox.orum.io
  - url: https://vault.api-sandbox.orum.io
security: []
paths:
  /deliver/transfers:
    post:
      tags:
        - Transfers
      summary: Create a transfer
      description: Initiate a transfer between a source party and destination party.
      operationId: post-transfer
      parameters:
        - name: Orum-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/OrumVersion'
          x-orum-error-invalid:
            known-error: version_invalid
          x-orum-error-missing:
            known-error: version_missing
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferRequest'
        required: true
      responses:
        '200':
          description: 200 response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferResponse'
        '400':
          description: invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        default:
          description: unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - oauth2:
            - write:transfers
components:
  schemas:
    OrumVersion:
      type: string
      description: Version of Deliver and Verify APIs. Use v2022-09-21.
      enum:
        - v2022-09-21
    TransferRequest:
      title: TransferRequest
      type: object
      properties:
        transfer_reference_id:
          allOf:
            - $ref: '#/components/schemas/TransferReferenceId'
          x-orum-error-missing:
            known-error: missing_transfer_reference_id
          x-orum-error-invalid:
            known-error: invalid_transfer_reference_id
        amount:
          allOf:
            - $ref: '#/components/schemas/TransferAmount'
          x-orum-error-missing:
            known-error: missing_amount
          x-orum-error-invalid:
            known-error: invalid_amount
        currency:
          allOf:
            - $ref: '#/components/schemas/Currency'
          x-orum-error-missing:
            known-error: missing_currency
          x-orum-error-invalid:
            known-error: invalid_currency
        speed:
          allOf:
            - $ref: '#/components/schemas/TransferSpeed'
          x-orum-error-missing:
            known-error: missing_speed
          x-orum-error-invalid:
            known-error: invalid_speed
        source:
          allOf:
            - $ref: '#/components/schemas/SourceTransferParty'
          nullable: true
          type: object
        destination:
          allOf:
            - $ref: '#/components/schemas/DestinationTransferParty'
          type: object
          nullable: true
        account_statement_descriptor:
          type: string
          description: >-
            Banks can display additional information to help the end user
            understand why they received funds. This information will appear on
            both the source and destination bank account statements. The field
            supports 10 alphanumeric characters for ACH and 140 for RTP.
          nullable: true
          x-orum-error-invalid:
            known-error: invalid_account_statement_descriptor
        metadata:
          allOf:
            - $ref: '#/components/schemas/Metadata'
          type: object
          nullable: true
          x-orum-error-invalid:
            message: Metadata must be a valid JSON object.
            code: invalid_metadata
        transfer_group_id:
          allOf:
            - $ref: '#/components/schemas/OrumId'
          type: string
          nullable: true
          x-orum-error-invalid:
            known-error: invalid_transfer_group_id
        subledger_reference_id:
          allOf:
            - $ref: '#/components/schemas/SubledgerReferenceId'
          x-orum-error-invalid:
            known-error: invalid_subledger_reference_id
      required:
        - transfer_reference_id
        - amount
        - currency
        - speed
    TransferResponse:
      title: TransferResponse
      type: object
      required:
        - transfer
      properties:
        transfer:
          $ref: '#/components/schemas/TransferResponseBaseObject'
    ErrorResponse:
      type: object
      properties:
        error_code:
          type: string
        message:
          type: string
        details:
          type: object
          description: additional details about the error.
          nullable: true
      required:
        - error_code
        - message
    TransferReferenceId:
      title: TransferReferenceId
      type: string
      description: Unique reference id for the transfer. Generated by you.
      minLength: 1
    TransferAmount:
      title: TransferAmount
      type: integer
      description: >-
        Transfer amount in integral cents (example: 100 = $1). Must be greater
        than zero.
      minimum: 1
    Currency:
      title: Currency
      type: string
      description: Currency code in ISO 4217 format. Only USD is supported.
      enum:
        - USD
    TransferSpeed:
      title: TransferSpeed
      type: string
      description: Speed of transfer.
      enum:
        - asap
        - standard
        - same_day
        - wire
    SourceTransferParty:
      title: Source
      type: object
      description: >-
        For use cases that require a Source, information about the transfer
        funding source, which will be debited.
      properties:
        customer_reference_id:
          type: string
          description: >-
            Unique reference ID for the customer (person or business) associated
            with the external account being debited.
          minLength: 1
          x-orum-error-missing:
            known-error: missing_source_customer_reference_id
          x-orum-error-invalid:
            known-error: invalid_source_customer_reference_id
        account_reference_id:
          type: string
          description: Unique reference ID for the external account being debited.
          minLength: 1
          x-orum-error-missing:
            known-error: missing_source_account_reference_id
          x-orum-error-invalid:
            known-error: invalid_source_account_reference_id
        statement_display_name:
          type: string
          description: >-
            The name that will appear on the bank account statement of the
            account being debited. The field supports 16 alphanumeric characters
            for ACH, and 140 for RTP.
          nullable: true
      required:
        - account_reference_id
        - customer_reference_id
    DestinationTransferParty:
      title: TransferDestination
      type: object
      description: >-
        Information about the transfer funds destination, which will be
        credited.
      properties:
        customer_reference_id:
          type: string
          description: >-
            Unique reference ID for the customer (person or business) associated
            with the external account being credited.
          minLength: 1
          x-orum-error-missing:
            known-error: missing_destination_customer_reference_id
          x-orum-error-invalid:
            known-error: invalid_destination_customer_reference_id
        account_reference_id:
          type: string
          description: Unique reference ID for the account being credited.
          minLength: 1
          x-orum-error-missing:
            known-error: missing_destination_account_reference_id
          x-orum-error-invalid:
            known-error: invalid_destination_account_reference_id
        statement_display_name:
          type: string
          description: >-
            The name that will appear on the bank account statement of the
            account being credited. The field supports 16 alphanumeric
            characters for ACH, and 140 for RTP.
          nullable: true
      required:
        - account_reference_id
        - customer_reference_id
    Metadata:
      type: object
      description: >-
        Additional data you would like to provide on the resource. The field
        supports valid JSON of up to 5 key-value pairs with a maximum of 20
        characters for the key and 50 characters for the value. Do not include
        any sensitive information.
    OrumId:
      type: string
      description: Orum generated unique id for the resource.
      format: uuid
    SubledgerReferenceId:
      title: SubledgerReferenceId
      type: string
      description: Unique reference id for the subledger resource. Generated by you.
      minLength: 1
      maxLength: 255
    TransferResponseBaseObject:
      title: TransferResponseBaseObject
      type: object
      properties:
        id:
          $ref: '#/components/schemas/OrumId'
        transfer_reference_id:
          $ref: '#/components/schemas/TransferReferenceId'
        amount:
          $ref: '#/components/schemas/TransferAmount'
        currency:
          $ref: '#/components/schemas/Currency'
        speed:
          $ref: '#/components/schemas/TransferSpeed'
        source:
          $ref: '#/components/schemas/SourceTransferPartyResponse'
        destination:
          $ref: '#/components/schemas/DestinationTransferPartyResponse'
        status:
          $ref: '#/components/schemas/TransferStatus'
        status_reasons:
          type: array
          description: Array that explains why the transfer failed.
          items:
            $ref: '#/components/schemas/TransferStatusReason'
        account_statement_descriptor:
          type: string
          description: >-
            Banks can display additional information to help the end user
            understand why they received funds. This information will appear on
            both the source and destination bank account statements. The field
            supports 10 alphanumeric characters for ACH and 140 for RTP.
        estimated_funds_delivery_date:
          type: string
          format: date-time
          description: >-
            Estimated date that funds will arrive in destination account. Time
            will always be midnight and should be ignored.
        created_at:
          $ref: '#/components/schemas/CreatedAt'
        updated_at:
          $ref: '#/components/schemas/UpdatedAt'
        metadata:
          $ref: '#/components/schemas/Metadata'
        transfer_group_id:
          $ref: '#/components/schemas/OrumId'
        schedule_id:
          $ref: '#/components/schemas/OrumId'
        subledger_reference_id:
          $ref: '#/components/schemas/SubledgerReferenceId'
      required:
        - id
        - transfer_reference_id
        - amount
        - currency
        - speed
        - status
        - created_at
        - updated_at
    SourceTransferPartyResponse:
      title: SourceTransferPartyResponse
      type: object
      description: >-
        For use cases that require a Source, information about the transfer
        funding source, which will be debited.
      properties:
        customer_reference_id:
          type: string
          description: >-
            Unique reference ID for the customer (person or business) associated
            with the external account being debited.
        account_reference_id:
          type: string
          description: Unique reference ID for the external account being debited.
        statement_display_name:
          allOf:
            - $ref: '#/components/schemas/PartyStatementDisplayName'
        trace_number:
          allOf:
            - $ref: '#/components/schemas/TraceNumber'
        return_trace_number:
          allOf:
            - $ref: '#/components/schemas/ReturnTraceNumber'
      required:
        - account_reference_id
        - customer_reference_id
    DestinationTransferPartyResponse:
      title: DestinationTransferPartyResponse
      type: object
      description: >-
        Information about the transfer funds destination, which will be
        credited.
      properties:
        customer_reference_id:
          type: string
          description: >-
            Unique reference ID for the customer (person or business) associated
            with the external account being credited.
        account_reference_id:
          type: string
          description: Unique reference ID for the account being credited.
        statement_display_name:
          allOf:
            - $ref: '#/components/schemas/PartyStatementDisplayName'
        trace_number:
          allOf:
            - $ref: '#/components/schemas/TraceNumber'
        return_trace_number:
          allOf:
            - $ref: '#/components/schemas/ReturnTraceNumber'
      required:
        - account_reference_id
        - customer_reference_id
    TransferStatus:
      title: TransferStatus
      type: string
      description: Describes the current status of the transfer.
      enum:
        - completed
        - created
        - failed
        - pending
        - settled
    TransferStatusReason:
      title: Transfer Status Reason
      type: object
      description: For failed transfers - details on why the transfer is in a failed state.
      properties:
        source:
          $ref: '#/components/schemas/ReasonCodes'
          description: Present if transfer failed due to an issue with the transfer source.
        destination:
          $ref: '#/components/schemas/ReasonCodes'
          description: >-
            Present if transfer failed due to an issue with the transfer
            destination.
    CreatedAt:
      type: string
      description: Timestamp when the resource was created.
      format: date-time
    UpdatedAt:
      type: string
      description: Timestamp when the resource was last updated.
      format: date-time
    PartyStatementDisplayName:
      title: PartyStatementDisplayName
      type: string
      description: >-
        The name that will appear on the bank account statement of the account
        being debited. The field supports 16 alphanumeric characters for ACH,
        and 140 for RTP.
    TraceNumber:
      title: TraceNumber
      type: string
      description: >-
        Unique tracking number of the payment assigned by its origination FI.
        This number can be used to track the lifecycle of the payment at the FI.
    ReturnTraceNumber:
      title: ReturnTraceNumber
      type: string
      description: >-
        Unique tracking number assigned to a return to associate it back with
        its original trace number for reconciliation.
    ReasonCodes:
      title: ReasonCode
      type: object
      required:
        - reason_code
        - reason_code_message
      properties:
        reason_code:
          type: string
          description: >-
            A word-based code created by Orum to describe the reason for the
            failure. Orum reason codes are rail-agnostic.
          example: insufficient_funds
        reason_code_message:
          type: string
          description: A human-readable description of the reason code.
        network_reason_code:
          type: string
          description: The reason code sent by the network (ex R01).
        network_reason_code_message:
          type: string
          description: The message sent by the network.
        network_reason_code_rail_type:
          type: string
          description: The payment rail used in the transfer. Either RTP or ACH.
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api-sandbox.orum.io/oauth/token
          scopes:
            read:persons: Read persons
            write:persons: Write persons
            read:businesses: Read businesses
            write:businesses: Write businesses
            read:external-accounts: Read external accounts
            write:external-accounts: Write external accounts
            read:cards: Read cards
            write:cards: Write cards
            read:transfers: Read transfers
            write:transfers: Write transfers
            read:transfer-groups: Read transfer groups
            write:transfer-groups: Write transfer groups
            read:schedules: Read schedules
            write:schedules: Write schedules
            read:routing-number-eligibility: Read routing number eligibility
            read:balances: Read balances
            read:reports: Read reports
            write:reports: Write reports
            read:booktransfers: Read book transfers
            write:booktransfers: Write book transfers
            read:subledgers: Read subledgers
            write:subledgers: Write subledgers
            read:verify-accounts: Read verify accounts
            write:verify-accounts: Write verify accounts
            read:webhook-configurations: Read webhook configurations
            write:webhook-configurations: Write webhook configurations
            read:webhook-secret: Read webhook secret
            write:webhook-secret: Write webhook secret
            invoke:webhook: Invoke webhook

````