Once you become our affiliate partner, please get in touch with our team at partnerwise@wise.com. We will review your request and send over instructions on how to get the API access credentials.
There are two endpoints Exchange Rates.List and Get Temporary Quote which you can call with this authentication method.
Please visit our Postman collection for more details and examples of how to use our API, including how to get comparison, rates as well as pricing and speed data.
Example Request (Basic authentication):
curl -X GET "https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD" \
--user <your api client_id>:<your api client_secret>
Example Response:
[
{
"rate": 1.166,
"source": "EUR",
"target": "USD",
"time": "2018-08-31T10:43:31+0000"
}
]
GET https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD
Wise updates exchange rates in nearly real-time – at least once per minute. This allows you to track and see the current mid-market exchange rate for any currency route.
See more at Exchange Rates.List
Example Request (Basic authentication):
curl -X GET "https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD&from=2018-08-15T00:00:00&to=2018-08-30T23:59:59&group=day" \
--user <your api client_id>:<your api client_secret>
Example Response:
[
{
"rate": 1.166,
"source": "EUR",
"target": "USD",
"time": "2018-08-15T00:00:00+0000"
},
{
"rate": 1.168,
"source": "EUR",
"target": "USD",
"time": "2018-06-30T00:00:00+0000"
}
...
]
GET https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD&from=2018-08-15T00:00:00&to=2018-08-30T23:59:59&group=day
We expose up to 30 days exchange rate history via our API. This helps you to build an analysis page to show trends and implement an alerting system for your users.
See more at Exchange Rates.List
Example Request (Basic authentication):
curl -X POST https://api.sandbox.transferwise.tech/v2/quotes \
--header 'Content-Type: application/json' \
--data-raw '{"targetCurrency":"GBP","targetAmount":600,"sourceCurrency":"EUR"}' \
--user <your api client_id>:<your api client_secret>
Example Response:
{
"sourceCurrency": "EUR",
"targetCurrency": "GBP",
"targetAmount": 600,
"clientId": "unknown",
"createdTime": "2022-10-25T10:03:22Z",
"expirationTime": "2022-10-25T10:33:22Z",
"funding": "POST",
"guaranteedTargetAmount": false,
"guaranteedTargetAmountAllowed": true,
"notices": [],
"payOut": "BANK_TRANSFER",
"paymentOptions": [
{
"allowedProfileTypes": ["PERSONAL", "BUSINESS"],
"disabled": false,
"estimatedDelivery": "2022-10-25T10:03:22Z",
"estimatedDeliveryDelays": [],
"feePercentage": 0.0048,
"formattedEstimatedDelivery": "in seconds",
"payIn": "BANK_TRANSFER",
"payInProduct": "CHEAP",
"payOut": "BANK_TRANSFER",
"price": {
"items": [
{
"type": "TRANSFERWISE",
"label": "Our fee",
"value": {
"amount": 3.32,
"currency": "EUR",
"label": "3.32 EUR"
},
"priceSetId": 132,
"total": {
"type": "TOTAL",
"label": "Total fees",
"value": {
"amount": 3.32,
"currency": "EUR",
"label": "3.32 EUR"
}
}
}
]
},
"sourceAmount": 691.85,
"sourceCurrency": "EUR",
"targetAmount": 600,
"targetCurrency": "GBP"
}
],
"providedAmountType": "TARGET",
"rate": 0.871426,
"rateExpirationTime": "2022-10-27T14:59:59Z",
"rateTimestamp": "2022-10-25T10:02:42Z",
"rateType": "FIXED",
"status": "PENDING",
"targetAmountAllowed": true,
"type": "REGULAR"
}
POST https://api.sandbox.transferwise.tech/v2/quotes
Is currency route supported?
If we don't support a route then this endpoint will respond with an error code "error.route.not.supported".
How much does a transfer cost?
The Wise fee is included in the response.
How long does my transfer take?
Estimated delivery time is included in the response. This can vary quite a lot for different currency routes. For example transfers often only take a few hours from EUR to GBP, while sending money from USD can take 1-2 business days. This endpoint allows you to find out the estimated delivery time for each currency route.
See more at Get Temporary Quote
Example Request (Bearer token):
curl -X GET "https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD" \
-H "Authorization: Bearer <your api token>"
Example Request (Basic authentication):
curl -X GET "https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD" \
--user <your api client_id>:<your api client_secret>
Example Response:
[
{
"rate": 1.166,
"source": "EUR",
"target": "USD",
"time": "2018-08-31T10:43:31+0000"
}
]
GET https://api.sandbox.transferwise.tech/v1/rates
Fetch latest exchange rates of all currencies.
GET https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD
Fetch latest exchange rate of one currency pair.
GET https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD&time=2019-02-13T14:53:01
Fetch exchange rate of specific historical timestamp.
GET https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD&from=2019-02-13T14:53:01&to=2019-03-13T14:53:01&group=day
Fetch exchange rate history over period of time with daily interval.
GET https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD&from=2019-02-13T14:53:01&to=2019-03-13T14:53:01&group=hour
Fetch exchange rate history over period of time with hourly interval.
GET https://api.sandbox.transferwise.tech/v1/rates?source=EUR&target=USD&from=2019-02-13T14:53:01&to=2019-03-13T14:53:01&group=minute
Fetch exchange rate history over period of time with 1 minute interval.
Note that this endpoint supports two types of authentication: Bearer token and Basic authentication (client_id/client_secret).
Field | Description | Format |
---|---|---|
source | Source(send) currency code. | Text |
target | Target(receive) currency code. | Text |
time | Timestamp to get historic exchange rate. | Timestamp |
from | Period start date/time to get exchange rate history. | Timestamp or Date |
to | Period end date/time to get exchange rate history. | Timestamp or Date |
group | Interval: day hour minute | Text |
List of exchange rate values which meet your query criteria.
Field | Description | Format |
---|---|---|
rate | Exchange rate value. | Decimal |
source | Source(send) currency code | Text |
target | Target(receive) currency code | Text |
time | Timestamp for exchange rate. | Timestamp |
The request/response field(s) below support both Timestamp (combined date and time) and Date (date only) formats:
Field | Sample |
---|---|
from | 2019-03-13T14:53:01 or 2019-03-13 |
to | 2019-03-13T14:53:01+0100 or 2019-03-13+0100 |
The request/response field(s) below support only Timestamp (combined date and time):
Field | Sample |
---|---|
time | 2019-03-13T14:53:01 or 2019-03-13T14:53:01+0100 |
Timezone offset is supported but optional.
Example Request:
curl -X POST https://api.sandbox.transferwise.tech/v3/profiles/101/quotes \
-H "Authorization: Bearer <your api token>" \
-H "Content-Type: application/json" \
-d '{
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"sourceAmount": 100,
"targetAmount": null,
"payOut": null,
"preferredPayIn": null
}'
Example Response:
{
"id": "11144c35-9fe8-4c32-b7fd-d05c2a7734bf",
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"sourceAmount": 100,
"payOut": "BANK_TRANSFER",
"preferredPayIn": "BANK_TRANSFER",
"rate": 1.30445,
"createdTime": "2019-04-05T13:18:58Z",
"user": 55,
"profile": 101,
"rateType": "FIXED",
"rateExpirationTime": "2019-04-08T13:18:57Z",
"guaranteedTargetAmountAllowed": true,
"targetAmountAllowed": true,
"guaranteedTargetAmount": false,
"providedAmountType": "SOURCE",
"paymentOptions": [
{
"disabled": false,
"estimatedDelivery": "2019-04-08T12:30:00Z",
"formattedEstimatedDelivery": "by Apr 8",
"estimatedDeliveryDelays": [
{
"reason": "sample reason"
}
],
"fee": {
"transferwise": 3.04,
"payIn": 0,
"discount": 2.27,
"partner": 0,
"total": 0.77
},
"price": {
"priceSetId": 238,
"total": {
"type": "TOTAL",
"label": "Total fees",
"value": {
"amount": 0.77,
"currency": "GBP",
"label:": "0.77 GBP"
}
},
"items": [
{
"type": "FEE",
"label": "fee",
"value": {
"amount": 0,
"currency": "GBP",
"label": "0 GBP"
}
},
{
"type": "TRANSFERWISE",
"label": "Our fee",
"value": {
"amount": 3.04,
"currency": "GBP",
"label": "3.04 GBP"
}
},
{
"id": 123,
"type": "DISCOUNT",
"value": {
"amount": -2.27,
"currency": "GBP",
"label": "2.27 GBP"
},
"label": "Discount applied",
"explanation": {
"plainText": "You can have a discount for a number of reasons..."
}
}
]
},
"sourceAmount": 100,
"targetAmount": 129.24,
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"payIn": "BANK_TRANSFER",
"payOut": "BANK_TRANSFER",
"allowedProfileTypes": [
"PERSONAL",
"BUSINESS"
],
"payInProduct": "CHEAP",
"feePercentage": 0.0092
},
{
"disabled": true,
"estimatedDelivery": null,
"formattedEstimatedDelivery": null,
"estimatedDeliveryDelays": [],
"fee": {
"transferwise": 3.04,
"payIn": 0,
"discount": 0,
"partner": 0,
"total": 3.04
},
"price": {
"priceSetId": 238,
"total": {
"type": "TOTAL",
"label": "Total fees",
"value": {
"amount": 3.04,
"currency": "GBP",
"label:": "3.04 GBP"
}
},
"items": [
{
"type": "FEE",
"label": "fee",
"value": {
"amount": 0,
"currency": "GBP",
"label": "0 GBP"
}
},
{
"type": "TRANSFERWISE",
"label": "Our fee",
"value": {
"amount": 3.04,
"currency": "GBP",
"label": "3.04 GBP"
}
}
]
},
"sourceAmount": 100,
"targetAmount": 129,
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"payIn": "BALANCE",
"payOut": "BANK_TRANSFER",
"allowedProfileTypes": [
"PERSONAL",
"BUSINESS"
],
"disabledReason": {
"code": "error.payInmethod.disabled",
"message": "Open a multi-currency account and add funds to instantly pay for your transfers."
},
"payInProduct": "BALANCE",
"feePercentage": 0.0111
}
],
"status": "PENDING",
"expirationTime": "2019-04-05T13:48:58Z",
"notices": [
{
"text": "You can have a maximum of 3 open transfers with a guaranteed rate. After that, they'll be transferred using the live rate. Complete or cancel your other transfers to regain the use of guaranteed rate.",
"link": null,
"type": "WARNING"
}
]
}
The quote resource defines the basic information required for a Wise transfer - the currencies to send between, the amount to send and the profile who is sending the money. The profile must be included when creating a quote.
Quote is one of the required resources to create a transfer, along with the recipient who is to receive the funds.
The quote response contains other information such as the exchange rate, the estimated delivery time and the methods the user can pay for the transfer. Not all of this information may apply to your use case.
Upon creating a quote the current mid-market exchange rate is locked and will be used for the transfer that is created from the quote. The rate will be locked for 30 minutes to give a user time to complete the transfer creation flow.
POST https://api.sandbox.transferwise.tech/v3/profiles/{profileId}/quotes
Field | Description | Format |
---|---|---|
profileId | Personal or business profile id of the sender - required. | Integer |
sourceCurrency | Source (sending) currency code. | Text |
targetCurrency | Target (receiving) currency code. | Text |
targetAmount | Amount in target currency. | Decimal |
sourceAmount | Amount in source currency. Either sourceAmount or targetAmount is required, never both. |
Decimal |
targetAccount | Optional. If provided can be used as an alternative to updating the quote. | Integer |
payOut | Optional. Preferred payout method. Default value is BANK_TRANSFER . Other possible values are BALANCE , SWIFT , SWIFT_OUR and INTERAC . |
Text |
preferredPayIn | Optional. Preferred payin method. Use BANK_TRANSFER to return this method at the top of the response's results. |
Text |
Note - When SWIFT_OUR is set as payOut value, it enables payment protection for swift recipients for global currency transfers. By using this payOut method, you can guarantee your customers that the fee will be charged to the sender and can ensure that the recipient gets the complete target amount.
The following describes the fields of the quote response that may be useful when building your integration.
The payOut
field is used to select the correct entry in the paymentOptions
array in order to know which fees to display to your customer. Find the paymentOption that matches the payOut
field shown at the top level of the quote resource and payIn
based on the settlement model the bank is using. By default this is BANK_TRANSFER
, unless you are using a prefunded or bulk settlement model. The payOut
field will change based on the type of recipient you add to the quote in the PATCH /quote
call, for example to-USD swift_code
or to-CAD interac
have different fees.
For example sending USD to a country other than the United States is supported but with different fees to domestic USD transfers. Please see the later section on Global Currencies to learn more about how to offer this useful feature.
For each paymentOption there is a price field. It gives a full breakdown of all the taxes, fees and discounts. It is preferable to refer to this structure to show breakdowns and totals, rather than the fee structre, found as well in each paymentOption element, that only gives a summary and is not able to surface important specifics such as taxes.
When showing the price of a transfer always show the 'price.total.value.amount' of a payment option.
Each payment option is either enabled or disabled based on the disabled
value. Disabled payment options should be shown to the user in a disabled state in most cases. This ensures users are given the options that they are familiar with regardless of their availability, as well as with options that can be beneficial to their accounts.
The option.disabledReason
contains both the code
and message
, with the message being the user-friendly text to surface to the user if necessary.
The option.estimatedDeliveryDelays
contains the reason
of the delay in a string format.
Field | Description | Format |
---|---|---|
id | ID of this quote (GUID format). | Text |
sourceCurrency | Source (sending) currency code. | Text |
targetCurrency | Target (receive) currency code. | Text |
sourceAmount | Amount in source currency to send. | Decimal |
targetAmount | Amount in target currency to be received by the recipient. | Decimal |
payOut | Mechanism we use to deliver the transfer. Not usually of interest to the user. | Text |
rate | Exchange rate value used for the conversion. | Decimal |
createdTime | Quote created timestamp. | Timestamp |
user | User ID who created the quote. | Integer |
profile | Personal or business profile id. | Integer |
rateExpirationTime | Time the locked rate will expire. | Timestamp |
providedAmountType | Whether the quote was created as "SOURCE" or "TARGET". | Text |
paymentOptions | List of the methods a user can pay for the transfer. See above for help on choosing the correct one to display. | [PaymentOption] |
option.disabled | Whether this option is enabled or not for this quote. | Boolean |
option.estimatedDelivery | The estimated delivery time for this combination of payIn and payOut methods, assuming payIn is performed now. | Timestamp |
option.formattedEstimatedDelivery | A string to display to users for the estimated delivery date. | Text |
option.estimatedDeliveryDelays | Array of object with reason for delivery delays to display to users. | [EstimatedDeliveryDelays] |
option.estimatedDeliveryDelays.reason | Reason of delay | |
option.fee | Object containing fee information. | Fee |
option.fee.transferwise | The fee to be paid by the sender based on the current state of the quote. | Decimal |
option.fee.payIn | The fee for this payment option, based on the product type of the payment option. | Decimal |
option.fee.discount | Any discounts that have been applied to this quote for the user. | Decimal |
option.fee.partner | If you have agreed a custom price, it will be displayed here. | Decimal |
option.fee.total | The total fees to be paid - use this figure when displaying fees on your app. | Decimal |
option.price | Object containing the price information. | Price |
option.price.priceSetId | Id if the price structure. | Integer |
option.price.total | The total fees to be paid - use this figure when displaying fees on your app. | Total |
option.price.total.id | ID of this structure. | Integer |
option.price.total.type | Type of the pricing element - "TOTAL" in this case. | Text |
option.price.total.label | Short text describing the price structure this field is nested in. | Text |
option.price.total.value | Object containing value elements. | Value |
option.price.total.value.amount | Amount to be paid. | Decimal |
option.price.total.value.currency | Currency of the amount to be paid. | Text |
option.price.total.value.label | Text version of the price. | Text |
option.price.total.explanation | Text element giving more details about the price. | Text |
option.price.items | Object containing the detals of the different elements of the total price. | List |
option.price.items.id | Id of this item. | Integer |
option.price.items.type | Type of the pricing item. It could be "DISCOUNT" for example. | Text |
option.price.items.label | Short text describing the pricing element. | Text |
option.price.items.value | Object containing value elements. | Value |
option.price.items.value.amount | Amount associated to this pricing element. Can be negative for discounts. | Decimal |
option.price.items.value.currency | Currency on the pricing element. | Text |
option.price.items.value.label | Text feild containing the price and its currency. | Text |
option.price.items.explanation | Text element giving more details about the item. | Text |
option.sourceAmount | sourceAmount when using this payment option. | Decimal |
option.targetAmount | targetAmount when using this payment option. | Decimal |
option.payIn | Type of pay in method for this payment option. | Text |
option.payOut | Type of pay out method for this payment option. | Text |
option.allowedProfileTypes | Array of the allowed types of profile to use this payment option for this quote "PERSONAL", "BUSINESS" or both. | [Text] |
option.disabledReason | Object present if a payment option is disabled. | Disabled Reason |
option.disabledReason.code | Code to denote the reason a payment method is unavailable. | Text |
option.disabledReason.message | User friendly message to display when a method is unavailable. | Text |
status | Current status of this quote, one of: "PENDING", "ACCEPTED", "FUNDED" or "EXPIRED". | Text |
expirationTime | The time the quote expires. | Timestamp |
notices | Array of messages to display to the user in case of useful information based on their selections. May be empty ([] ) if there are no messages. |
[QuoteNotice] |
notice.text | The message to display. | Text |
notice.link | URL that provides more information to the message. May be null if there's no URL. |
Text |
notice.type | Type of message, WARNING or INFO or BLOCKED . If it is BLOCKED , don't allow the quote to be used to create the transfer. |
Text |
Example Request:
curl -X PATCH \
https://api.sandbox.transferwise.tech/v3/profiles/101/quotes/11144c35-9fe8-4c32-b7fd-d05c2a7734bf \
-H 'Authorization: Bearer <your api token>' \
-H 'Content-Type: application/merge-patch+json' \
-d '{
"targetAccount": 12345,
"payOut": "SWIFT_OUR"
}'
Field | Description | Format |
---|---|---|
targetAccount | ID of transfer recipient, found in response from POST v1/accounts (recipient creation) | Integer |
payOut | Optional. Preferred payout method. Default value is BANK_TRANSFER . Other possible values are BALANCE , SWIFT , SWIFT_OUR and INTERAC . |
Text |
Example Response:
{
"id": "11144c35-9fe8-4c32-b7fd-d05c2a7734bf",
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"sourceAmount": 100,
"payOut": "BANK_TRANSFER",
"rate": 1.30445,
"createdTime": "2019-04-05T13:18:58Z",
"user": 55,
"profile": 101,
"rateType": "FIXED",
"rateExpirationTime": "2019-04-08T13:18:57Z",
"guaranteedTargetAmountAllowed": true,
"targetAmountAllowed": true,
"guaranteedTargetAmount": false,
"providedAmountType": "SOURCE",
"targetAccount": 12345,
"paymentOptions": [
{
"disabled": false,
"estimatedDelivery": "2019-04-08T12:30:00Z",
"formattedEstimatedDelivery": "by Apr 8",
"estimatedDeliveryDelays": [
{
"reason": "sample reason"
}
],
"fee": {
"transferwise": 3.04,
"payIn": 0,
"discount": 2.27,
"partner": 0,
"total": 0.77
},
"price": {
"priceSetId": 238,
"total": {
"type": "TOTAL",
"label": "Total fees",
"value": {
"amount": 0.77,
"currency": "GBP",
"label:": "0.77 GBP"
}
},
"items": [
{
"type": "FEE",
"label": "fee",
"value": {
"amount": 0,
"currency": "GBP",
"label": "0 GBP"
}
},
{
"type": "TRANSFERWISE",
"label": "Our fee",
"value": {
"amount": 3.04,
"currency": "GBP",
"label": "3.04 GBP"
}
},
{
"type": "DISCOUNT",
"value": {
"amount": -2.27,
"currency": "GBP",
"label": "2.27 GBP"
},
"label": "Discount applied",
"explanation": {
"plainText": "You can have a discount for a number of reasons..."
}
}
]
},
"sourceAmount": 100,
"targetAmount": 129.24,
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"payIn": "BANK_TRANSFER",
"payOut": "BANK_TRANSFER",
"allowedProfileTypes": [
"PERSONAL",
"BUSINESS"
],
"payInProduct": "CHEAP",
"feePercentage": 0.0092
},
{
"disabled": true,
"estimatedDelivery": null,
"formattedEstimatedDelivery": null,
"estimatedDeliveryDelays": [],
"fee": {
"transferwise": 3.04,
"payIn": 0,
"discount": 0,
"partner": 0,
"total": 3.04
},
"price": {
"priceSetId": 238,
"total": {
"type": "TOTAL",
"label": "Total fees",
"value": {
"amount": 3.04,
"currency": "GBP",
"label:": "3.04 GBP"
}
},
"items": [
{
"type": "FEE",
"label": "fee",
"value": {
"amount": 0,
"currency": "GBP",
"label": "0 GBP"
}
},
{
"type": "TRANSFERWISE",
"label": "Our fee",
"value": {
"amount": 3.04,
"currency": "GBP",
"label": "3.04 GBP"
}
}
]
},
"sourceAmount": 100,
"targetAmount": 129,
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"payIn": "BALANCE",
"payOut": "BANK_TRANSFER",
"allowedProfileTypes": [
"PERSONAL",
"BUSINESS"
],
"disabledReason": {
"code": "error.payInmethod.disabled",
"message": "Open a multi-currency account and add funds to instantly pay for your transfers."
},
"payInProduct": "BALANCE",
"feePercentage": 0.0111
}
],
"status": "PENDING",
"expirationTime": "2019-04-05T13:48:58Z",
"notices": []
}
You should update a quote using a PATCH
call to add a recipient. This will update the saved quote's data based on who and where the money will be sent to.
Updating the quote with a recipient may cause the available payment options, prices and estimated delivery times to change from the original quoted amounts. This is due to the fact that sending some currencies to some destinations costs a different amount based on the payment networks we use, for example sending USD to a country outside the USA uses international rather than domestic payment networks and as such costs more, or sending CAD over the Interac network is a more expensive operation.
When updating a quote the payOut
field may change to denote the payment option you should select when sending to this recipient. For example sending USD to a swift_code
recipient or CAD to an interac
recipient with change payOut
to SWIFT
or INTERAC
respectively. This field defaults to BANK_TRANSFER
so it can be used in all cases to help select the correct paymentOption
and hence show the correct pricing to users.
If you want to provide more transparency in terms of fees charged when your customers create quote with swift recipient for global currencies, you might consider to set payOut field with SWIFT_OUR value. This will ensure that the recipient receives complete target amount.
In this case, where pricing changes after a user selects recipient, you should show a message to your customer before confirming the transfer. Please see the section on Global Currencies to learn more how and why this works and the messaging you need to display.
PATCH https://api.sandbox.transferwise.tech/v3/profiles/{profileId}/quotes/{quoteId}
Example Request:
curl -X GET https://api.sandbox.transferwise.tech/v3/profiles/{profileId}/quotes/{quoteId} \
-H "Authorization: Bearer <your api token>"
Example Response:
{
"id": "11144c35-9fe8-4c32-b7fd-d05c2a7734bf",
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"sourceAmount": 100,
"payOut": "BANK_TRANSFER",
"rate": 1.30445,
"createdTime": "2019-04-05T13:18:58Z",
"user": 55,
"profile": 101,
"rateType": "FIXED",
"rateExpirationTime": "2019-04-08T13:18:57Z",
"guaranteedTargetAmountAllowed": true,
"targetAmountAllowed": true,
"guaranteedTargetAmount": false,
"providedAmountType": "SOURCE",
"paymentOptions": [
{
"disabled": false,
"estimatedDelivery": "2019-04-08T12:30:00Z",
"formattedEstimatedDelivery": "by Apr 8",
"estimatedDeliveryDelays": [
{
"reason": "sample reason"
}
],
"fee": {
"transferwise": 3.04,
"payIn": 0,
"discount": 2.27,
"partner": 0,
"total": 0.77
},
"price": {
"priceSetId": 238,
"total": {
"type": "TOTAL",
"label": "Total fees",
"value": {
"amount": 0.77,
"currency": "GBP",
"label:": "0.77 GBP"
}
},
"items": [
{
"type": "FEE",
"label": "fee",
"value": {
"amount": 0,
"currency": "GBP",
"label": "0 GBP"
}
},
{
"type": "TRANSFERWISE",
"label": "Our fee",
"value": {
"amount": 3.04,
"currency": "GBP",
"label": "3.04 GBP"
}
},
{
"type": "DISCOUNT",
"value": {
"amount": -2.27,
"currency": "GBP",
"label": "2.27 GBP"
},
"label": "Discount applied",
"explanation": {
"plainText": "You can have a discount for a number of reasons..."
}
}
]
},
"sourceAmount": 100,
"targetAmount": 129.24,
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"payIn": "BANK_TRANSFER",
"payOut": "BANK_TRANSFER",
"allowedProfileTypes": [
"PERSONAL",
"BUSINESS"
],
"payInProduct": "CHEAP",
"feePercentage": 0.0092
},
{
"disabled": true,
"estimatedDelivery": null,
"formattedEstimatedDelivery": null,
"estimatedDeliveryDelays": [],
"fee": {
"transferwise": 3.04,
"payIn": 0,
"discount": 0,
"partner": 0,
"total": 3.04
},
"price": {
"priceSetId": 238,
"total": {
"type": "TOTAL",
"label": "Total fees",
"value": {
"amount": 3.04,
"currency": "GBP",
"label:": "3.04 GBP"
}
},
"items": [
{
"type": "FEE",
"label": "fee",
"value": {
"amount": 0,
"currency": "GBP",
"label": "0 GBP"
}
},
{
"type": "TRANSFERWISE",
"label": "Our fee",
"value": {
"amount": 3.04,
"currency": "GBP",
"label": "3.04 GBP"
}
}
]
},
"sourceAmount": 100,
"targetAmount": 129,
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"payIn": "BALANCE",
"payOut": "BANK_TRANSFER",
"allowedProfileTypes": [
"PERSONAL",
"BUSINESS"
],
"disabledReason": {
"code": "error.payInmethod.disabled",
"message": "Open a multi-currency account and add funds to instantly pay for your transfers."
},
"payInProduct": "BALANCE",
"feePercentage": 0.0111
}
],
"status": "PENDING",
"expirationTime": "2019-04-05T13:48:58Z",
"notices": [{
"text": "You can have a maximum of 3 open transfers with a guaranteed rate. After that, they'll be transferred using the live rate. Complete or cancel your other transfers to regain the use of guaranteed rate.",
"link": null,
"type": "WARNING"
}]
}
Get quote info by id.
GET https://api.sandbox.transferwise.tech/v3/profiles/{profileId}/quotes/{quoteId}
Use this endpoint to get example quotes for people to see the exchange rate and fees Wise offers before a user has created or linked an account. This can drive a version of the quote screen that shows the user what Wise offers before they sign up. Note that this endpoint does not require a token to create the resource, however, since it is just an example, the returned quote has no ID so can't be used later to create a transfer.
In order to get an accurate partner fee, we require a client credentials token to be provided. If you are a partner and would like your fee to be included in the quote returned, you must provide your auth token. If not, you do not require the Authorization header.
Example Request:
curl -X POST \
https://api.transferwise.com/v3/quotes/ \
-H "Authorization: Bearer <your client credentials token>"
-H 'Content-type: application/json' \
-d '{
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"sourceAmount": null,
"targetAmount": 110
}'
Example Response:
{
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"targetAmount": 110,
"payOut": "BANK_TRANSFER",
"rate": 1.30745,
"createdTime": "2019-04-09T11:46:38Z",
"rateType": "FIXED",
"guaranteedTargetAmountAllowed": true,
"targetAmountAllowed": true,
"guaranteedTargetAmount": false,
"providedAmountType": "TARGET",
"paymentOptions": [
{
"disabled": false,
"estimatedDelivery": "2019-04-08T12:30:00Z",
"formattedEstimatedDelivery": "by Apr 8",
"estimatedDeliveryDelays": [
{
"reason": "sample reason"
}
],
"fee": {
"transferwise": 3.04,
"payIn": 0,
"discount": 2.27,
"partner": 0,
"total": 0.77
},
"price": {
"priceSetId": 238,
"total": {
"type": "TOTAL",
"label": "Total fees",
"value": {
"amount": 0.77,
"currency": "GBP",
"label:": "0.77 GBP"
}
},
"items": [
{
"type": "FEE",
"label": "fee",
"value": {
"amount": 0,
"currency": "GBP",
"label": "0 GBP"
}
},
{
"type": "TRANSFERWISE",
"label": "Our fee",
"value": {
"amount": 3.04,
"currency": "GBP",
"label": "3.04 GBP"
}
},
{
"type": "DISCOUNT",
"value": {
"amount": -2.27,
"currency": "GBP",
"label": "2.27 GBP"
},
"label": "Discount applied",
"explanation": {
"plainText": "You can have a discount for a number of reasons..."
}
}
]
},
"sourceAmount": 100,
"targetAmount": 129.24,
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"payIn": "BANK_TRANSFER",
"payOut": "BANK_TRANSFER",
"allowedProfileTypes": [
"PERSONAL",
"BUSINESS"
],
"payInProduct": "CHEAP",
"feePercentage": 0.0092
},
{
"disabled": true,
"estimatedDelivery": null,
"formattedEstimatedDelivery": null,
"estimatedDeliveryDelays": [],
"fee": {
"transferwise": 3.04,
"payIn": 0,
"discount": 0,
"partner": 0,
"total": 3.04
},
"price": {
"priceSetId": 238,
"total": {
"type": "TOTAL",
"label": "Total fees",
"value": {
"amount": 3.04,
"currency": "GBP",
"label:": "3.04 GBP"
}
},
"items": [
{
"type": "FEE",
"label": "fee",
"value": {
"amount": 0,
"currency": "GBP",
"label": "0 GBP"
}
},
{
"type": "TRANSFERWISE",
"label": "Our fee",
"value": {
"amount": 3.04,
"currency": "GBP",
"label": "3.04 GBP"
}
}
]
},
"sourceAmount": 85.28,
"targetAmount": 110,
"sourceCurrency": "GBP",
"targetCurrency": "USD",
"payIn": "BALANCE",
"payOut": "BANK_TRANSFER",
"allowedProfileTypes": [
"PERSONAL",
"BUSINESS"
],
"disabledReason": {
"code": "error.payInmethod.disabled",
"message": "Open a multi-currency account and add funds to instantly pay for your transfers."
},
"payInProduct": "BALANCE",
"feePercentage": 0.0135
}
],
"notices": []
}
POST https://api.sandbox.transferwise.tech/v3/quotes/
Field | Description | Format |
---|---|---|
sourceCurrency | Source (sending) currency code | Text |
targetCurrency | Target (receiving) currency code | Text |
sourceAmount | Amount in source currency. Either sourceAmount or targetAmount is required, never both. |
Decimal |
targetAmount | Amount in target currency | Decimal |
See Create quote's response field information.