# Foreign Exchange Rates
Get Visa's latest Foreign Exchange Rates instantly.

## Version: 1

### Servers

| URL | Description |
| --- | ----------- |
| https://sandbox.api.visa.com | Sandbox server |

---
### Schemas

#### TransactionType Schema

Specifies whether the FX rate is for a Push Funds Transaction (OCT) or a Pull Funds Transaction (AFT). If not provided, the default is 'PUSH’ for Push Funds Transaction (OCT).<br><br>This field is relevant only when field rateProductCode is ‘A'.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionType | string, <br>**Available values:** "PUSH", "PULL" | Specifies whether the FX rate is for a Push Funds Transaction (OCT) or a Pull Funds Transaction (AFT). If not provided, the default is 'PUSH’ for Push Funds Transaction (OCT).<br><br>This field is relevant only when field rateProductCode is ‘A'. |  |

#### ForeignExchangeRatesResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| conversionRate | string | This is the Conversion Rate. Note: The ConversionRate field excludes any markup.<br>*Example:* `"0.07"` | Yes |
| nextFxRateTable | { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string } | The upcoming FX rate table that will become active when the current rate table expires. | No |
| destinationAmount | string | The transaction amount in destination currency.<br>*Example:* `"75.85"` | Yes |
| markUpRateApplied | string | The percentage FX mark up rate applied to the transaction.<br>*Example:* `"0.07"` | Yes |
| currentFxRateTable | { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string } | The currently active FX rate table. | No |
| originalDestnAmtBeforeMarkUp | string | *Example:* `"81.16"` | Yes |

#### FXResponse_using_rateProductCode_BANK_or_WALLET Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FXResponse_using_rateProductCode_BANK_or_WALLET | { **"quoteId"**: long, **"conversionRate"**: double, **"rateProductCode"**: string, <br>**Available values:** "BANK", "WALLET", **"sourceCurrencyCode"**: string, **"quoteIdExpiryDateTime"**: string, **"destinationCurrencyCode"**: string } or { **"sourceAmount"**: double, **"conversionRate"**: double, **"rateProductCode"**: string, <br>**Available values:** "BANK", "WALLET", **"destinationAmount"**: double, **"sourceCurrencyCode"**: string, **"destinationCurrencyCode"**: string } or { **"sourceAmount"**: double, **"conversionRate"**: double, **"rateProductCode"**: string, <br>**Available values:** "BANK", "WALLET", **"destinationAmount"**: double, **"sourceCurrencyCode"**: string, **"destinationCurrencyCode"**: string } |  |  |

#### Timestamp Schema

ISO 8601 formatted UTC Timestamp, YYYY-MM-DDThh:mm:ss.sTZD. TZD is Z or +/-00:00

example: 1997-07-16T19:20:30.45+00:00

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Timestamp | string | ISO 8601 formatted UTC Timestamp, YYYY-MM-DDThh:mm:ss.sTZD. TZD is Z or +/-00:00  example: 1997-07-16T19:20:30.45+00:00  |  |

#### FxRateTable-1 Schema

FX rate table information containing the rate table identifier and its validity window.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rateTableID | string | Identifies the FX rate table. The first character indicates the FX product code.<br>*Example:* `"D1234"` | No |
| rateActivationDateTime | string | The date and time when the rate table becomes active (UTC format).<br>*Example:* `"2024-01-01T00:00:00.000Z"` | No |
| rateExpirationDateTime | string | The date and time when the rate table expires (UTC format).<br>*Example:* `"2024-01-02T00:00:00.000Z"` | No |

#### FxRateTable Schema

FX rate table information containing the rate table identifier and its validity window.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rateTableID | string | Identifies the FX rate table. The first character indicates the FX product code.<br>*Example:* `"D1234"` | No |
| rateActivationDateTime | string | The date and time when the rate table becomes active (UTC format).<br>*Example:* `"2024-01-01T00:00:00.000Z"` | No |
| rateExpirationDateTime | string | The date and time when the rate table expires (UTC format).<br>*Example:* `"2024-01-02T00:00:00.000Z"` | No |

#### FXResponse_using_rateProductCode_BANK_or_WALLET.ResponsewithQuote_Yes Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| quoteId | long | This field contains the unique number representing the FX Quote.<br>*Example:* `987654321` | No |
| conversionRate | double | This field contains the exchange rate applied to convert sourceAmount to destinationAmount.<br>*Example:* `0.07` | Yes |
| rateProductCode | string, <br>**Available values:** "BANK", "WALLET" | Indicates which rate source is to be used - BANK - Account based Live or Quote FX rates - WALLET - Wallet based Live or Quote FX rates <br>*Enum:* `"BANK"`, `"WALLET"` | Yes |
| sourceCurrencyCode | string | Source amount 3-alpha currency code in ISO 4217<br>*Example:* `"USD"` | Yes |
| quoteIdExpiryDateTime | string | This timestamp represents the datetime value in UTC for which the QuoteId is valid. Format should be YYYY-MM-DDThh:mm:ss.sssTZD. TZD is either Z or +/-00:00.<br>*Example:* `"2018-07-19T10:22:15.529+00:00"` | No |
| destinationCurrencyCode | string | Destination amount 3-alpha currency code in ISO 4217<br>*Example:* `"GBP"` | Yes |

#### FXRequest_using_rateProductCode_BANK_or_WALLET.Request_Source_to_Destination Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| sourceAmount | double | The amount to debit from merchant's funding account. Minor currency units after the decimal point, must be less than or equal to the defined currency exponent  Examples- 99.85, 99.00, etc indicate 2 digits after the decimal point for a 2-exponent currency, 989.333, 989.340, 989.000 etc indicate 3 digits after the decimal point for a 3-exponent currency, & 95, 100 etc indicate no decimal point or minor units for a 0-exponent currency  If the quoteIdRequired value is false or not provided, then either sourceAmount or destinationAmount is required  | No |
| rateProductCode | string, <br>**Available values:** "BANK", "WALLET" | Indicates which rate source is to be used - BANK - Account based Live or Quote FX rates - WALLET - Wallet based Live or Quote FX rates <br>*Enum:* `"BANK"`, `"WALLET"` | Yes |
| initiatingPartyId | long | Identifier assigned by Visa to uniquely identify the Originating Entity who initiates the transaction <br>*Example:* `476110` | Yes |
| sourceCurrencyCode | string | Source amount 3-alpha currency code in ISO 4217<br>*Example:* `"USD"` | Yes |
| destinationCurrencyCode | string | Destination amount 3-alpha currency code in ISO 4217<br>*Example:* `"GBP"` | Yes |

#### FXResponse_using_rateProductCode_A_or_B.Response_Source_to_Destination Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| conversionRate | string | This is the Conversion Rate. Note: The ConversionRate field excludes any markup.<br>*Example:* `"0.07"` | Yes |
| acquirerDetails | { **"settlement"**: { **"amount"**: string, **"currencyCode"**: string, **"conversionRate"**: string } } |  | No |
| nextFxRateTable | { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string } | The upcoming FX rate table that will become active when the current rate table expires. | No |
| rateProductCode | string, <br>**Available values:** "A", "B" | indicates which rate source to be used like card based vs account based rates. - A - Card based rates - B - Account based rates <br>*Enum:* `"A"`, `"B"` | Yes |
| destinationAmount | string | <b>Conditional.</b><br>This field is required for source-to-destination lookup.<br><br>The transaction amount in destination currency.<br>*Example:* `"75.85"` | No |
| markupRateApplied | string | The percentage FX mark up rate (<100) to be applied to the transaction.  Example- A value of 0.07 will assume a 0.07% markup applies to the FX transaction. The default markup rates can also be optionally configured as part of onboarding process. If the markup value is not supplied in the FX inquiry API, and the Acquiring BIN is provided, the markup configured during onboarding will be picked up and applied to the transaction.<br>*Example:* `"0.07"` | No |
| currentFxRateTable | { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string } | The currently active FX rate table. | No |
| sourceAmountWithoutMarkup | string | Source Transaction Amount excluding markup in source currency.  This field will be returned in a source-to-destination inquiry response when markup is applicable.<br>*Example:* `"75.85"` | No |

#### FXRequest_using_rateProductCode_BANK_or_WALLET.Request_Destination_to_Source Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rateProductCode | string, <br>**Available values:** "BANK", "WALLET" | Indicates which rate source is to be used - BANK - Account based Live or Quote FX rates - WALLET - Wallet based Live or Quote FX rates <br>*Enum:* `"BANK"`, `"WALLET"` | Yes |
| destinationAmount | double | The destination amount to credit to beneficiary's bank account. Minor currency units after the decimal point, must be less than or equal to the defined currency exponent.  Examples- 99.85, 99.00, etc indicate 2 digits after the decimal point for a 2-exponent currency, 989.333, 989.340, 989.000, etc  indicate 3 digits after the decimal point for a 3-exponent currency, & 95, 100 etc indicate no decimal point or minor units for a 0-exponent currency.   If the quoteIdRequired value is false or not provided, then either sourceAmount or destinationAmount is required.  | No |
| initiatingPartyId | long | Identifier assigned by Visa to uniquely identify the Originating Entity who initiates the transaction  | Yes |
| sourceCurrencyCode | string | Source amount 3-alpha currency code in ISO 4217<br>*Example:* `"USD"` | Yes |
| destinationCurrencyCode | string | Destination amount 3-alpha currency code in ISO 4217<br>*Example:* `"GBP"` | Yes |

#### FXResponse_using_rateProductCode_A_or_B.Response_Destination_to_Source Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| sourceAmount | string | <b>Conditional.</b><br>This field is required for destination-to-source lookup.<br><br>The transaction amount in source currency.<br>*Example:* `"100.55"` | No |
| conversionRate | string | This is the Conversion Rate. Note: The ConversionRate field excludes any markup.<br>*Example:* `"0.07"` | Yes |
| acquirerDetails | { **"settlement"**: { **"amount"**: string, **"currencyCode"**: string, **"conversionRate"**: string } } |  | No |
| nextFxRateTable | { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string } | The upcoming FX rate table that will become active when the current rate table expires. | No |
| rateProductCode | string, <br>**Available values:** "A", "B" | indicates which rate source to be used like card based vs account based rates. - A - Card based rates - B - Account based rates <br>*Enum:* `"A"`, `"B"` | Yes |
| markupRateApplied | string | The percentage FX mark up rate (<100) to be applied to the transaction.  Example- A value of 0.07 will assume a 0.07% markup applies to the FX transaction. The default markup rates can also be optionally configured as part of onboarding process. If the markup value is not supplied in the FX inquiry API, and the Acquiring BIN is provided, the markup configured during onboarding will be picked up and applied to the transaction.<br>*Example:* `"0.07"` | No |
| currentFxRateTable | { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string } | The currently active FX rate table. | No |
| sourceAmountWithMarkup | string | Source Amount including markup in source currency.  This field will be returned in a destination-to-source inquiry response when markup is applicable.<br>*Example:* `"75.85"` | No |

#### FXRequest_using_rateProductCode_A_or_B Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FXRequest_using_rateProductCode_A_or_B | { **"markupRate"**: string, **"sourceAmount"**: string, **"acquirerDetails"**: { **"bin"**: double, **"settlement"**: { **"currencyCode"**: string } }, **"rateProductCode"**: string, <br>**Available values:** "A", "B", **"transactionType"**: string, <br>**Available values:** "PUSH", "PULL", **"sourceCurrencyCode"**: string, **"destinationCurrencyCode"**: string } or { **"markupRate"**: string, **"acquirerDetails"**: { **"bin"**: double, **"settlement"**: { **"currencyCode"**: string } }, **"rateProductCode"**: string, <br>**Available values:** "A", "B", **"transactionType"**: string, <br>**Available values:** "PUSH", "PULL", **"destinationAmount"**: string, **"sourceCurrencyCode"**: string, **"destinationCurrencyCode"**: string } |  |  |

#### RateProductCode Schema

indicates which rate source to be used like card based vs account based rates.
- A - Card based rates
- B - Account based rates

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RateProductCode | string, <br>**Available values:** "A", "B" | indicates which rate source to be used like card based vs account based rates. - A - Card based rates - B - Account based rates  |  |

#### FXRequest_using_rateProductCode_A_or_B.Request_Source_to_Destination Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| markupRate | string | The percentage FX mark up rate (<100) to be applied to the transaction.  (Note: The markup is used to estimate how much to collect from a sender and when submitting the OCT payload transaction, the payload must exclude any markup).  Example- A value of 0.07 will assume a 0.07% markup applies to the FX transaction. The default markup rates can also be optionally configured as part of onboarding process. If the markup value is not supplied in the FX inquiry API, and the Acquiring BIN is provided, the markup configured during onboarding will be picked up and applied to the transaction.  To override any markup defaults set up on the account, always send a markup value of 0.00 to indicate 0% markup.<br>*Example:* `"0.07"` | No |
| sourceAmount | string | This field is required for source-to-destination lookup, and assumes that the “sourceAmount” in the request includes any applicable originator markup (Note: When submitting the OCT payload transaction, the payload must exclude any markup).  Minor currency units after the decimal point, must be less than or equal to the defined currency exponent. This field cannot be 0 or null. <br>Examples-  99.85, 99.00, etc indicate 2 digits after the decimal point for a 2-exponent currency, 989.333, 989.340, 989.000, etc indicate 3 digits after the decimal point for a 3-exponent currency, & 95, 100 etc indicate no decimal point or minor units for a 0-exponent currency.<br>*Example:* `"100.55"` | Yes |
| acquirerDetails | { **"bin"**: double, **"settlement"**: { **"currencyCode"**: string } } |  | No |
| rateProductCode | string, <br>**Available values:** "A", "B" | indicates which rate source to be used like card based vs account based rates. - A - Card based rates - B - Account based rates <br>*Enum:* `"A"`, `"B"` | Yes |
| transactionType | string, <br>**Available values:** "PUSH", "PULL" | Specifies whether the FX rate is for a Push Funds Transaction (OCT) or a Pull Funds Transaction (AFT). If not provided, the default is 'PUSH’ for Push Funds Transaction (OCT).<br><br>This field is relevant only when field rateProductCode is ‘A'.<br>*Enum:* `"PUSH"`, `"PULL"` | No |
| sourceCurrencyCode | string | Source amount currency code in ISO 4217 Numeric code<br>*Example:* `"840"` | Yes |
| destinationCurrencyCode | string | Destination amount currency code in ISO 4217 Numeric code<br>*Example:* `"826"` | Yes |

#### FXResponse_using_rateProductCode_A_or_B Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FXResponse_using_rateProductCode_A_or_B | { **"conversionRate"**: string, **"acquirerDetails"**: { **"settlement"**: { **"amount"**: string, **"currencyCode"**: string, **"conversionRate"**: string } }, **"nextFxRateTable"**: { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string }, **"rateProductCode"**: string, <br>**Available values:** "A", "B", **"destinationAmount"**: string, **"markupRateApplied"**: string, **"currentFxRateTable"**: { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string }, **"sourceAmountWithoutMarkup"**: string } or { **"sourceAmount"**: string, **"conversionRate"**: string, **"acquirerDetails"**: { **"settlement"**: { **"amount"**: string, **"currencyCode"**: string, **"conversionRate"**: string } }, **"nextFxRateTable"**: { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string }, **"rateProductCode"**: string, <br>**Available values:** "A", "B", **"markupRateApplied"**: string, **"currentFxRateTable"**: { **"rateTableID"**: string, **"rateActivationDateTime"**: string, **"rateExpirationDateTime"**: string }, **"sourceAmountWithMarkup"**: string } |  |  |

#### FXRequest_using_rateProductCode_A_or_B.Request_Destination_to_Source Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| markupRate | string | The percentage FX mark up rate (<100) to be applied to the transaction.  (Note: The markup is used to estimate how much to collect from a sender and when submitting the OCT payload transaction, the payload must exclude any markup).  Example- A value of 0.07 will assume a 0.07% markup applies to the FX transaction. The default markup rates can also be optionally configured as part of onboarding process. If the markup value is not supplied in the FX inquiry API, and the Acquiring BIN is provided, the markup configured during onboarding will be picked up and applied to the transaction.  To override any markup defaults set up on the account, always send a markup value of 0.00 to indicate 0% markup.<br>*Example:* `"0.07"` | No |
| acquirerDetails | { **"bin"**: double, **"settlement"**: { **"currencyCode"**: string } } |  | No |
| rateProductCode | string, <br>**Available values:** "A", "B" | indicates which rate source to be used like card based vs account based rates. - A - Card based rates - B - Account based rates <br>*Enum:* `"A"`, `"B"` | Yes |
| transactionType | string, <br>**Available values:** "PUSH", "PULL" | Specifies whether the FX rate is for a Push Funds Transaction (OCT) or a Pull Funds Transaction (AFT). If not provided, the default is 'PUSH’ for Push Funds Transaction (OCT).<br><br>This field is relevant only when field rateProductCode is ‘A'.<br>*Enum:* `"PUSH"`, `"PULL"` | No |
| destinationAmount | string | This field is required for destination-to-source lookup. The transaction amount in destination currency does not include any markup; it represents the amount the beneficiary will receive.  Minor currency units after the decimal point, must be less than or equal to the defined currency exponent. This field cannot be 0 or null. <br>Examples-  99.85, 99.00, etc indicate 2 digits after the decimal point for a 2-exponent currency, 989.333, 989.340, 989.000, etc indicate 3 digits after the decimal point for a 3-exponent currency, & 95, 100 etc indicate no decimal point or minor units for a 0-exponent currency.<br>*Example:* `"75.85"` | Yes |
| sourceCurrencyCode | string | Source amount currency code in ISO 4217 Numeric code<br>*Example:* `"840"` | Yes |
| destinationCurrencyCode | string | Destination amount currency code in ISO 4217 Numeric code<br>*Example:* `"826"` | Yes |

#### FXResponse_using_rateProductCode_BANK_or_WALLET.ResponsewithDestinationAmount Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| sourceAmount | double | The transaction amount in source currency. | No |
| conversionRate | double | This field contains the exchange rate applied to convert sourceAmount to destinationAmount.<br>*Example:* `0.07` | Yes |
| rateProductCode | string, <br>**Available values:** "BANK", "WALLET" | Indicates which rate source is to be used - BANK - Account based Live or Quote FX rates - WALLET - Wallet based Live or Quote FX rates <br>*Enum:* `"BANK"`, `"WALLET"` | Yes |
| destinationAmount | double | The transaction amount in destination currency. | No |
| sourceCurrencyCode | string | Source amount 3-alpha currency code in ISO 4217<br>*Example:* `"USD"` | Yes |
| destinationCurrencyCode | string | Destination amount 3-alpha currency code in ISO 4217<br>*Example:* `"GBP"` | Yes |

#### ForeignExchangeRatesRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| markupRate | string | The percentage FX mark up rate (<100) to be applied to the transaction.  (Note: The markup is used to estimate how much to collect from a sender and when submitting the OCT payload transaction, the payload must exclude any markup).  Example- A value of 0.07 will assume a 0.07% markup applies to the FX transaction. The default markup rates can also be optionally configured as part of onboarding process. If the markup value is not supplied in the FX inquiry API, and the Acquiring BIN is provided, the markup configured during onboarding will be picked up and applied to the transaction.  To override any markup defaults set up on the account, always send a markup value of 0.00 to indicate 0% markup.<br>*Example:* `"0.07"` | No |
| acquiringBin | integer | The clients of Funds Transfer APIs can choose to provide acquiringBin for reporting purpose. This is the Bank Identification Number (BIN) under which your Funds Transfer is registered. This must match the information provided during onboarding process. This BIN value is conditionally required in the API request to apply default markup rate to the transaction. The markupRate provided in the API request takes precedence over the configured defaults.<br>*Example:* `408999` | No |
| cardAcceptor | { **"name"**: string, **"idCode"**: string, **"address"**: { **"city"**: string, **"state"**: string, **"county"**: string, **"country"**: string, **"zipCode"**: string }, **"terminalId"**: string } |  | No |
| sourceAmount | string | This field is required for source-to-destination lookup, and assumes that the “sourceAmount” in the request includes any applicable originator markup (Note: When submitting the OCT payload transaction, the payload must exclude any markup).  Minor currency units after the decimal point, must be less than or equal to the defined currency exponent. This field cannot be 0 or null. <br>Examples-  99.85, 99.00, etc indicate 2 digits after the decimal point for a 2-exponent currency, 989.333, 989.340, 989.000, etc indicate 3 digits after the decimal point for a 3-exponent currency, & 95, 100 etc indicate no decimal point or minor units for a 0-exponent currency.<br>*Example:* `"100.55"` | Yes |
| transactionType | string, <br>**Available values:** "PUSH", "PULL" | Specifies whether the FX rate is for a Push Funds Transaction (OCT) or a Pull Funds Transaction (AFT).<br/><br/>If not provided, the default is 'PUSH’ for Push Funds Transaction (OCT).<br>*Enum:* `"PUSH"`, `"PULL"` | No |
| sourceCurrencyCode | string | Source amount currency code in ISO 4217 Numeric code<br>*Example:* `"840"` | Yes |
| acquirerCountryCode | string | The Acquirer Country Code should conform to ISO 3166-1, 3-digit numeric representation<br>*Example:* `"826"` | No |
| destinationCurrencyCode | string | Destination amount currency code in ISO 4217 Numeric code<br>*Example:* `"826"` | Yes |
| systemsTraceAuditNumber | string | This trace number is used to tie together the FX call and the related financial AFT/OCT transaction. For the FX lookup use a value that will be sent in subsequent AFT/OCT transaction. | No |
| retrievalReferenceNumber | string | A value used to tie together the FX call and the related financial AFT/OCT transaction. For the FX lookup use a value that will be sent in subsequent AFT/OCT transaction.<br><br> Recommended Format : ydddhhnnnnnn<br><br>The first fours digits must be a valid yddd date in the Julian date format, where the first digit = 0-9 (last digit of current year) and the next three digits = 001-366 (number of the day in the year). hh can be the two digit hour in a 24 hour clock (00-23) during which the transaction is performed.<br><br> nnnnnn can be the systemsTraceAuditNumber or any 6 digit number. | No |

#### FXRequest_using_rateProductCode_BANK_or_WALLET.Request_QuoteID Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| quoteIdRequired | boolean | true or false - This field is to indicate whether the quote identifier is been expected in response for use in payout transactions.  <b>Conditional</b>  If the value is false, client will not receive quoteId in the API response. If the value is true, client will receive quoteId in the API response. If QuoteIdRequired field is not available in the request, the API behavior is similar to when QuoteIdRequired  value is false. <br>*Example:* `true` | No |
| rateProductCode | string, <br>**Available values:** "BANK", "WALLET" | Indicates which rate source is to be used - BANK - Account based Live or Quote FX rates - WALLET - Wallet based Live or Quote FX rates <br>*Enum:* `"BANK"`, `"WALLET"` | Yes |
| initiatingPartyId | long | Identifier assigned by Visa to uniquely identify the Originating Entity who initiates the transaction <br>*Example:* `476110` | Yes |
| sourceCurrencyCode | string | Source amount 3-alpha currency code in ISO 4217<br>*Example:* `"USD"` | Yes |
| destinationCurrencyCode | string | Destination amount 3-alpha currency code in ISO 4217<br>*Example:* `"GBP"` | Yes |

#### Amount Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Amount | double |  |  |

**Example**
<pre>43.01</pre>

#### FXResponse_using_rateProductCode_BANK_or_WALLET.ResponsewithSourceAmount Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| sourceAmount | double | The transaction amount in source currency. | No |
| conversionRate | double | This field contains the exchange rate applied to convert sourceAmount to destinationAmount.<br>*Example:* `0.07` | Yes |
| rateProductCode | string, <br>**Available values:** "BANK", "WALLET" | Indicates which rate source is to be used - BANK - Account based Live or Quote FX rates - WALLET - Wallet based Live or Quote FX rates <br>*Enum:* `"BANK"`, `"WALLET"` | Yes |
| destinationAmount | double | The transaction amount in destination currency. | No |
| sourceCurrencyCode | string | Source amount 3-alpha currency code in ISO 4217<br>*Example:* `"USD"` | Yes |
| destinationCurrencyCode | string | Destination amount 3-alpha currency code in ISO 4217<br>*Example:* `"GBP"` | Yes |

#### FXRequest_using_rateProductCode_BANK_or_WALLET Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FXRequest_using_rateProductCode_BANK_or_WALLET | { **"quoteIdRequired"**: boolean, **"rateProductCode"**: string, <br>**Available values:** "BANK", "WALLET", **"initiatingPartyId"**: long, **"sourceCurrencyCode"**: string, **"destinationCurrencyCode"**: string } or { **"sourceAmount"**: double, **"rateProductCode"**: string, <br>**Available values:** "BANK", "WALLET", **"initiatingPartyId"**: long, **"sourceCurrencyCode"**: string, **"destinationCurrencyCode"**: string } or { **"rateProductCode"**: string, <br>**Available values:** "BANK", "WALLET", **"destinationAmount"**: double, **"initiatingPartyId"**: long, **"sourceCurrencyCode"**: string, **"destinationCurrencyCode"**: string } |  |  |

#### ErrorResponse500 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorResponse | { **"reason"**: string, **"status"**: string, **"message"**: string } |  | Yes |

#### ErrorResponse403 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorResponse | { **"reason"**: string, **"status"**: string, **"message"**: string } |  | Yes |

#### ErrorResponse400 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorResponse | { **"reason"**: string, **"status"**: string, **"details"**: [ { **"message"**: string, **"location"**: string } ], **"message"**: string } |  | Yes |

#### BankOrWalletRateProductCode Schema

Indicates which rate source is to be used
- BANK - Account based Live or Quote FX rates
- WALLET - Wallet based Live or Quote FX rates

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| BankOrWalletRateProductCode | string, <br>**Available values:** "BANK", "WALLET" | Indicates which rate source is to be used - BANK - Account based Live or Quote FX rates - WALLET - Wallet based Live or Quote FX rates  |  |
