---
title: "Confirm an unlocked transfer intent"
method: POST
path: "/v1/transfers/quotes/confirm"
tags: ["Transfers"]
---

# Confirm an unlocked transfer intent

`POST /v1/transfers/quotes/confirm`

Creates a transfer from a previewed corridor that cannot lock a firm quote.

## Headers

- `X-API-Key` string
- `Idempotency-Key` string, required

## Request body

- CreateTransferIntentQuoteDto
  - `clientReferenceId` string — Client's internal reference ID (e.g., order ID, transaction ID)
  - `onBehalfOf` string, required — Primary customer ID (on whose behalf the transfer is made)
  - `counterpartyId` string — Counterparty ID for third-party recipient transfers. Omit for first-party transfers.
  - `source` TransferSourceDto, required
    - `accountId` string — Source account ID. For Infinite Wallets: if TREASURY wallet, funds will be automatically transferred on submit. If TRANSACTION wallet, deposit instructions will be provided.
    - `currency` 'USD' | 'EUR' | 'MXN' | 'USAT' | 'USDC' | 'USDT' | 'DAI' | 'ETH' | 'BTC' | 'EURC' | 'USDB' | 'PYUSD' | 'USDP' | 'USDS' | 'CASH', required — Source currency code
    - `paymentRail` 'ACH' | 'ACH_SAME_DAY' | 'WIRE' | 'FED_NOW' | 'RTP' | 'EREBOR' | 'EREBOR_RAIL' | 'BALANCE' | 'SWIFT' | 'SEPA' | 'SEPA_INSTANT' | 'TIPS' | 'FASTER_PAYMENTS' | 'BACS' | 'CHAPS' | 'ELIXIR' | 'NICS' | 'EFT' | 'INTERAC' | 'NPP' | 'BECS' | 'UPI' | 'IMPS' | 'IMPS_WITH_FIRC' | 'NEFT' | 'RTGS' | 'BI_FAST' | 'ARTAJASA' | 'PIX' | 'TED' | 'TEF' | 'SPEI' | 'COELSA' | 'SINPE' | 'CIPS' | 'CFXPS' | 'CHATS' | 'ZENGIN' | 'KFTC' | 'FAST_SG' | 'MEPS' | 'DUITNOW' | 'PROMPTPAY' | 'INSTAPAY' | 'PESONET' | 'NAPAS' | 'BEFTN' | 'SLIPS' | 'ZAHAV' | 'GHIPSS' | 'NIBSS' | 'PESALINK' | 'RTC_ZA' | 'TZS_RTGS' | 'EGP_ACH' | 'JOD_ACH' | 'NPSS' | 'MADA' | 'QPS' | 'DOP_ACH' | 'GTQ_ACH' | 'HNL_ACH' | 'PEN_ACH' | 'JMD_ACH' | 'USD_ACH_SV' | 'USD_ACH_EC' | 'CLP_TEF' | 'PSE' | 'COP_ACH' | 'BOB_RTGS' | 'PYG_ACH' | 'CERTIS' | 'DKK_TIPS' | 'SENT' | 'NKS' | 'BANKGIROT' | 'HKD_FPS' | 'IBFT' | 'TRY_FAST' | 'ETHEREUM' | 'BASE' | 'POLYGON' | 'SOLANA' | 'TRON' | 'BITCOIN' | 'ARBITRUM', required — Payment rail for the source funds. For crypto, specify the blockchain (ETHEREUM, BASE, ARBITRUM, POLYGON, SOLANA, TRON). For fiat, specify the banking network (ACH, WIRE, SEPA, SWIFT). Provider-backed bank balances may also use EREBOR, and on-us Erebor bank transfers use EREBOR_RAIL.
    - `direction` 'CREDIT' | 'DEBIT' — ACH direction. Optional when source.paymentRail is ACH and source.accountId is provided. If omitted for an account-backed ACH source, the API defaults to CREDIT. DEBIT is currently provider-disabled for some virtual bank account sources.
    - `refundAccountId` string — Customer wallet account ID (inw_xxx or ewa_xxx) that receives refunds for failed crypto transfers or when fees exceed deposit. Must belong to the customer and include a wallet address; validated at request time.
  - `destination` TransferDestinationDto, required
    - `correspondentBankName` string — Correspondent/intermediary bank name
    - `correspondentBankSwiftCode` string — Correspondent/intermediary bank SWIFT/BIC code (8 or 11 characters)
    - `correspondentAccountNumber` string — Correspondent/intermediary account number
    - `accountId` string, required — Account ID for the destination of funds
    - `currency` 'USD' | 'EUR' | 'GBP' | 'CAD' | 'JPY' | 'AUD' | 'MXN' | 'BRL' | 'AED' | 'BHD' | 'KWD' | 'QAR' | 'ARS' | 'CHF' | 'CNY' | 'CNH' | 'COP' | 'CZK' | 'DKK' | 'EGP' | 'HKD' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'KRW' | 'MYR' | 'NOK' | 'NZD' | 'PHP' | 'PKR' | 'PLN' | 'RON' | 'RUB' | 'SAR' | 'SEK' | 'SGD' | 'THB' | 'TRY' | 'TWD' | 'VND' | 'ZAR' | 'USAT' | 'USDC' | 'USDT' | 'DAI' | 'EURC' | 'PYUSD' | 'USDB' | 'USDP' | 'USDS' | 'BTC' | 'ETH', required — Destination currency code
    - `paymentRail` 'ACH' | 'ACH_SAME_DAY' | 'WIRE' | 'FED_NOW' | 'RTP' | 'EREBOR' | 'EREBOR_RAIL' | 'BALANCE' | 'SWIFT' | 'SEPA' | 'SEPA_INSTANT' | 'TIPS' | 'FASTER_PAYMENTS' | 'BACS' | 'CHAPS' | 'ELIXIR' | 'NICS' | 'EFT' | 'INTERAC' | 'NPP' | 'BECS' | 'UPI' | 'IMPS' | 'IMPS_WITH_FIRC' | 'NEFT' | 'RTGS' | 'BI_FAST' | 'ARTAJASA' | 'PIX' | 'TED' | 'TEF' | 'SPEI' | 'COELSA' | 'SINPE' | 'CIPS' | 'CFXPS' | 'CHATS' | 'ZENGIN' | 'KFTC' | 'FAST_SG' | 'MEPS' | 'DUITNOW' | 'PROMPTPAY' | 'INSTAPAY' | 'PESONET' | 'NAPAS' | 'BEFTN' | 'SLIPS' | 'ZAHAV' | 'GHIPSS' | 'NIBSS' | 'PESALINK' | 'RTC_ZA' | 'TZS_RTGS' | 'EGP_ACH' | 'JOD_ACH' | 'NPSS' | 'MADA' | 'QPS' | 'DOP_ACH' | 'GTQ_ACH' | 'HNL_ACH' | 'PEN_ACH' | 'JMD_ACH' | 'USD_ACH_SV' | 'USD_ACH_EC' | 'CLP_TEF' | 'PSE' | 'COP_ACH' | 'BOB_RTGS' | 'PYG_ACH' | 'CERTIS' | 'DKK_TIPS' | 'SENT' | 'NKS' | 'BANKGIROT' | 'HKD_FPS' | 'IBFT' | 'TRY_FAST' | 'ETHEREUM' | 'BASE' | 'POLYGON' | 'SOLANA' | 'TRON' | 'BITCOIN' | 'ARBITRUM', required — Payment rail for destination (banking network or blockchain)
    - `wireMessage` string — Wire transfer message (max 140 chars)
    - `sepaReference` string — SEPA reference (6-140 chars, limited charset: a-z A-Z 0-9 & - . / and space)
    - `achReference` string — ACH reference (max 10 chars, alphanumeric and spaces)
    - `blockchainMemo` string — Blockchain memo (for Stellar, Tron, etc.)
    - `swiftReference` string — SWIFT reference (max 4 lines, 35 chars per line, separated by \n)
    - `rtpReference` string — RTP reference (max 140 chars, limited charset: a-z A-Z 0-9 & - . / and space)
  - `remarks` string — Free-form remarks or notes about the transfer (e.g., invoice discrepancy explanations)
  - `internalRemarks` string — Internal remarks visible only within your organization. Never forwarded to payment rails (SWIFT, ACH, etc.) or counterparties.
  - `developerFeeFixed` number — Fixed developer fee in minor units of source currency. Added on top of provider fees and deducted from the transfer amount.
  - `developerFeePercent` number — Developer fee as decimal percentage (e.g., 0.015 for 1.5%). Deducted from the transfer amount before sending to the destination. Maximum 0.1 (10%).
  - `documentIds` string[] — Supporting document IDs for the transfer. Required for third-party SWIFT payments (when the destination account is marked as third-party or the destination customer differs from the originating customer).
  - `expiresAt` string, date-time — Optional transfer expiration timestamp. If omitted, the transfer expires 7 days after creation when funded by a fiat pay-in (wire/ACH) and 48 hours after creation otherwise.
  - `requiresAuthorization` boolean — If true, this payment must be authorized before it is processed. Attach the supporting invoice via documentIds. The transfer parks in PENDING_AUTHORIZATION and does not move funds until it is approved.
  - `amount` TransferIntentAmountDto, required
    - `value` string, required — Amount in minor units of the selected side.
    - `side` 'SOURCE' | 'DESTINATION', required — Amount side fixed by the customer.
  - `paymentReason` 'CAPITAL_CONTRIBUTIONS' | 'CHARITABLE_CONTRIBUTIONS' | 'CONSULTING_FEES' | 'CORPORATE_TAX_PAYMENTS' | 'DOWN_PAYMENTS_FOR_REAL_ESTATE' | 'EDUCATION_FEES' | 'EMPLOYEE_SALARIES_OR_WAGES' | 'EXPENSES_REIMBURSEMENT' | 'GIFTS' | 'GOVERNMENT_GRANTS' | 'INCOME_TAX_PAYMENTS' | 'INHERITANCE_PAYMENTS' | 'INSURANCE_CLAIM_PAYOUTS' | 'INSURANCE_PREMIUM_PAYMENTS' | 'INVESTMENTS' | 'LOAN_ADVANCES' | 'MORTGAGE_PAYMENTS' | 'OTHER' | 'PAYMENT_FOR_GOODS_AND_SERVICES' | 'PERSONAL_TRANSFERS' | 'REAL_ESTATE_PURCHASES' | 'REMITTANCES' | 'RENT' | 'REPAYMENT_OF_LOANS' | 'ROYALTIES' | 'SELF' | 'TRADE_SETTLEMENT' | 'TRUST_FUND_DISTRIBUTIONS' | 'UTILITY_BILLS' | 'WELFARE_OR_BENEFITS' | 'WINNINGS_AND_PRIZES', required — Reason for the payment (compliance/AML).
  - `lock` boolean — Persist a firm quote that can be confirmed. Preview quotes omit this.

## Response `200`

Transfer created from the quoted intent.

- TransferIntentResultResponseDto
  - `transferId` string, required
  - `flow` string, required — Customer-facing transfer flow.
  - `status` string, required — Current customer-facing transfer status.
  - `fundingRequired` boolean, required — Whether customer funding is required.
  - `depositInstructions` union — Deposit instructions when customer funding is required.
    - 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
  - `fundingInstructions` FxTradeFundingInstructionsDto
    - `reference` string, required — Reference the customer must include on their outbound wire so the funds can be attributed to this trade. Customer-visible; renders verbatim in their banking app.
    - `currency` string, required — ISO 4217.
    - `amount` string, required — Amount the customer must wire, in source-currency minor units.
    - `supportedRails` string[], required — Rails accepted for the inbound wire — the customer picks one in their banking app and matches it to the account variant in `accounts` carrying the right identifiers for that rail.
    - `bank` FxTradeFundingInstructionsBankDto, required
      - `name` string
      - `address` string
      - `country` string — ISO 3166-2.
    - `accounts` FxTradeFundingInstructionsAccountDto[], required — One entry per rail-variant receiving account. Pick the entry matching the rail used to initiate the wire.
      - `supportedRails` string[], required — Rails this account accepts inbound wires on. Pick the account whose rails include the one used to initiate the wire.
      - `accountHolderName` string
      - `accountNumber` string
      - `iban` string
      - `bic` string
      - `sortCode` string
      - `routingNumber` string — ABA routing number (US ACH / Fedwire).
    - `swiftRoutingBanks` FxTradeFundingInstructionsSwiftBankDto[] — Correspondent / intermediary banks required when routing via SWIFT. Omitted when the route has no SWIFT correspondents.
      - `role` 'INTERMEDIARY' | 'CORRESPONDENT', required
      - `bankName` string, required
      - `bic` string, required
      - `abaRoutingNumber` string
    - `expiresAt` string, required — Wire-by deadline (ISO 8601).
  - `fundingDeadline` string, date-time — Customer funding deadline when funding is required.

## Other responses

- `401` — Unauthorized - Invalid or missing authentication credentials

## Changes

- **2026-09-24** `bb2702829ce0` — 54 info
  - added the new `AED` enum value to the request property `destination/allOf[#/components/schemas/TransferDestinationDto]/currency`
  - added the new `ARS` enum value to the request property `destination/allOf[#/components/schemas/TransferDestinationDto]/currency`
  - added the new `AUD` enum value to the request property `destination/allOf[#/components/schemas/TransferDestinationDto]/currency`
  - added the new `BHD` enum value to the request property `destination/allOf[#/components/schemas/TransferDestinationDto]/currency`
  - …50 more
- **2026-09-11** `722cdfabcdeb` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/infinite/apis/infinite-api/changes/v1/transfers/quotes/confirm/post.md)

---

[API](https://skmtc.dev/infinite/apis/infinite-api.md) · [All operations](https://skmtc.dev/infinite/apis/infinite-api/llms.txt) · [OpenAPI document](https://skmtc.dev/infinite/apis/infinite-api/revisions/0b0a3231b482?raw)
