Bridge Transfers API

The Transfers API from Bridge — 5 operation(s) for transfers.

Operations 8

GET /transfers Get all transfers
POST /transfers Create a transfer
GET /transfers/pending List transfers with pending USDT trades
GET /transfers/{transferID} Get a transfer
PUT /transfers/{transferID} Update a transfer
DELETE /transfers/{transferID} Delete a transfer
POST /transfers/{transferID}/execute Execute a pending USDT trade on a transfer
GET /transfers/static_templates Get all static templates

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/bridge-transfers-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

bridge-transfers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bridge API Keys Transfers API
  description: APIs to move into, out of, and between any form of a dollar
  version: '1'
servers:
- url: https://api.bridge.xyz/v0
  description: The base path for all resources
security:
- ApiKey: []
tags:
- name: Transfers
paths:
  /transfers:
    get:
      summary: Get all transfers
      tags:
      - Transfers
      parameters:
      - $ref: '#/components/parameters/LimitParameter'
      - $ref: '#/components/parameters/TransferStartingAfterParameter'
      - $ref: '#/components/parameters/TransferEndingBeforeParameter'
      - $ref: '#/components/parameters/TxHashParameter'
      - $ref: '#/components/parameters/UpdatedAfterMsParameter'
      - $ref: '#/components/parameters/UpdatedBeforeMsParameter'
      - $ref: '#/components/parameters/TemplateIDParameter'
      - $ref: '#/components/parameters/TransferStateParameter'
      responses:
        '200':
          description: List of transfers (the returned list is empty if none found)
          content:
            application/json:
              schema:
                title: Transfers
                type: object
                required:
                - count
                - data
                properties:
                  count:
                    type: integer
                    description: The number of transfers returned
                  data:
                    type: array
                    minItems: 0
                    items:
                      $ref: '#/components/schemas/TransferResponse'
              examples:
                TransfersFound:
                  summary: A non-empty list of transfers
                  value:
                    count: 2
                    data:
                    - $ref: '#/components/examples/AchOnrampFundsReceivedTransferResponse'
                    - $ref: '#/components/examples/AchOfframpTransferResponse'
                NoTransfersFound:
                  summary: An empty list of transfers
                  value:
                    count: 0
                    data: []
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
    post:
      summary: Create a transfer
      description: 'Create a transfer.


        If this transfer cannot be created because the funding source is temporarily busy processing another update, this endpoint may return `409 resource_state_conflict`.

        This is a transient, retryable response. You may safely retry the same request with the same `Idempotency-Key`.

        '
      tags:
      - Transfers
      parameters:
      - $ref: '#/components/parameters/IdempotencyKeyParameter'
      requestBody:
        description: Transfer object to be created
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferRequest'
      responses:
        '201':
          description: Transfer object created
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/TransferResponse'
                - $ref: '#/components/schemas/TransferRouteResponse'
              examples:
                AchOnrampTransferResponse:
                  $ref: '#/components/examples/AchOnrampTransferResponse'
                AchOfframpTransferResponse:
                  $ref: '#/components/examples/AchOfframpTransferResponse'
                AchOfframpWithMemoTransferResponse:
                  $ref: '#/components/examples/AchOfframpWithMemoTransferResponse'
                WireOnrampTransferResponse:
                  $ref: '#/components/examples/WireOnrampTransferResponse'
                WireOfframpTransferResponse:
                  $ref: '#/components/examples/WireOfframpTransferResponse'
                SepaOnrampTransferResponse:
                  $ref: '#/components/examples/SepaOnrampTransferResponse'
                SepaOfframpTransferResponse:
                  $ref: '#/components/examples/SepaOfframpTransferResponse'
                PixOnrampTransferResponse:
                  $ref: '#/components/examples/PixOnrampTransferResponse'
                PixOfframpTransferResponse:
                  $ref: '#/components/examples/PixOfframpTransferResponse'
                SpeiOnrampTransferResponse:
                  $ref: '#/components/examples/SpeiOnrampTransferResponse'
                SpeiOfframpTransferResponse:
                  $ref: '#/components/examples/SpeiOfframpTransferResponse'
                BreBOnrampTransferResponse:
                  $ref: '#/components/examples/BreBOnrampTransferResponse'
                BreBOfframpTransferResponse:
                  $ref: '#/components/examples/BreBOfframpTransferResponse'
                CoBankTransferOnrampTransferResponse:
                  $ref: '#/components/examples/CoBankTransferOnrampTransferResponse'
                CoBankTransferOfframpTransferResponse:
                  $ref: '#/components/examples/CoBankTransferOfframpTransferResponse'
                ValidTransferRouteResponse:
                  $ref: '#/components/examples/ValidTransferRouteResponse'
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '409':
          $ref: '#/components/responses/ResourceStateConflictError'
        '403':
          $ref: '#/components/responses/TransferAmlError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
  /transfers/pending:
    get:
      summary: List transfers with pending USDT trades
      description: 'Returns transfers that have a stuck USDT-to-USD trade awaiting execution. Results are sorted by creation time (newest first) and paginated.


        Use `POST /transfers/{transferID}/execute` to force-execute a pending trade at the current market rate.

        '
      tags:
      - Transfers
      parameters:
      - $ref: '#/components/parameters/LimitParameter'
      - $ref: '#/components/parameters/TransferStartingAfterParameter'
      - $ref: '#/components/parameters/TransferEndingBeforeParameter'
      responses:
        '200':
          description: List of transfers with pending trades (the returned list is empty if none found)
          content:
            application/json:
              schema:
                title: PendingTransfers
                type: object
                required:
                - count
                - data
                properties:
                  count:
                    type: integer
                    description: The number of transfers returned
                  data:
                    type: array
                    minItems: 0
                    items:
                      $ref: '#/components/schemas/TransferResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
  /transfers/{transferID}:
    parameters:
    - $ref: '#/components/parameters/TransferIDParameter'
    get:
      summary: Get a transfer
      description: Retrieve a transfer object from the passed in transfer ID
      tags:
      - Transfers
      responses:
        '200':
          description: Successful transfer object response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferResponse'
              examples:
                AchOnrampTransferResponse:
                  $ref: '#/components/examples/AchOnrampTransferResponse'
                AchOfframpTransferResponse:
                  $ref: '#/components/examples/AchOfframpTransferResponse'
                AchOfframpWithMemoTransferResponse:
                  $ref: '#/components/examples/AchOfframpWithMemoTransferResponse'
                WireOnrampTransferResponse:
                  $ref: '#/components/examples/WireOnrampTransferResponse'
                WireOfframpTransferResponse:
                  $ref: '#/components/examples/WireOfframpTransferResponse'
                SepaOnrampTransferResponse:
                  $ref: '#/components/examples/SepaOnrampTransferResponse'
                SepaOfframpTransferResponse:
                  $ref: '#/components/examples/SepaOfframpTransferResponse'
                PixOnrampTransferResponse:
                  $ref: '#/components/examples/PixOnrampTransferResponse'
                PixOfframpTransferResponse:
                  $ref: '#/components/examples/PixOfframpTransferResponse'
                SpeiOnrampTransferResponse:
                  $ref: '#/components/examples/SpeiOnrampTransferResponse'
                SpeiOfframpTransferResponse:
                  $ref: '#/components/examples/SpeiOfframpTransferResponse'
                BreBOnrampTransferResponse:
                  $ref: '#/components/examples/BreBOnrampTransferResponse'
                BreBOfframpTransferResponse:
                  $ref: '#/components/examples/BreBOfframpTransferResponse'
                CoBankTransferOnrampTransferResponse:
                  $ref: '#/components/examples/CoBankTransferOnrampTransferResponse'
                CoBankTransferOfframpTransferResponse:
                  $ref: '#/components/examples/CoBankTransferOfframpTransferResponse'
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
    put:
      summary: Update a transfer
      description: Update a transfer that was previously created. Must be in the awaiting_funds state.
      tags:
      - Transfers
      requestBody:
        description: Transfer object to be updated
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferUpdateRequest'
      responses:
        '201':
          description: Transfer object created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferResponse'
              examples:
                AchOnrampTransferResponse:
                  $ref: '#/components/examples/AchOnrampTransferResponse'
                AchOfframpTransferResponse:
                  $ref: '#/components/examples/AchOfframpTransferResponse'
                AchOfframpWithMemoTransferResponse:
                  $ref: '#/components/examples/AchOfframpWithMemoTransferResponse'
                WireOnrampTransferResponse:
                  $ref: '#/components/examples/WireOnrampTransferResponse'
                WireOfframpTransferResponse:
                  $ref: '#/components/examples/WireOfframpTransferResponse'
                SepaOnrampTransferResponse:
                  $ref: '#/components/examples/SepaOnrampTransferResponse'
                SepaOfframpTransferResponse:
                  $ref: '#/components/examples/SepaOfframpTransferResponse'
                PixOnrampTransferResponse:
                  $ref: '#/components/examples/PixOnrampTransferResponse'
                PixOfframpTransferResponse:
                  $ref: '#/components/examples/PixOfframpTransferResponse'
                SpeiOnrampTransferResponse:
                  $ref: '#/components/examples/SpeiOnrampTransferResponse'
                SpeiOfframpTransferResponse:
                  $ref: '#/components/examples/SpeiOfframpTransferResponse'
                BreBOnrampTransferResponse:
                  $ref: '#/components/examples/BreBOnrampTransferResponse'
                BreBOfframpTransferResponse:
                  $ref: '#/components/examples/BreBOfframpTransferResponse'
                CoBankTransferOnrampTransferResponse:
                  $ref: '#/components/examples/CoBankTransferOnrampTransferResponse'
                CoBankTransferOfframpTransferResponse:
                  $ref: '#/components/examples/CoBankTransferOfframpTransferResponse'
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '403':
          $ref: '#/components/responses/TransferAmlError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
    delete:
      summary: Delete a transfer
      description: Delete a transfer that was previously created. Must be in the awaiting_funds state.
      tags:
      - Transfers
      responses:
        '200':
          description: Successful deletion of transfer
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
  /transfers/{transferID}/execute:
    parameters:
    - $ref: '#/components/parameters/TransferIDParameter'
    post:
      summary: Execute a pending USDT trade on a transfer
      description: 'Force-executes a stuck USDT-to-USD trade at the current market rate. The transfer must have a pending trade (i.e. appear in `GET /transfers/pending`).


        After execution, the transfer will continue processing normally with the executed market rate.

        '
      tags:
      - Transfers
      parameters:
      - $ref: '#/components/parameters/IdempotencyKeyParameter'
      responses:
        '200':
          description: Transfer with trade execute at market rate enabled successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
  /transfers/static_templates:
    get:
      summary: Get all static templates
      tags:
      - Transfers
      parameters:
      - $ref: '#/components/parameters/LimitParameter'
      - $ref: '#/components/parameters/TransferStartingAfterParameter'
      - $ref: '#/components/parameters/TransferEndingBeforeParameter'
      responses:
        '200':
          description: List of static templates (the returned list is empty if none found). Static templates are transfers that are used as templates for other transfers and can be created using the static_templates feature flag.
          content:
            application/json:
              schema:
                title: Static Templates
                type: object
                required:
                - count
                - data
                properties:
                  count:
                    type: integer
                    description: The number of static templates returned
                  data:
                    type: array
                    minItems: 0
                    items:
                      $ref: '#/components/schemas/TransferResponse'
              examples:
                TransfersFound:
                  summary: A non-empty list of static templates
                  value:
                    count: 2
                    data:
                    - $ref: '#/components/examples/AchOnrampFundsReceivedTransferResponse'
                    - $ref: '#/components/examples/AchOfframpTransferResponse'
                NoTransfersFound:
                  summary: An empty list of static templates
                  value:
                    count: 0
                    data: []
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
components:
  schemas:
    TravelRuleWalletAttestedOwnershipAt:
      type: string
      format: date-time
      description: Required when `wallet_type` is `self-custodied` or `hosted`. Must be a timestamp in the past indicating when wallet ownership was attested.
    Currency:
      type: string
      enum:
      - usdb
      - usdc
      - usdt
      - usd
      - pyusd
    TravelRuleData:
      type: object
      description: Travel Rule data for a crypto movement. Send this on create or update when the same counterparty should apply to every future use of a reusable resource, or send the same payload with `POST /travel_rule_data/{id}` when it belongs to one specific movement.
      properties:
        originator:
          description: The party sending the crypto.
          allOf:
          - $ref: '#/components/schemas/TravelRuleOriginator'
        beneficiary:
          description: The party receiving the crypto.
          allOf:
          - $ref: '#/components/schemas/TravelRuleBeneficiary'
      example:
        originator:
          name: Jane Smith
          address:
            street_line_1: 123 Market St
            street_line_2: null
            city: San Francisco
            state: CA
            postal_code: '94105'
            country: USA
          identifying_information:
            type: national_id
            number: '1234567890'
            issuing_country: USA
          birth_date: '2000-01-31'
          place_of_birth:
            city: San Francisco
            country: USA
          wallet_type: self_custodied
          wallet_attested_ownership_at: '2026-04-01T12:00:00Z'
        beneficiary:
          is_self: true
          wallet_type: external
    TransferRouteResponse:
      required:
      - state
      - notes
      properties:
        state:
          type: string
          enum:
          - valid
          - invalid
        notes:
          type: array
          items:
            type: string
    TransferReturnDetails:
      properties:
        reason:
          description: The reason for the return, as given by the returning financial institution.
          type: string
        refund_reference_id:
          description: A unique identifier (such as transaction hash) for the refund transaction.
          type: string
        risk_rejection_reason:
          description: If the return is due to a risk rejection, this field will be populated with the reason for the risk rejection.
          type: string
    ChargeBearer:
      description: 'Which party bears the SWIFT transaction charges.

        - `our`: the sender (ordering customer) pays all charges.

        - `sha`: charges are shared — the sender pays their own bank''s charges; intermediary/beneficiary bank charges are deducted from the transferred amount.

        - `ben`: the receiver (beneficiary) pays all charges, deducted from the transferred amount.

        '
      type: string
      enum:
      - our
      - sha
      - ben
    Error:
      required:
      - code
      - message
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 256
        message:
          type: string
          minLength: 1
          maxLength: 512
        source:
          title: ErrorSource
          required:
          - location
          - key
          properties:
            location:
              type: string
              enum:
              - path
              - query
              - body
              - header
            key:
              type: string
              description: Comma separated names of the properties or parameters causing the error
    ExchangeDetails:
      description: Exchange information for a currency conversion.
      properties:
        fixed_rate:
          description: The target exchange rate.
          type: string
        estimated_market_rate:
          description: The estimated achievable rate based on current market conditions.
          type: string
        traded_market_rate:
          description: The actual effective exchange rate achieved.
          type: string
        trade_at_market:
          description: Whether market-rate execution has been applied to this trade.
          type: boolean
        updated_at:
          description: Timestamp of the last exchange details update.
          type: string
          format: date-time
    SwiftReference:
      description: A payment reference message or remittance information to be included in a SWIFT transaction. It can have at most 4 lines (separated by "\n"), each line with a max length of 35 chars. The allowed characters are `a-z`, `A-Z`, `0-9`, special characters (`/` `-` `?` `:` `(` `)` `.` `,` `'` `+`), and space
      type: string
      minLength: 1
      maxLength: 190
    SwiftCharges:
      description: '**Deprecated**: this schema is the type of the deprecated `swift_charges` field and will be removed in a future release. Prefer `charge_bearer`, which is typed by `ChargeBearer`.


        Which party bears the SWIFT transaction charges (MT 103 field 71A).

        - `our`: the sender (ordering customer) pays all charges.

        - `sha`: charges are shared — the sender pays their own bank''s charges; intermediary/beneficiary bank charges are deducted from the transferred amount.

        - `ben`: the receiver (beneficiary) pays all charges, deducted from the transferred amount.

        '
      deprecated: true
      type: string
      enum:
      - our
      - sha
      - ben
    SpeiReference:
      description: A payment reference message or remittance information to be included in a SPEI transaction. The allowed characters are alphanumeric `a-z`, `A-Z`, `0-9`, and space
      type: string
      minLength: 1
      maxLength: 40
    TransferDestination:
      required:
      - currency
      - payment_rail
      properties:
        currency:
          description: When `eur` is specified as the destination currency, the destination rail must be `sepa`.
          $ref: '#/components/schemas/EuroInclusiveCurrency'
        payment_rail:
          description: When `sepa` is specified as the destination payment rail, the destination currency must be `eur`; when `swift` is specified as the destination payment rail, the destination currency must be `usd`.
          $ref: '#/components/schemas/SepaSwiftInclusiveOfframpPaymentRail'
        external_account_id:
          description: External bank account Bridge should send the funds to. The currency associated with the External Account must match the destination currency.
          $ref: '#/components/schemas/Id'
        bridge_wallet_id:
          description: The Bridge Wallet to which Bridge will send the funds. The chain associated with the Bridge Wallet must match the destination payment rail.
          $ref: '#/components/schemas/Id'
        omad:
          $ref: '#/components/schemas/Omad'
          readOnly: true
        imad:
          $ref: '#/components/schemas/Imad'
          readOnly: true
        trace_number:
          $ref: '#/components/schemas/TraceNumber'
          readOnly: true
        end_to_end_id:
          $ref: '#/components/schemas/EndToEndId'
          readOnly: true
        wire_message:
          $ref: '#/components/schemas/WireMessage'
        sepa_reference:
          $ref: '#/components/schemas/SepaReference'
        swift_reference:
          $ref: '#/components/schemas/SwiftReference'
        spei_reference:
          $ref: '#/components/schemas/SpeiReference'
        reference:
          $ref: '#/components/schemas/Reference'
        swift_charges:
          description: '**Deprecated**: prefer `charge_bearer`; this field will be removed in a future release. In responses, this field always mirrors `charge_bearer`. Sending both `swift_charges` and `charge_bearer` with conflicting values on a request is rejected.


            Which party will bear the charges for the SWIFT transaction. When left blank, `sha` will be used as the default.

            '
          deprecated: true
          $ref: '#/components/schemas/SwiftCharges'
        charge_bearer:
          description: Which party bears the charges for the SWIFT transaction. Defaults to `sha` when not specified. Replaces the deprecated `swift_charges` field; accepted on both request and response.
          $ref: '#/components/schemas/ChargeBearer'
        ach_reference:
          $ref: '#/components/schemas/AchReference'
        uetr:
          $ref: '#/components/schemas/Uetr'
        blockchain_memo:
          type: string
          description: The memo to include when sending funds on chain. Only allowed for blockchains that support memos such as Stellar
        deposit_id:
          $ref: '#/components/schemas/DepositId'
        tracking_number:
          $ref: '#/components/schemas/TrackingNumber'
          readOnly: true
        transaction_id:
          $ref: '#/components/schemas/TransactionId'
          readOnly: true
        sending_institution_name:
          description: The name of the institution sending the funds
          type: string
          readOnly: true
    SepaSwiftInclusivePaymentRail:
      type: string
      enum:
      - ach
      - wire
      - ach_push
      - ach_same_day
      - arbitrum
      - avalanche_c_chain
      - base
      - bre_b
      - co_bank_transfer
      - celo
      - ethereum
      - faster_payments
      - fiat_deposit_return
      - optimism
      - pix
      - polygon
      - sepa
      - solana
      - spei
      - stellar
      - swift
      - tempo
      - tron
    SepaReference:
      description: A reference message to be sent with a SEPA transaction. We recommend you set a unique value to help you and your customers track payments end to end. It must be from 6 to 140 characters. The allowed characters are `a-z`, `A-Z`, `0-9`, spaces, ampersand (`&`), hyphen (`-`), full stop (`.`), and solidus (`/`). If not populated, the default value is "Payment via Bridge {unique_token}".
      type: string
      minLength: 6
      maxLength: 140
    TrackingNumber:
      description: The primary tracking identifier for this fiat transaction. Format varies by payment rail (e.g., UETR for SEPA/FPS, clave de rastreo for SPEI, end-to-end ID for PIX).
      type: string
      readOnly: true
    Uetr:
      description: 'Deprecated: use tracking_number instead. The unique end-to-end transaction reference, for tracing purposes.'
      type: string
      readOnly: true
      deprecated: true
    Imad:
      description: (Wire only) The IMAD of a wire transfer, if available
      type: string
      pattern: '[a-z0-9]*'
      minLength: 1
      maxLength: 40
    TransferRequest:
      required:
      - on_behalf_of
      - source
      - destination
      properties:
        id:
          $ref: '#/components/schemas/Id'
          readOnly: true
        client_reference_id:
          $ref: '#/components/schemas/client_reference_id'
        amount:
          description: 'Amount of the transfer, expressed as a decimal string.  Examples include "100.25", "0.1", "1.234567", "1.01" etc.


            It is denominated in the source currency if that is a fiat currency, or in the fiat currency to which the source currency is pegged.'
          type: string
        on_behalf_of:
          description: The id of the Bridge customer that you are moving funds on behalf of.
          type: string
        developer_fee:
          description: 'The fee, expressed as a decimal string, represents the amount you wish to reserve for your own account.  This fee is the final amount deducted from what your customer ultimately receives, rather than a percentage.


            It is denominated in the source currency if that is a fiat currency, or in the fiat currency to which the source currency is pegged.'
          type: string
        developer_fee_percent:
          description: 'The fee percent, expressed as a decimal string from `0.0` to `100.0`, represents the percentage of the transfer you wish to reserve for your own account.


            This field must be set instead of `developer_fee` when using [Flexible Amounts](https://apidocs.bridge.xyz/platform/orchestration/fees-and-mins/devfees#transfers-with-fixed-amounts).'
          type: string
        dry_run:
          description: Whether to validate the transfer route without creating a transfer. If set to true, a valid transfer will return a `TransferRouteResponse` indicating the transfer would have been valid. The same error response will be returned for an invalid transfer as in the non-dry-run case.
          type: boolean
        source:
          description: The source of the transfer, which could be an external bank account, a bridge account, or a crypto wallet address.
          allOf:
          - $ref: '#/components/schemas/TransferSource'
          - properties:
              from_address:
                description: The crypto wallet address that the customer will send funds from, in order to kick off this transfer.
                type: string
        destination:
          description: The destination of the transfer, which could be an external bank account, a bridge account, or a crypto wallet address.
          allOf:
          - $ref: '#/components/schemas/TransferDestination'
          - properties:
              amount:
                description: 'Specify the destination amount for the recipient to receive. Learn more at [Fixed Outputs Integration Guide](https://apidocs.bridge.xyz/get-started/guides/move-money/fixed_outputs_integration_guide).


                  Denominated in the destination currency.


                  Expressed as a decimal string. Examples include "100.25", "0.1", "1.234567", "1.01" etc.'
                type: string
              to_address:
                description: The crypto wallet address that the customer wishes to ultimately receive funds at, in order to complete this transfer
                type: string
              wire_message:
                type: string
        features:
          description: Features that should be enabled for this transfer. See [Transfer Features](https://apidocs.bridge.xyz/platform/orchestration/transfers/transfer-features) for more details.
          type: object
          properties:
            flexible_amount:
              type: boolean
              description: Allows for variable amounts to be accepted. When true, omit `amount` from the request body. Required to be `true` when the source payment rail is `swift`.
            static_template:
              type: boolean
            allow_any_from_address:
              type: boolean
        return_instructions:
          description: Optional instructions for where to send funds if the transfer is returned (e.g. refund). Only supported when the source payment rail is crypto. When the source is Stellar, `memo` is required.
          $ref: '#/components/schemas/ReturnInstructions'
        initiation:
          description: 'Payment initiation context. Required when the source Bridge Wallet''s GET response includes `initiation_required: true`. Omit for wallets that do not return that field. Not returned in transfer responses.'
          writeOnly: true
          allOf:
          - $ref: '#/components/schemas/TransferInitiation'
        travel_rule_data:
          description: Travel Rule data for this transfer. Use this when the same originator or beneficiary should apply to this transfer's movement. If the payload is only known after the transfer exists or is specific to a single movement, you can also submit the same object with `POST /travel_rule_data/{id}`.
          allOf:
          - $ref: '#/components/schemas/TravelRuleData'
    TransferState:
      type: string
      enum:
      - awaiting_funds
      - in_review
      - funds_received
      - payment_submitted
      - payment_processed
      - canceled
      - undeliverable
      - returned
      - refund_in_flight
      - refund_failed
      - refunded
    TransferInitiation:
      type: object
      description: 'Payment initiation context required for transfers sourced from wallets where `initiation_required: true`. Captures how the payment was initiated (channel and subchannel) and whether Strong Customer Authentication was applied or which SCA exemption was used. This object is accepted on create only and is not returned in transfer responses.'
      required:
      - channel
      - subchannel
      - attestations
      properties:
        channel:
          description: How the payment was initiated. Use `p2p_mobile_payment` for peer-to-peer transfers initiated on a mobile device; `other_mobile_payment` for non-P2P mobile-initiated payments (e.g. a merchant payment via a mobile app); `other` for payments not relying on a mobile device.
          type: string
          e

# --- truncated at 32 KB (101 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bridge/refs/heads/main/openapi/bridge-transfers-api-openapi.yml