API

Transfer

A transfer: create, list, get or cancel one, and its receipts and payout information.

Operations

Every route this entity exposes. Each route links to its own reference on this page.

Method Route SDK operation Returns
POST /transfers create Transfer successfully created
GET /transfers list Returns an array of transfer objects, with or without an originator block depending on the type of each transfer
GET /transfers/{transferId} load Returns the transfer object, with or without an originator block depending on the type of transfer
GET /transfers/{transferId}/documents/noc load Non objection certificate in PDF format
GET /transfers/{transferId}/invoices/bankingpartner load Returns payout information for the transfer
GET /transfers/{transferId}/receipt.pdf load Transfer confirmation receipt in Wise branded PDF format
GET /transfers/{transferId}/us-combined-receipt.pdf load The US Combined Receipt in Wise branded PDF format
PUT /transfers/{transferId}/cancel update Returns the transfer object with status set to cancelled. If the original transfer was a third-party transfer, the response includes the originator object

Examples

One example per SDK, generated from the API model. The argument names are the parameters and fields of this entity, and the values are placeholders. The examples are not compiled or executed.

Golang

Construct client as shown in the Golang setup, then call the operations:

transfers, err := client.Transfer(nil).List(nil, nil)
if err != nil {
    panic(err)
}
fmt.Println(transfers)
transfer, err := client.Transfer(nil).Load(map[string]any{"id": 1}, nil)
if err != nil {
    panic(err)
}
fmt.Println(transfer)
created, err := client.Transfer(nil).Create(map[string]any{"customerTransactionId": "example", "quoteUuid": "example", "targetAccount": 1}, nil)
if err != nil {
    panic(err)
}
fmt.Println(created)
updated, err := client.Transfer(nil).Update(map[string]any{"id": 1, "business": 1, "created": "example"}, nil)
if err != nil {
    panic(err)
}
fmt.Println(updated)

Lua

Construct client as shown in the Lua setup, then call the operations:

local transfers, err = client:Transfer():list()
local transfer, err = client:Transfer():load({ id = 1 })
local created, err = client:Transfer():create({ customerTransactionId = "example", quoteUuid = "example", targetAccount = 1 })
local updated, err = client:Transfer():update({ id = 1, business = 1, created = "example" })

PHP

Construct client as shown in the PHP setup, then call the operations:

$transfers = $client->Transfer()->list();
$transfer = $client->Transfer()->load(["id" => 1]);
$created = $client->Transfer()->create(["customerTransactionId" => "example", "quoteUuid" => "example", "targetAccount" => 1]);
$updated = $client->Transfer()->update(["id" => 1, "business" => 1, "created" => "example"]);

Python

Construct client as shown in the Python setup, then call the operations:

transfers = client.Transfer().list()
transfer = client.Transfer().load({"id": 1})
created = client.Transfer().create({ "customerTransactionId": "example", "quoteUuid": "example", "targetAccount": 1 })
updated = client.Transfer().update({"id": 1, "business": 1, "created": "example"})

Ruby

Construct client as shown in the Ruby setup, then call the operations:

transfers = client.Transfer.list()
transfer = client.Transfer.load({ "id" => 1 })
created = client.Transfer.create({ "customerTransactionId" => "example", "quoteUuid" => "example", "targetAccount" => 1 })
updated = client.Transfer.update({ "id" => 1, "business" => 1, "created" => "example" })

TypeScript

Construct client as shown in the TypeScript setup, then call the operations:

const transfers = await client.Transfer().list()
const transfer = await client.Transfer().load({ id: 1 })
const created = await client.Transfer().create({ customerTransactionId: "example", quoteUuid: "example", targetAccount: 1 })
const updated = await client.Transfer().update({ id: 1, business: 1, created: "example" })

Fields

Field Type Required Description
business one,integer,null No Your business profile ID
created string No Timestamp when transfer was created
customerTransactionId string No Unique identifier randomly generated per transfer request by the calling client
details object No Details
hasActiveIssues boolean No Are there any pending issues which stop executing the transfer?
id integer No Transfer ID
payinSessionId string No ID of the Payin Session generated for the transfer, which can be used for certain payin methods when funding the transfer
quote one,integer,null No V1 quote ID
quoteUuid string No V2 quote ID
rate number No Exchange rate value
reference string No Deprecated, use details.reference instead
sourceAccount one,integer,null No Refund recipient account ID
sourceCurrency string No Source currency code
sourceValue number No Transfer amount in source currency
status string No Transfer current status.
targetAccount integer No Recipient account ID
targetCurrency string No Target currency code
targetValue number No Transfer amount in target currency
transferRequest one,integer,null No Deprecated
user integer No Your user ID

create

POST /transfers

Operation ID: transferCreate.

Authentication: bearer token (UserToken) or bearer token (PersonalToken).

Parameters

Parameter In Type Required Description
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
customerTransactionId string (uuid) Yes Required to perform idempotency check to avoid duplicate transfers in case of network failures or timeouts
details object No
details.reference string No Recipient will see this reference text in their bank statement. Maximum allowed characters depends on the currency route. See Business Payments Tips for a full list
details.sourceOfFunds string No Conditionally required. For example when target currency is USD and transfer amount exceeds 80k. See Transfer Requirements for conditions
details.transferPurpose string No Conditionally required. For example when target currency is THB. See Transfer Requirements for conditions
details.transferPurposeInvoiceNumber string No Conditionally required. For example when target currency is INR. See Transfer Requirements for conditions
details.transferPurposeSubTransferPurpose string No Conditionally required. For example when target currency is CNY. See Transfer Requirements for conditions
quoteUuid string (uuid) Yes V2 quote ID. You can only create one transfer per one quote. You cannot use same quote ID to create multiple transfers
sourceAccount integer (int64) No Refund recipient account ID
targetAccount integer (int64) Yes Recipient account ID. You can create multiple transfers to same recipient account

Responses

200: Transfer successfully created

application/json

Property Type Required Description
business integer,null (int64) No Your business profile ID
created string (date-time) No Timestamp when transfer was created
customerTransactionId string (uuid) No Unique identifier randomly generated per transfer request by the calling client
details object No
details.reference string No Payment reference text
hasActiveIssues boolean No Are there any pending issues which stop executing the transfer?
id integer (int64) No Transfer ID
payinSessionId string (uuid) No ID of the Payin Session generated for the transfer, which can be used for certain payin methods when funding the transfer
quote integer,null (int64) No V1 quote ID
quoteUuid string (uuid) No V2 quote ID
rate number No Exchange rate value
reference string No Deprecated, use details.reference instead
sourceAccount integer,null (int64) No Refund recipient account ID
sourceCurrency string No Source currency code
sourceValue number No Transfer amount in source currency
status string No Transfer current status. See Transfer statuses for all possible statuses.
targetAccount integer (int64) No Recipient account ID
targetCurrency string No Target currency code
targetValue number No Transfer amount in target currency
transferRequest integer,null No Deprecated
user integer (int64) No Your user ID
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

list

GET /transfers

Operation ID: transferList.

Authentication: bearer token (UserToken) or bearer token (PersonalToken).

Parameters

Parameter In Type Required Description
profile query integer (int64) No User profile ID. If parameter is omitted, defaults to user's personal profile
status query string No Comma separated list of one or more status codes to filter transfers. See Transfer statuses for complete list of statuses.
sourceCurrency query string No Source currency code
targetCurrency query string No Target currency code
createdDateStart query string (date-time) No Starting date to filter transfers, inclusive of the provided date
createdDateEnd query string (date-time) No Ending date to filter transfers, inclusive of the provided date
limit query integer (int32) No Maximum number of records to be returned in response
offset query integer (int32) No Starting record number
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: Returns an array of transfer objects, with or without an originator block depending on the type of each transfer

application/json

The response is array of object or object.

429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

load

GET /transfers/{transferId}

Operation ID: transferGet.

Authentication: bearer token (UserToken) or bearer token (PersonalToken).

Parameters

Parameter In Type Required Description
transferId path integer (int64) Yes The transfer ID
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: Returns the transfer object, with or without an originator block depending on the type of transfer

application/json

The response is object or object.

404: Transfer not found
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

GET /transfers/{transferId}/documents/noc

Operation ID: transferNocGet.

Authentication: bearer token (UserToken) or bearer token (PersonalToken).

Parameters

Parameter In Type Required Description
transferId path integer (int64) Yes The transfer ID
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: Non objection certificate in PDF format

application/pdf

The response is string (binary).

404: Transfer not found
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

GET /transfers/{transferId}/invoices/bankingpartner

Operation ID: transferPayoutInfoGet.

Authentication: bearer token (UserToken) or bearer token (PersonalToken).

Parameters

Parameter In Type Required Description
transferId path integer (int64) Yes The transfer ID
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: Returns payout information for the transfer

application/json

Property Type Required Description
bankingPartnerName string No The name of the sending bank to the recipient's bank
bankingPartnerReference string No The reference used by the partner bank to identify and track the transfer
deliveryMode string No The delivery mode for the payment (for example SWIFT)
mt103 string,null No The MT103 of the transfer, if available
processorName string No The legal entity that processed the transfer on behalf of the customer

Example response:

{
  "bankingPartnerName": "Global Bank Corp.",
  "bankingPartnerReference": "ABCD1234",
  "deliveryMode": "SWIFT",
  "mt103": "{1:F01XXXXGBXXAXXX0000000000}{2:I103XXXXGBXXXXXXN}{3:{108:1234567}{111:001}{121:00000000-0000-0000-0000-000000000000}}{4:\n:20:1234567\n:23B:CRED\n:32A:221212USD12345,\n:33B:USD12345,\n:50K:/11111111\nSOME COMPANY INC.\n1 SOME STREET MIAMI 33132 US\n:59:/GB00000000000000\nCOMPANY NAME LTD\nUK LONDON 1234 GB\n:70:REFERENCE\n:71A:OUR\n:71G:USD11,\n-}\n",
  "processorName": "Acme Bank Ltd."
}
404: Transfer not found (this error can also occur if querying the endpoint before the transfer has finished processing)
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

GET /transfers/{transferId}/receipt.pdf

Operation ID: transferReceiptGet.

Authentication: bearer token (UserToken) or bearer token (PersonalToken).

Parameters

Parameter In Type Required Description
transferId path integer (int64) Yes The transfer ID
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: Transfer confirmation receipt in Wise branded PDF format

application/pdf

The response is string (binary).

404: Transfer not found
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

GET /transfers/{transferId}/us-combined-receipt.pdf

Operation ID: transferUsCombinedReceiptGet.

Authentication: bearer token (UserToken) or bearer token (PersonalToken).

Parameters

Parameter In Type Required Description
transferId path integer (int64) Yes The transfer ID
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: The US Combined Receipt in Wise branded PDF format

application/pdf

The response is string (binary).

404: Transfer not found
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

update

PUT /transfers/{transferId}/cancel

Operation ID: transferCancel.

Authentication: bearer token (UserToken) or bearer token (PersonalToken).

Parameters

Parameter In Type Required Description
transferId path integer (int64) Yes The transfer ID
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: Returns the transfer object with status set to cancelled. If the original transfer was a third-party transfer, the response includes the originator object

application/json

The response is object or object.

404: Transfer not found
409: Transfer cannot be cancelled because it is in a non-cancellable state or has other restrictions. The error response includes the code transfer.cancellation.not.allowed
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.