---
title: "Update a transfer"
method: PUT
path: "/transfers/{transferID}"
tags: ["Transfers"]
---

# Update a transfer

`PUT /transfers/{transferID}`

Update a transfer that was previously created. Must be in the awaiting_funds state.

## Request body

- TransferUpdateRequest
  - `amount` string — 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.
  - `developer_fee` string — 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.
  - `developer_fee_percent` string — 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).
  - `return_instructions` ReturnInstructions — Optional instructions for where to send funds if the transfer is returned (e.g. refund). Only supported when the source payment rail is crypto. Memo is required when the source payment rail is Stellar.
    - `address` string, required — The crypto wallet address to send returned funds to. Must be valid for the source payment rail's chain.
    - `memo` string — Memo to include with the return transaction. Required when the source payment rail is Stellar; optional for other memo-capable chains.

## Response `201`

Transfer object created

- TransferResponse
  - `id` string, required — A UUID that uniquely identifies a resource
  - `client_reference_id` string — A client-provided reference ID that uniquely identifies a resource in the client's system
  - `amount` string, required — 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.
  - `currency` 'usd' | 'eur' | 'mxn' | 'brl' | 'cop' | 'gbp', required
  - `on_behalf_of` string, required — The id of the Bridge customer that you are moving funds on behalf of.
  - `developer_fee` string, required — 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.
  - `developer_fee_percent` string — 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).
  - `source` object, required — The source of the transfer, which could be an external bank account, a bridge account, or a crypto wallet address
    - `currency` 'brl' | 'cop' | 'eur' | 'eurc' | 'gbp' | 'mxn' | 'pyusd' | 'usd' | 'usdb' | 'usdc' | 'usdt', required
    - `payment_rail` 'ach' | 'wire' | 'ach_push' | 'ach_same_day' | 'fednow' | 'arbitrum' | 'avalanche_c_chain' | 'base' | 'bre_b' | 'co_bank_transfer' | 'bridge_wallet' | 'celo' | 'ethereum' | 'faster_payments' | 'optimism' | 'pix' | 'polygon' | 'sepa' | 'solana' | 'spei' | 'stellar' | 'swift' | 'tempo' | 'tron', required
    - `payment_scheme` 'sepa_credit' | 'sepa_instant'
    - `omad` string — (Wire only) The OMAD of a wire transfer, if available
    - `imad` string — (Wire only) The IMAD of a wire transfer, if available
    - `trace_number` string — The trace number of an ACH transfer
    - `bank_beneficiary_name` string — (Wire only) The name of the beneficiary of the bank account that the customer sent the deposit to
    - `bank_beneficiary_address` string — (Wire only) The address of the beneficiary of the bank account that the customer sent the deposit to
    - `bank_routing_number` string — (Wire only) The routing number of the bank that the customer sent the deposit to
    - `bank_name` string — (Wire and SPEI only) The name of the bank that the customer sent the deposit from.
    - `originator_name` string — (Wire only) The originator name of this wire
    - `originator_address` string — (Wire only) The originator address of this wire
    - `wire_message` string — (Wire only) The memo for this wire
    - `bridge_wallet_id` string — A UUID that uniquely identifies a resource
    - `sender_name` string — (ACH and FedNow only) The name of the business or individual who initiated the transaction
    - `sender_bank_routing_number` string — (ACH and FedNow only) The routing number of the entity that initiated this transaction
    - `end_to_end_id` string — The end-to-end ID of the FedNow transaction, assigned by the sending bank, and is not guaranteed to be unique across payments.
    - `description` string — (ACH only) The description of the deposit that the customer sent
    - `tracking_number` string — 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).
    - `clabe` string — The 18-digit CLABE (Clave Bancaria Estandarizada) of the sender who initiated this SPEI transaction
    - `bank_code` string — (SPEI only) The bank code of the sender's bank that initiated this SPEI transaction.
    - `transaction_id` string — Deprecated: use tracking_number instead. The unique transaction identifier for this payment.
    - `co_bank_transfer` object — (co_bank_transfer only) Details for Colombian bank transfers.
      - `redirect_url` string, required — URL to redirect the customer to after completing the bank transfer
      - `expiry_date` string — Optional ISO 8601 expiry timestamp for the payment session. Defaults to 24 hours from creation.
      - `sender_data` object — Sender information for the CO bank transfer. If omitted, the payer must manually provide this information via the payment link. If provided, fields will be pre-populated for the payer. Sensitive fields are masked in responses (e.g. document_number shows `***3456`).
        - `full_name` string, required — Full name of the sender
        - `document_type` 'cc' | 'ce' | 'nit' | 'rut' | 'pa' | 'ppt' | 'ti' | 'rc' | 'te' | 'die' | 'nd', required — Colombian document type identifier. `cc` = Cédula de Ciudadanía, `ce` = Cédula de Extranjería, `nit` = NIT (tax ID), `rut` = RUT (worker registration), `pa` = Passport, `ppt` = Permiso de Protección Temporal.
        - `document_number` string, required — Document number of the sender. Masked in responses (e.g. ***3456).
        - `email` string, required — Email address of the sender
        - `phone_number` string, required — Phone number of the sender in E.164 format (e.g. +573001234567)
    - `payment_received_rail` 'ach' | 'wire' | 'ach_push' | 'ach_same_day' | 'fednow' | 'arbitrum' | 'avalanche_c_chain' | 'base' | 'bre_b' | 'co_bank_transfer' | 'bridge_wallet' | 'celo' | 'ethereum' | 'faster_payments' | 'optimism' | 'pix' | 'polygon' | 'sepa' | 'solana' | 'spei' | 'stellar' | 'swift' | 'tempo' | 'tron'
    - `from_address` string — The crypto wallet address that the customer will send funds from, in order to kick off this transfer
  - `destination` object, required — The destination of the transfer, which could be an external bank account, a bridge account, or a crypto wallet address
    - `currency` 'brl' | 'cop' | 'eur' | 'eurc' | 'gbp' | 'mxn' | 'pyusd' | 'usd' | 'usdb' | 'usdc' | 'usdt', required
    - `payment_rail` 'ach' | 'wire' | 'ach_push' | 'ach_same_day' | 'arbitrum' | 'avalanche_c_chain' | 'base' | 'bre_b' | 'co_bank_transfer' | 'celo' | 'ethereum' | 'fiat_deposit_return' | 'optimism' | 'polygon' | 'sepa' | 'solana' | 'spei' | 'stellar' | 'swift' | 'tempo' | 'tron', required
    - `external_account_id` string — A UUID that uniquely identifies a resource
    - `bridge_wallet_id` string — A UUID that uniquely identifies a resource
    - `omad` string — (Wire only) The OMAD of a wire transfer, if available
    - `imad` string — (Wire only) The IMAD of a wire transfer, if available
    - `trace_number` string — The trace number of an ACH transfer
    - `end_to_end_id` string — The end-to-end ID of the FedNow transaction, assigned by the sending bank, and is not guaranteed to be unique across payments.
    - `wire_message` string — A message to be sent with a wire transfer, only allowed when the payment rail is a wire. This message will be validated against 4 lines, each with a max length of 35 char according to the Fedwire standard.
    - `sepa_reference` string — 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}".
    - `swift_reference` string — 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
    - `spei_reference` string — 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
    - `reference` union — A payment reference message for newer payment rails (e.g. Pix and Faster Payments).
      - string
      - string
    - `swift_charges` 'our' | 'sha' | 'ben' — **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.
    - `charge_bearer` 'our' | 'sha' | 'ben' — 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.
    - `ach_reference` string — A reference message to be sent with an ACH transaction. It can be at most 10 characters, A-Z, a-z, 0-9, and spaces.
    - `uetr` string — Deprecated: use tracking_number instead. The unique end-to-end transaction reference, for tracing purposes.
    - `blockchain_memo` string — A message to be sent with a crypto transaction, only allowed when the payment rail is Stellar.
    - `deposit_id` string — A UUID that uniquely identifies a deposit
    - `tracking_number` string — 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).
    - `transaction_id` string — Deprecated: use tracking_number instead. The unique transaction identifier for this payment.
    - `sending_institution_name` string — The name of the institution sending the funds
    - `amount` string — The destination amount for the recipient to receive. Present when the transfer was created with a destination amount (Fixed Outputs). Denominated in the destination currency. Expressed as a decimal string. Examples include "100.25", "0.1", "1.234567", "1.01" etc.
    - `to_address` string — The crypto wallet address that the customer wishes to ultimately receive funds at, in order to complete this transfer
  - `state` 'awaiting_funds' | 'in_review' | 'funds_received' | 'payment_submitted' | 'payment_processed' | 'canceled' | 'undeliverable' | 'returned' | 'refund_in_flight' | 'refund_failed' | 'refunded', required
  - `source_deposit_instructions` object — Some transfers require a deposit to be made by the customer before Bridge can start the process. Instructions for how to kick off the transfer will be included here. The deposit must match these instructions exactly, or the transfer will fail.
    - `payment_rail` 'ach' | 'wire' | 'ach_push' | 'ach_same_day' | 'arbitrum' | 'avalanche_c_chain' | 'base' | 'bre_b' | 'co_bank_transfer' | 'celo' | 'ethereum' | 'optimism' | 'pix' | 'polygon' | 'solana' | 'spei' | 'stellar' | 'tempo', required
    - `amount` string, required — Amount of the deposit, expressed as a decimal string. It's denominated in the source currency if that is a fiat currency, or in the fiat currency to which the source currency is pegged. Examples include "100.25", "0.1", "1.234567", "1.01" etc.
    - `currency` 'usdb' | 'usdc' | 'usdt' | 'usd' | 'pyusd', required
    - `from_address` string — The crypto wallet address that the customer will send funds from, in order to kick off this transfer
    - `to_address` string — The crypto wallet address the customer will send funds to in order to initiate the payment processing
    - `memoless_to_address` string — An alternative crypto wallet address that encodes the memo, allowing the customer to send funds without needing to include a separate memo. Currently only available for Stellar deposits.
    - `deposit_message` string — The message that the customer MUST include in their `wire memo/message`, `ach push description`, or `sepa reference`.
    - `bank_name` string — The name of the bank that the customer should send the deposit to
    - `bank_address` string — The address of the bank that the customer should send the deposit to. For SEPA, the country in this address should be used for sending the deposit
    - `bank_routing_number` string — The routing number of the bank that the customer should send the deposit to
    - `bank_account_number` string — The account number of the bank that the customer should send the deposit to
    - `bank_beneficiary_name` string — The name of the beneficiary of the bank account that the customer should send the deposit to
    - `bank_beneficiary_address` string — The address of the beneficiary of the bank account that the customer should send the deposit to
    - `intermediary_bank_name` string — For USD SWIFT, the name of the intermediary correspondent bank that the originating bank should route the payment through.
    - `intermediary_bank_bic` string — For USD SWIFT, the SWIFT/BIC of the intermediary correspondent bank
    - `intermediary_bank_routing_number` string — For USD SWIFT, the ABA routing number of the intermediary correspondent bank
    - `iban` string — For SEPA, the International Bank Account Number (IBAN) that the customer should use to send the deposit
    - `bic` string — For SEPA, the Bank Identifier Code (BIC) that the customer should use to send the deposit
    - `clabe` string — For SPEI, the CLABE (account number) that the customer should use to send the deposit
    - `account_holder_name` string — For SEPA, the name of the bank account holder that the customer should use to send the deposit
    - `bre_b_key` string — For Bre-B (Colombia), the Bre-B key that the customer should use to send the COP deposit
    - `start_url` string — For co_bank_transfer (Colombia), the URL the customer should be redirected to in order to complete the bank transfer payment
    - `redirect_url` string — For co_bank_transfer (Colombia), the merchant redirect URL provided when the transfer was created
    - `expires_at` string — For Pix (Brazil) and co_bank_transfer (Colombia), the ISO 8601 timestamp when the payment session expires
    - `blockchain_memo` string — If present, the message that the customer MUST include in their on chain transfer. Only used for memo-based blockchains such as Stellar and Tron
  - `receipt` Receipt, required
    - `initial_amount` string, required — The initial amount of the transfer, represented as a decimal string. Examples include "100.25", "0.1", "1.234567", "1.01" etc. It's denominated in the transfer's fiat currency (see the top-level `currency` field for more info)
    - `developer_fee` string, required — 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 transfer's fiat currency (see the top-level `currency` field for more info).
    - `exchange_fee` string, required — The fee, expressed as a decimal string, represents the amount Bridge charges for facilitating the transfer. This is the final amount to take out of what is ultimately received by your customer, not a percentage. It's denominated in the transfer's fiat currency (see top-level `currency` field for more info).
    - `subtotal_amount` string, required — The initial amount of the transfer less fixed fees (including the developer_fee and exchange_fee). Examples include "100.25", "0.1", "1.234567", "1.01" etc. It's denominated in the transfer's fiat currency (see top-level `currency` field for more info).
    - `remaining_prefunded_balance` string — For Prefunded Accounts, this value will represent the remaining account balance after the transfer.
    - `gas_fee` string — The fee, expressed as a decimal string. It's deducted from the withdrawn amount to pay for gas. Only nonzero to crypto withdrawals that cost gas (e.g. USDT), and only known when the transaction is confirmed on-chain. Will be missing if not yet known. It's denominated in the fiat currency to which the destination currency is pegged.
    - `final_amount` string — The final amount of the transfer, expressed as a decimal string, equal to the subtotal_amount minus any gas fees. If the gas fee is not known, this field will be missing. Examples include "100.25", "0.1", "1.234567", "1.01" etc. It's denominated in the destination currency if that is a fiat currency or the fiat currency to which the destination currency is pegged.
    - `source_tx_hash` unknown
    - `destination_tx_hash` unknown
    - `exchange_rate` unknown
    - `url` string — The URL of a user-facing copy of the receipt.
    - `bank_details` object — Bank-lookup details for fiat offramp receipts, to help the recipient's bank locate the payment. Present for enabled developers once the offramp's bank leg exists; individual fields may be null until they become available (e.g. the ACH trace ID before submission to the Fed).
      - `sending_routing_number` string — Routing number of the bank Bridge sent the payment from.
      - `ach_description` string — Statement descriptor on the outgoing ACH credit.
      - `ach_trace_id` string — ACH trace number, populated after submission to the Fed.
      - `recipient_name` string — Name on the receiving external account.
  - `return_details` TransferReturnDetails
    - `reason` string — The reason for the return, as given by the returning financial institution.
    - `refund_reference_id` string — A unique identifier (such as transaction hash) for the refund transaction.
    - `risk_rejection_reason` string — If the return is due to a risk rejection, this field will be populated with the reason for the risk rejection.
  - `return_instructions` ReturnInstructions — Optional instructions for where to send funds if the transfer is returned (e.g. refund). Only supported when the source payment rail is crypto. Memo is required when the source payment rail is Stellar.
    - `address` string, required — The crypto wallet address to send returned funds to. Must be valid for the source payment rail's chain.
    - `memo` string — Memo to include with the return transaction. Required when the source payment rail is Stellar; optional for other memo-capable chains.
  - `exchange_details` ExchangeDetails — Exchange information for a currency conversion.
    - `fixed_rate` string — The target exchange rate.
    - `estimated_market_rate` string — The estimated achievable rate based on current market conditions.
    - `traded_market_rate` string — The actual effective exchange rate achieved.
    - `trade_at_market` boolean — Whether market-rate execution has been applied to this trade.
    - `updated_at` string, date-time — Timestamp of the last exchange details update.
  - `created_at` string, date-time, required — Time of creation of the transfer
  - `updated_at` string, date-time, required — Time of update of the transfer
  - `template_id` string — A UUID that uniquely identifies a resource

## Other responses

- `400` — Request containing missing or invalid parameters.
- `401` — Missing or invalid API key
- `403` — The transfer has failed due to an AML violation (anti-money laundering). Reach out to Bridge for more information
- `500` — Unexpected error. User may try and send the request again.

---

[API](https://skmtc.net/bridge/apis/bridge-api.md) · [All operations](https://skmtc.net/bridge/apis/bridge-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bridge/bridge-api/revisions/570998bde3b5/schema)
