Skip to content

Standard Transfers

Create and manage transfers over API, either from your own Wise account or on behalf of your customers.

Create a transfer

Request

Create a transfer to a recipient account based on a quote.

Some fields are conditionally required depending on the currency route and transfer amount. Always call the transfer requirements endpoint to determine which fields are needed, and submit values accordingly. These requirements may change over time.

Avoiding duplicate transfers

The customerTransactionId field is used to avoid duplicate transfer requests. If your initial call to create a transfer fails (error or timeout), retry the call using the same customerTransactionId value. Subsequent retry messages are treated as repeat messages and will not create duplicate transfers. Use a sensible retry limit, ideally with a back-off approach.

Payment Approvals

Business Payment Approvals created on your wise.com settings page are not compatible with creating transfers over the API.

If you use personal tokens and do not use client credentials, and if your business account has payment approvals, your application will receive this error when attempting to create a transfer: Quote cannot be accepted with this request due to missing approval.

Consider removing the payment rule if you are going to use the API to create transfers.

Security
UserToken or PersonalToken
Headers
X-External-Correlation-Idstring, (uuid), <= 36 characters

Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Example:f47ac10b-58cc-4372-a567-0e02b2c3d479
Bodyapplication/jsonrequired
sourceAccountinteger, (int64)

Refund recipient account ID

targetAccountinteger, (int64)required

Recipient account ID. You can create multiple transfers to same recipient account

quoteUuidstring, (uuid)required

V2 quote ID. You can only create one transfer per one quote. You cannot use same quote ID to create multiple transfers

customerTransactionIdstring, (uuid)required

Required to perform idempotency check to avoid duplicate transfers in case of network failures or timeouts

detailsobject
curl -i -X POST \
  https://api.wise.com/2026Q3/transfers \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-External-Correlation-Id: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
  -d '{
    "targetAccount": 8692237,
    "quoteUuid": "8fa9be20-ba43-4b15-abbb-9424e1481050",
    "customerTransactionId": "54a6bc09-cef9-49a8-9041-f1f0c654cd88",
    "details": {
      "reference": "Invoice 2026-001"
    }
  }'

Responses

Transfer successfully created.

Headers
X-External-Correlation-Idstring, (uuid), <= 36 characters

Echoed back when X-External-Correlation-Id was included in the request. Learn more.

Example:"f47ac10b-58cc-4372-a567-0e02b2c3d479"
x-trace-idstring

Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.

Example:"fba501b6d453b96789f52338f019341f"
Bodyapplication/json
idinteger, (int64)

Transfer ID

Example:16521632
userinteger, (int64)

Your user ID

Example:4342275
targetAccountinteger, (int64)

Recipient account ID

Example:8692237
sourceAccountinteger or null, (int64)

Refund recipient account ID

Example:null
quoteinteger or null, (int64)

V1 quote ID

Example:null
quoteUuidstring, (uuid)

V2 quote ID

Example:"8fa9be20-ba43-4b15-abbb-9424e1481050"
statusstring

Transfer current status. See Tracking Transfers for all possible statuses.

Example:"incoming_payment_waiting"
ratenumber

Exchange rate value

Example:0.89
createdstring, (date-time)

Timestamp when transfer was created

Example:"2017-11-24 10:47:49"
businessinteger or null, (int64)

Your business profile ID

Example:null
detailsobject
hasActiveIssuesboolean

Are there any pending issues which stop executing the transfer?

Example:false
sourceCurrencystring

Source currency code

Example:"EUR"
sourceValuenumber

Transfer amount in source currency

Example:0
targetCurrencystring

Target currency code

Example:"GBP"
targetValuenumber

Transfer amount in target currency

Example:150
customerTransactionIdstring, (uuid)

Unique identifier randomly generated per transfer request by the calling client

Example:"54a6bc09-cef9-49a8-9041-f1f0c654cd88"
payinSessionIdstring, (uuid)

ID of the Payin Session generated for the transfer, which can be used for certain payin methods when funding the transfer

Example:"23330542-8e9e-419f-95eb-312b880f92ad"
referencestringdeprecated

Deprecated, use details.reference instead

Example:"reference text"
transferRequestinteger or nulldeprecated

Deprecated

Example:null
Response
{ "id": 16521632, "user": 4342275, "targetAccount": 8692237, "sourceAccount": null, "quote": null, "quoteUuid": "8fa9be20-ba43-4b15-abbb-9424e1481050", "status": "incoming_payment_waiting", "reference": "reference text", "rate": 0.89, "created": "2017-11-24 10:47:49", "business": null, "transferRequest": null, "details": { "reference": "Testing" }, "hasActiveIssues": false, "sourceCurrency": "EUR", "sourceValue": 0, "targetCurrency": "GBP", "targetValue": 150, "customerTransactionId": "54a6bc09-cef9-49a8-9041-f1f0c654cd88", "payinSessionId": "23330542-8e9e-419f-95eb-312b880f92ad" }