---
title: "Fund transfer from Infinite Wallet balance"
method: PATCH
path: "/v1/transfers/{id}/fund-from-balance"
tags: ["Transfers"]
---

# Fund transfer from Infinite Wallet balance

`PATCH /v1/transfers/{id}/fund-from-balance`

Fund a pending transfer from an Infinite Wallet balance. The funding customer does NOT need to be the transfer source customer, as long as they belong to the same organization. This allows for scenarios where one customer funds a transfer on behalf of another (e.g., treasury account funding on behalf of sender). Only crypto transfers awaiting deposit can be funded.

## Path parameters

- `id` string, required

## Headers

- `X-API-Key` string

## Request body

- FundTransferFromBalanceDto
  - `fundingCustomerId` string, required — The customer ID whose Infinite Wallet balance will fund this transfer. Does not need to be the transfer source customer, but must be in the same organization.
  - `note` string — Optional note explaining why this customer is funding the transfer

## Response `200`

Transfer funded successfully from Infinite Wallet balance.

- TransferResponseDto
  - `id` string, required — Transfer ID (tfr_xxx)
  - `organizationId` string, required — Organization ID
  - `clientReferenceId` string, nullable — Client's internal reference ID
  - `sourceCustomerId` string, required — Source customer ID
  - `counterpartyId` string, nullable — Counterparty ID for third-party recipient transfers
  - `flow` 'CRYPTO_TO_CRYPTO' | 'CRYPTO_TO_FIAT' | 'FIAT_TO_CRYPTO' | 'FIAT_TO_FIAT' | 'FIAT_TO_CRYPTO_TO_FIAT' | 'FX' | 'INTERNAL' | 'FEE_CRYPTO' | 'REFUND_CRYPTO' | 'REFUND_FIAT', required — Transfer flow type describing the asset conversion
  - `status` 'DRAFT' | 'PENDING_AUTHORIZATION' | 'IN_REVIEW' | 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED' | 'CANCELLED' | 'REVERSED', required — Transfer status
  - `source` TransferSourceResponseDto, required
    - `currency` string, required — Source currency code
    - `fundingCurrency` string, nullable — Asset the transfer was funded with when it differs from the settlement currency (e.g. a stablecoin deposit settled as fiat at face value)
    - `paymentRail` string, required — Source payment rail
    - `direction` 'CREDIT' | 'DEBIT', nullable — ACH direction when the source rail is ACH
    - `accountId` string, nullable — Account ID if applicable
    - `accountType` 'VIRTUAL_BANK' | 'VIRTUAL_WALLET' | 'INFINITE_BANK' | 'INFINITE_WALLET' | 'EXTERNAL_BANK' | 'EXTERNAL_WALLET' | 'EXTERNAL_PROXY' | 'PROVIDER_BALANCE', nullable — Account type for quick filtering
    - `externalAccountId` string, nullable — External account ID if applicable
    - `fromAddress` string, nullable — Source wallet address (for crypto sources)
    - `refundAccountId` string, nullable — Customer wallet account ID (inw_xxx or ewa_xxx) that receives refunds for failed crypto transfers or when fees exceed deposit
    - `accountName` string, nullable — Account holder name
  - `destination` TransferDestinationResponseDto, required
    - `currency` string, required — Destination currency code
    - `paymentRail` string, required — Destination payment rail
    - `accountId` string, nullable — Account ID if applicable
    - `accountType` 'VIRTUAL_BANK' | 'VIRTUAL_WALLET' | 'INFINITE_BANK' | 'INFINITE_WALLET' | 'EXTERNAL_BANK' | 'EXTERNAL_WALLET' | 'EXTERNAL_PROXY' | 'PROVIDER_BALANCE', nullable — Account type for quick filtering
    - `externalAccountId` string, nullable — External account ID if applicable
    - `toAddress` string, nullable — Destination wallet address (for crypto destinations)
    - `accountName` string, nullable — Account holder name
    - `wireMessage` string, nullable — Wire message if applicable
    - `achReference` string, nullable — ACH reference if applicable
    - `swiftReference` string, nullable — SWIFT reference if applicable
    - `rtpReference` string, nullable — RTP reference if applicable
    - `payoutReference` string, nullable — Payment reference that appears on the recipient bank statement, for fiat payouts. Populated once the payout has been initiated.
  - `sourceAmount` MoneyOutputDto, required
    - `currency` string, required — Currency code
    - `exponent` number, required — Number of decimal places for this currency (e.g., 2 for USD, 6 for USDC)
    - `value` string, required — Amount in smallest unit as a string
    - `displayValue` string, required — Human-readable decimal value
  - `destinationAmount` MoneyOutputDto
    - `currency` string, required — Currency code
    - `exponent` number, required — Number of decimal places for this currency (e.g., 2 for USD, 6 for USDC)
    - `value` string, required — Amount in smallest unit as a string
    - `displayValue` string, required — Human-readable decimal value
  - `refund` TransferRefundResponseDto
    - `status` 'INITIATED' | 'COMPLETED', required — Current refund status
    - `reason` string, nullable — Reason the transfer was refunded
    - `amount` MoneyOutputDto
      - `currency` string, required — Currency code
      - `exponent` number, required — Number of decimal places for this currency (e.g., 2 for USD, 6 for USDC)
      - `value` string, required — Amount in smallest unit as a string
      - `displayValue` string, required — Human-readable decimal value
    - `address` string, nullable — Destination address used for the refund
    - `txHash` string, nullable — Refund transaction hash
    - `initiatedAt` string, date-time, nullable — When the refund was initiated
    - `completedAt` string, date-time, nullable — When the refund completed
  - `quoteId` string, nullable — Quote ID if transfer was created from a quote
  - `exchangeRate` string, nullable — Exchange rate applied to the currency conversion, inclusive of all fees. Expressed on minor-unit amounts: destinationAmount = sourceAmount * exchangeRate. Populated for FX trades.
  - `developerFeeFixed` string, nullable — Fixed developer fee in minor units of source currency. Prefer the `developerFee` object, which also carries the collected amount and payout hash.
  - `developerFeePercent` number, nullable — Variable developer fee as decimal percentage (e.g., 0.005 = 0.5%). Prefer the `developerFee` object, which also carries the collected amount and payout hash.
  - `developerFee` TransferDeveloperFeeDto
    - `amount` MoneyOutputDto
      - `currency` string, required — Currency code
      - `exponent` number, required — Number of decimal places for this currency (e.g., 2 for USD, 6 for USDC)
      - `value` string, required — Amount in smallest unit as a string
      - `displayValue` string, required — Human-readable decimal value
    - `fixed` string, nullable — Configured fixed fee component, in minor units of the source currency.
    - `percent` number, nullable — Configured variable fee component as a decimal fraction (e.g., 0.005 = 0.5%).
    - `txHash` string, nullable — Transaction hash of the on-chain movement that paid the fee out to your configured fee wallet. Shared with the payout hash when the fee was split atomically in the same transaction. Null when the fee settled without a dedicated on-chain hop.
  - `depositInstructions` union — Deposit instructions if customer needs to send funds (onramps). Either crypto or fiat instructions depending on the transfer flow.
    - CryptoDepositInstructionsDto
      - `type` string, required — Instruction type
      - `paymentRail` string, required — Payment rail (blockchain)
      - `toAddress` string, required — Destination wallet address
      - `amount` MoneyOutputDto, required
        - `currency` string, required — Currency code
        - `exponent` number, required — Number of decimal places for this currency (e.g., 2 for USD, 6 for USDC)
        - `value` string, required — Amount in smallest unit as a string
        - `displayValue` string, required — Human-readable decimal value
      - `blockchainMemo` string, nullable — Blockchain memo (for chains that require it)
      - `accountId` string, nullable — Account ID for the deposit destination
    - FiatDepositInstructionsDto
      - `type` string, required — Instruction type
      - `paymentRail` string, required — Payment rail
      - `direction` 'CREDIT' | 'DEBIT', nullable — ACH direction when the funding instructions are ACH-specific
      - `amount` MoneyOutputDto, required
        - `currency` string, required — Currency code
        - `exponent` number, required — Number of decimal places for this currency (e.g., 2 for USD, 6 for USDC)
        - `value` string, required — Amount in smallest unit as a string
        - `displayValue` string, required — Human-readable decimal value
      - `bankName` string, nullable — Bank name
      - `bankAddress` BankAddressDto
        - `addressLine1` string — Address line 1 (optional for bank addresses)
        - `addressLine2` string — Address line 2 (apartment, suite, etc.)
        - `city` string — City
        - `state` string — State / Province
        - `postalCode` string — Postal code / ZIP code (optional for bank addresses)
        - `country` string — Country code (ISO 3166-2)
      - `accountNumber` string, nullable — Account number
      - `routingNumber` string, nullable — Routing number (US)
      - `beneficiaryName` string, nullable — Beneficiary name
      - `beneficiaryAddress` BankAddressDto
        - `addressLine1` string — Address line 1 (optional for bank addresses)
        - `addressLine2` string — Address line 2 (apartment, suite, etc.)
        - `city` string — City
        - `state` string — State / Province
        - `postalCode` string — Postal code / ZIP code (optional for bank addresses)
        - `country` string — Country code (ISO 3166-2)
      - `iban` string, nullable — IBAN (international)
      - `swiftBic` string, nullable — SWIFT/BIC code
      - `depositMessage` string, nullable — Deposit message/reference to include in the transfer
      - `clabe` string, nullable — CLABE (Mexico)
      - `accountId` string, nullable — Account ID for the deposit destination
  - `createdAt` string, date-time, required — Transfer creation date
  - `updatedAt` string, date-time, required — Transfer last update date
  - `legs` TransferStepDto[], required — Transfer route legs (steps in the transfer)
    - `id` string, required — Step ID
    - `sequence` number, required — Sequence in the route (0-indexed)
    - `type` 'DEPOSIT_CRYPTO' | 'DEPOSIT_FIAT' | 'ONRAMP' | 'CONVERT' | 'OFFRAMP' | 'CRYPTO_TRANSFER' | 'BRIDGE' | 'OUTBOUND_TOP_UP' | 'INBOUND_TOP_UP' | 'REFUND_CRYPTO' | 'REFUND_FIAT' | 'LIQUIDITY_ADVANCE', required — Step type
    - `inputCurrency` string, required — Input currency
    - `outputCurrency` string, required — Output currency
    - `inputRail` string, required — Input rail
    - `outputRail` string, required — Output rail
    - `status` 'PENDING' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'SKIPPED', required — Step status
    - `startedAt` string, date-time, nullable — When the step started processing
    - `completedAt` string, date-time, nullable — When the step completed
    - `uetr` string, nullable — SWIFT UETR (Universal End-to-End Transaction Reference)
    - `imad` string, nullable — Wire IMAD (Input Message Accountability Data)
    - `omad` string, nullable — Wire OMAD (Output Message Accountability Data)
    - `achTraceNumber` string, nullable — ACH trace number from the payment network
    - `txHash` string, nullable — Blockchain transaction hash. Populated for on-chain customer wallet movements: crypto deposits, crypto sends to the destination wallet, and crypto refunds. Null for internal settlement steps.
    - `developerFee` MoneyOutputDto
      - `currency` string, required — Currency code
      - `exponent` number, required — Number of decimal places for this currency (e.g., 2 for USD, 6 for USDC)
      - `value` string, required — Amount in smallest unit as a string
      - `displayValue` string, required — Human-readable decimal value
    - `feeTxHash` string, nullable — Transaction hash of the on-chain movement that paid this step's developer fee to your configured fee wallet. Matches txHash when the fee was split atomically in the same transaction; null when the fee settled without a dedicated on-chain hop.
  - `currentLegIndex` number, nullable — Index of the current active leg in the legs array (0-indexed). Null if all legs are done.
  - `fundingNeeded` boolean, required — Whether the transfer is waiting for the customer to send funds (deposit)
  - `isThirdParty` boolean — Whether this is a third-party payment (destination account belongs to someone other than the customer)
  - `remarks` string, nullable — Free-form remarks or notes about the transfer
  - `internalRemarks` string, nullable — Internal remarks visible only within your organization. Never forwarded to payment rails or counterparties.
  - `uetr` string, nullable — SWIFT UETR (Universal End-to-End Transaction Reference)
  - `imad` string, nullable — Wire IMAD (Input Message Accountability Data)
  - `omad` string, nullable — Wire OMAD (Output Message Accountability Data)
  - `achTraceNumber` string, nullable — ACH trace number from the payment network
  - `txHash` string, nullable — Blockchain transaction hash
  - `systemRemark` string, nullable — System-generated status note with important transfer context for the customer
  - `metadata` object — Additional non-contractual transfer metadata for UI display
  - `estimatedSettlementAt` string, date-time, nullable — Estimated time the recipient will receive funds. Best-effort projection — fiat rails account for bank cutoff times, weekends, and US Federal Reserve holidays; crypto conversions project from recently observed processing times for the route. Not a guarantee.
  - `nextCutoffAt` string, date-time, nullable — Next time the customer can submit and still settle same business day. Past this time, transfers settle next business day.
  - `cutoffTimezone` string, nullable — IANA timezone for the cutoff time, e.g. "America/New_York".
  - `counterparty` CounterpartyResponseDto
    - `id` string, required — Counterparty ID
    - `name` string, required — Counterparty legal name
    - `beneficiaryType` 'INDIVIDUAL' | 'BUSINESS', required — Entity type (individual or business)
    - `address` AddressDto
      - `addressLine1` string, required — Address line 1
      - `addressLine2` string — Address line 2 (apartment, suite, etc.)
      - `city` string, required — City
      - `state` string — State / Province
      - `postalCode` string, required — Postal code / ZIP code. May be empty for countries without a postal-code system, including the United Arab Emirates.
      - `country` string, required — Country code (ISO 3166-2)
      - `transliterated` TransliteratedAddressDto
        - `addressLine1` string — Transliterated address line 1 (Latin characters)
        - `addressLine2` string — Transliterated address line 2 (Latin characters)
        - `city` string — Transliterated city (Latin characters)
        - `state` string — Transliterated state/province (Latin characters)
    - `createdAt` string, date-time, required — Creation timestamp
    - `updatedAt` string, date-time, required — Last update timestamp

## Other responses

- `400` — Transfer cannot be funded (not pending, not awaiting deposit, not crypto, or insufficient balance)
- `401` — Unauthorized - Invalid or missing authentication credentials

---

[API](https://skmtc.dev/infinite/apis/infinite-api.md) · [All operations](https://skmtc.dev/infinite/apis/infinite-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/infinite/infinite-api/revisions/5426f2706725/schema)
