Skip to content
Last updated


Create quotes tied to user profiles to enable actual money transfers, the essential step for the Send Money flow.

What are Authenticated Quotes?

Authenticated quotes are profile-specific exchange rate quotes that serve as the foundation for creating actual money transfers. Unlike unauthenticated quotes (used for display purposes), authenticated quotes can be used to create real transfers.

They include a unique quote ID and lock in the rate for a limited time.

When to use this endpoint

Use authenticated quotes when:

  • Users are ready to create an actual transfer
  • You need to lock in an exchange rate
  • You're building the transfer creation flow
  • You need to show exact fees for a real transaction

Creating an authenticated quote

To create a unauthenticated quote, you'll send an HTTP POST request to /v3/profiles/{profileId}/quotes.

You will need to pass in the header:

ParameterDescriptionExample
profileIdThe user or account's profile ID87654321

Request Body

The body of your request is where you'll specify all the information about the FX payment quote you want to create.

You will need to always provide the currencies to exchange:

ParameterDescriptionExample
sourceCurrencyCurrency for sending currency (ISO 4217)"USD"
targetCurrencyCurrency for receiving currency (ISO 4217)"EUR"

If the account ID is not yet known, you can pass null. You can then PATCH to add the recipient information once you have it.

Then EITHER sourceAmount OR targetAmount (never both):

ParameterDescriptionExample
sourceAmountAmount to send100.00
targetAmountAmount recipient should receive85.00

Here's some example for both scenerios.

Option A: Fixed Send Amount

Use when you know how much the user wants to send.

Example Request:

{
  "sourceCurrency": "USD",
  "targetCurrency": "EUR",
  "sourceAmount": 1000,
  "targetAccount": null
}

Option B: Fixed Receive Amount

Use when you know how much the recipient should receive.

Example Request:

{
  "sourceCurrency": "USD",
  "targetCurrency": "EUR",
  "targetAmount": 850,
  "targetAccount": null
}

*Choose one amount parameter, not both.

Optional Parameters

Payment Method Selection

ParameterTypeDescriptionExample
payOutstringPayout method (if multiple available)"BANK_TRANSFER", "SWIFT", "INTERAC"

Example:

{
  "sourceCurrency": "CAD",
  "targetCurrency": "USD",
  "sourceAmount": 1000,
  "targetAccount": null,
  "payOut": "INTERAC"
}

Pre-linking to Recipient

Instead of null, you can provide a recipient account ID to get fees specific to that recipient:

{
  "sourceCurrency": "USD",
  "targetCurrency": "EUR",
  "sourceAmount": 1000,
  "targetAccount": 98765432
}

Benefits:

  • More accurate fees (some recipients may have different fee structures)
  • Faster transfer creation (one less step)
  • Better user experience

Understanding the Response

Complete Response Example

{
  "id": "a0123456-b789-c012-d345-e67890123456",
  "sourceCurrency": "USD",
  "targetCurrency": "EUR",
  "sourceAmount": 1000.00,
  "targetAmount": 921.50,
  "rate": 0.9215,
  "createdTime": "2024-01-15T10:30:00Z",
  "createdByUserId": 12345678,
  "user": 12345678,
  "profile": 87654321,
  "rateType": "FIXED",
  "rateExpirationTime": "2024-01-15T11:00:00Z",
  "providedAmountType": "SOURCE",
  "paymentOptions": [
    {
      "payIn": "BALANCE",
      "fee": {
        "transferwise": 5.15,
        "payIn": 0.00,
        "discount": 0.00,
        "partner": 0.00,
        "total": 5.15
      },
      "price": {
        "priceSetId": 189,
        "total": {
          "type": "TOTAL",
          "label": "Total fees",
          "value": {
            "amount": 5.15,
            "currency": "USD",
            "label": "5.15 USD"
          }
        }
      },
      "sourceAmount": 1000.00,
      "targetAmount": 921.50,
      "estimatedDelivery": "2024-01-17T17:00:00Z",
      "formattedEstimatedDelivery": "by Wednesday, January 17",
      "estimatedDeliveryDelays": [],
      "allowedProfileTypes": ["PERSONAL", "BUSINESS"],
      "payInProduct": "BALANCE",
      "feePercentage": 0.51
    }
  ],
  "payOut": "BANK_TRANSFER",
  "status": "PENDING",
  "expirationTime": "2024-01-16T10:30:00Z",
  "notices": []
}

Key Response Fields

FieldDescriptionExample Use
idUnique quote identifier - save this!Use to create transfer
rateExchange rate locked for this quoteDisplay "1 USD = 0.9215 EUR"
sourceAmountTotal amount user needs to sendShow "You send $1,000.00"
targetAmountAmount recipient receivesShow "Recipient gets €921.50"
rateType"FIXED" or "FLOATING"Inform user if rate is guaranteed
rateExpirationTimeWhen the locked rate expiresShow countdown timer
expirationTimeWhen the entire quote expiresMust create transfer before this
paymentOptions[0].fee.totalTotal fee in source currencyShow "Fee: $5.15"
paymentOptions[0].formattedEstimatedDeliveryHuman-readable delivery timeShow "Arrives by Wednesday"
paymentOptions[0].estimatedDeliveryExact estimated delivery timestampCalculate delivery time
paymentOptions[0].payInPayment method"BALANCE", "BANK_TRANSFER", etc.
statusQuote status"PENDING", "ACCEPTED", "EXPIRED", CANCELLED
profileProfile ID this quote belongs toVerify correct profile
providedAmountTypeWhich amount was provided"SOURCE" or "TARGET"

Quote Status Values

StatusDescriptionCan Create Transfer?
PENDINGQuote is active and usable✅ Yes
ACCEPTEDQuote was used to create a transfer❌ No (already used)
EXPIREDQuote has expired❌ No
CANCELLEDQuote was cancelled❌ No