Skip to content

Wise Platform API

The Wise Platform API is a REST-based interface that enables programmatic access to Wise's payment infrastructure. All endpoints return JSON-formatted responses and use standard HTTP methods and status codes.

New to wise?

We strongly recommend first reading our Getting Started Guide to help you set up credentials and make your first call.

Before you begin

To use this API reference effectively, you should have:

  • Received Valid API credentials from Wise (Client ID and Client Secret)
  • Understand OAuth 2.0 authentication
  • Be familiar with RESTful API concepts

Core API resources

ResourcePurpose
QuoteExchange rate and fee calculations
RecipientBeneficiary account management
TransferPayment creation and execution
BalanceMulti-currency account operations
ProfileAccount ownership details
RateCurrent and historical exchange rates

Not sure which workflow to build?
Start with our Integration Guides for step-by-step implementation examples.

Languages
Servers
Production Environment
https://api.wise.com/
Sandbox Environment
https://api.wise-sandbox.com/

3D Secure Authentication

To manage certain aspects of the 3D Secure (3DS) authentication, you will need to integrate with the following APIs.

Operations

Activity

Activity represents a snapshot of a performed action for a profile.

Operations

Additional Customer Verification

In certain situations, additional evidence is required to verify customers and ensure we’re compliant with the KYC regulations.

Additional Verification APIs support a list of evidences that can be found in the Supported Evidences guide.

If you use the Customer Account with Partner KYC model and your customers are primarily based in the EU, refer to this Onboarding EU customers guide for instructions on how to use these APIs.

If you use the Customer Account with Partner KYC model and you are onboarding high risk business customers based primarily based in the US, refer to this Onboarding High Risk US Businesses guide for instructions on how to use these APIs.

Operations

Address

Manage physical addresses associated with user profiles.

Address requirements vary by country — use the address requirements endpoints to dynamically discover which fields are needed before creating an address.

SchemasOperations

Balance

Create and manage balance accounts within a multi-currency account.

Each profile can hold multiple balance accounts in different currencies. A STANDARD balance is limited to one per currency, while SAVINGS balances (Jars) allow multiple in the same currency. Creating the first balance for a profile automatically creates the multi-currency account.

Balances include an investmentState field. Only balances with NOT_INVESTED can be operated on via the API. Invested balances should be shown but not actionable.

For a complete guide on multi-currency accounts, see Multi-Currency Accounts.

SchemasOperations

Balance Statement

Balance statements contain transactional activities on a Wise Multi-Currency Account, including deposits, withdrawals, conversions, card transactions, and fees.

Statements can be retrieved in multiple formats: JSON, CSV, PDF, XLSX, CAMT.053, MT940, or QIF.

Operations

Bank Account Details

Bank account details allow users to receive money into their Wise Multi-Currency Account. Each currency balance can have local bank details (for domestic payments) and international bank details (for SWIFT payments) where available.

Bank account details can be retrieved for existing balances, or new details can be ordered for currencies where they're available but not yet issued.

SchemasOperations

Batch Group

A batch group is a named collection of up to 1000 transfers that can be managed as a single unit. Batch groups are primarily used for funding multiple transfers with a single payment.

Workflow:

  1. Create a batch group with a source currency
  2. Add transfers to the group (up to 1000)
  3. Complete the batch group to close it for modifications
  4. Fund the batch group from a balance or via direct debit

Individual transfers in the group follow standard transfer lifecycle and can be tracked separately.

SchemasOperations

Batch Group

idstring(uuid)

Batch group ID.

Example: "54a6bc09-cef9-49a8-9041-f1f0c654cd88"
versioninteger(int64)

Batch version, used for concurrency control. This number is updated whenever there is a change to the batch group state (its status, the identity of the transfers in the batch, etc).

Some API operations require this version in requests, and operations may be rejected when the requested version does not match the server's version.

The version is a signed integer and is not ordered with respect to any previous version.

Example: 123
namestring

Descriptive name for the batch group.

Example: "My batch group"
sourceCurrencystring

Source currency code (ISO 4217 Alphabetic Code). This currency is expected to be used for funding the batch group.

Example: "GBP"
statusstring

Current batch group status:

  • NEW — New batch group with zero or more transfers. Able to have more transfers added to it. Transfers in a NEW group cannot yet be funded and paid out.
  • COMPLETED — The batch group has had all desired transfers added and is now closed to further changes. Transfers in the group can now be funded and paid out. Note: COMPLETED does not imply payouts have been successfully completed.
  • MARKED_FOR_CANCELLATION — Cancellation of the transfers in the batch group was requested.
  • PROCESSING_CANCEL — Transfers in the group are being cancelled.
  • CANCELLED — Transfers in the group have been cancelled.
Enum"NEW""COMPLETED""MARKED_FOR_CANCELLATION""PROCESSING_CANCEL""CANCELLED"
Example: "COMPLETED"
transferIdsArray of integers(int64)

The IDs of all transfers successfully added to the group.

Example: [234,456]
payInDetailsArray of objects

List of pay-in details describing how the batch group can be funded. Provided only when the batch group is in the COMPLETED state.

Currently supported types: bank_transfer.

payInDetails[].​typestring

Method of payment.

Value"bank_transfer"
Example: "bank_transfer"
payInDetails[].​referencestring

The reference that should be used when funding the transfers in the batch group. This reference should be treated as an opaque value and there should be no attempt to decode or decompose it.

Example: "B5323"
payInDetails[].​amountnumber(decimal)

The total pay-in amount for all transactions in the batch when paying in with this reference and method.

Example: 12504.54
payInDetails[].​currencystring

Three-character ISO 4217 currency code.

Example: "NOK"
payInDetails[].​namestring

Name of the bank account holder.

Example: "TransferWise Ltd"
payInDetails[].​branchNamestring or null

Name of the bank branch. Provided only when the currency route requires it (such as JPY).

Example: null
payInDetails[].​accountNumberstring or null

Bank account number.

Example: "9910728"
payInDetails[].​accountTypestring or null

Bank account type. Provided only when the currency route requires it.

Example: null
payInDetails[].​bankCodestring or null

Bank identifier or routing number, depending on pay-in type and currency.

Example: "8301"
payInDetails[].​bankAddressobject or null

Address for the receiving bank. Provided only when the currency route requires it.

payInDetails[].​transferWiseAddressobject or null

Wise's address. Provided only when the currency route requires it.

payInDetails[].​ibanstring or null

ISO 13616 International Bank Account Number (when available).

Example: null
payInDetails[].​bbanstring or null

Basic Bank Account Number (BBAN). Provided only when the currency route requires it (such as NOK).

Example: "83019910728"
payInDetails[].​institutionNumberstring or null

Financial Institution number (3 digits). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​transitNumberstring or null

Branch Transit Number (5 digits). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​beneficiaryBankBICstring or null

Beneficiary Bank Business Identifier Code (BIC). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​intermediaryBankBICstring or null

Intermediary Bank Business Identifier Code (BIC). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​fpsIdentifierstring or null

Faster Payment System identifier. Provided only when the currency route requires it (such as HKD).

Example: null
payInDetails[].​clearingNumberstring or null

Clearing number. Provided only when the currency route requires it (such as SEK).

Example: null
{ "id": "54a6bc09-cef9-49a8-9041-f1f0c654cd88", "version": 123, "name": "My batch group", "sourceCurrency": "GBP", "status": "COMPLETED", "transferIds": [ 234, 456 ], "payInDetails": [ { "type": "bank_transfer", "reference": "B5323", "amount": 12504.54, "currency": "NOK", "name": "TransferWise Ltd", "branchName": null, "accountNumber": "9910728", "accountType": null, "bankCode": "8301", "bankAddress": {}, "transferWiseAddress": {}, "iban": null, "bban": "83019910728", "institutionNumber": null, "transitNumber": null, "beneficiaryBankBIC": null, "intermediaryBankBIC": null, "fpsIdentifier": null, "clearingNumber": null } ] }

Create a batch group

Request

Create a new batch group.

A batch group can hold up to 1000 transfers that will be funded together. After creating the group, add transfers to it, then complete the group to receive pay-in details.

Security
UserToken or PersonalToken
Path
profileIdinteger(int64)required

The ID of the profile to create the batch group for.

Example: 12345678
Bodyapplication/jsonrequired
sourceCurrencystringrequired

Source currency code (ISO 4217 Alphabetic Code). This currency is expected to be used for funding the batch group.

Example: "GBP"
namestringrequired

Descriptive name for display purposes. Recommended to use a name that uniquely represents this batch. Maximum length of 100 characters.

Example: "My batch group"
curl -i -X POST \
  https://api.wise.com/v3/profiles/12345678/batch-groups \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "sourceCurrency": "GBP",
    "name": "My batch group"
  }'

Responses

Batch group created successfully.

Note that payInDetails is empty for newly created batch groups.

Bodyapplication/json
idstring(uuid)

Batch group ID.

Example: "54a6bc09-cef9-49a8-9041-f1f0c654cd88"
versioninteger(int64)

Batch version, used for concurrency control. This number is updated whenever there is a change to the batch group state (its status, the identity of the transfers in the batch, etc).

Some API operations require this version in requests, and operations may be rejected when the requested version does not match the server's version.

The version is a signed integer and is not ordered with respect to any previous version.

Example: 123
namestring

Descriptive name for the batch group.

Example: "My batch group"
sourceCurrencystring

Source currency code (ISO 4217 Alphabetic Code). This currency is expected to be used for funding the batch group.

Example: "GBP"
statusstring

Current batch group status:

  • NEW — New batch group with zero or more transfers. Able to have more transfers added to it. Transfers in a NEW group cannot yet be funded and paid out.
  • COMPLETED — The batch group has had all desired transfers added and is now closed to further changes. Transfers in the group can now be funded and paid out. Note: COMPLETED does not imply payouts have been successfully completed.
  • MARKED_FOR_CANCELLATION — Cancellation of the transfers in the batch group was requested.
  • PROCESSING_CANCEL — Transfers in the group are being cancelled.
  • CANCELLED — Transfers in the group have been cancelled.
Enum"NEW""COMPLETED""MARKED_FOR_CANCELLATION""PROCESSING_CANCEL""CANCELLED"
Example: "COMPLETED"
transferIdsArray of integers(int64)

The IDs of all transfers successfully added to the group.

Example: [234,456]
payInDetailsArray of objects

List of pay-in details describing how the batch group can be funded. Provided only when the batch group is in the COMPLETED state.

Currently supported types: bank_transfer.

payInDetails[].​typestring

Method of payment.

Value"bank_transfer"
Example: "bank_transfer"
payInDetails[].​referencestring

The reference that should be used when funding the transfers in the batch group. This reference should be treated as an opaque value and there should be no attempt to decode or decompose it.

Example: "B5323"
payInDetails[].​amountnumber(decimal)

The total pay-in amount for all transactions in the batch when paying in with this reference and method.

Example: 12504.54
payInDetails[].​currencystring

Three-character ISO 4217 currency code.

Example: "NOK"
payInDetails[].​namestring

Name of the bank account holder.

Example: "TransferWise Ltd"
payInDetails[].​branchNamestring or null

Name of the bank branch. Provided only when the currency route requires it (such as JPY).

Example: null
payInDetails[].​accountNumberstring or null

Bank account number.

Example: "9910728"
payInDetails[].​accountTypestring or null

Bank account type. Provided only when the currency route requires it.

Example: null
payInDetails[].​bankCodestring or null

Bank identifier or routing number, depending on pay-in type and currency.

Example: "8301"
payInDetails[].​bankAddressobject or null

Address for the receiving bank. Provided only when the currency route requires it.

payInDetails[].​transferWiseAddressobject or null

Wise's address. Provided only when the currency route requires it.

payInDetails[].​ibanstring or null

ISO 13616 International Bank Account Number (when available).

Example: null
payInDetails[].​bbanstring or null

Basic Bank Account Number (BBAN). Provided only when the currency route requires it (such as NOK).

Example: "83019910728"
payInDetails[].​institutionNumberstring or null

Financial Institution number (3 digits). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​transitNumberstring or null

Branch Transit Number (5 digits). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​beneficiaryBankBICstring or null

Beneficiary Bank Business Identifier Code (BIC). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​intermediaryBankBICstring or null

Intermediary Bank Business Identifier Code (BIC). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​fpsIdentifierstring or null

Faster Payment System identifier. Provided only when the currency route requires it (such as HKD).

Example: null
payInDetails[].​clearingNumberstring or null

Clearing number. Provided only when the currency route requires it (such as SEK).

Example: null
Response
application/json
{ "id": "54a6bc09-cef9-49a8-9041-f1f0c654cd88", "version": 0, "name": "My batch group", "sourceCurrency": "GBP", "status": "NEW", "transferIds": [], "payInDetails": [] }

Retrieve a batch group

Request

Get an existing batch group by ID.

Security
UserToken or PersonalToken
Path
profileIdinteger(int64)required

The ID of the profile that the batch group is associated with.

Example: 12345678
batchGroupIdstring(uuid)required

The batch group ID.

Example: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
curl -i -X GET \
  https://api.wise.com/v3/profiles/12345678/batch-groups/54a6bc09-cef9-49a8-9041-f1f0c654cd88 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Batch group retrieved successfully.

Bodyapplication/json
idstring(uuid)

Batch group ID.

Example: "54a6bc09-cef9-49a8-9041-f1f0c654cd88"
versioninteger(int64)

Batch version, used for concurrency control. This number is updated whenever there is a change to the batch group state (its status, the identity of the transfers in the batch, etc).

Some API operations require this version in requests, and operations may be rejected when the requested version does not match the server's version.

The version is a signed integer and is not ordered with respect to any previous version.

Example: 123
namestring

Descriptive name for the batch group.

Example: "My batch group"
sourceCurrencystring

Source currency code (ISO 4217 Alphabetic Code). This currency is expected to be used for funding the batch group.

Example: "GBP"
statusstring

Current batch group status:

  • NEW — New batch group with zero or more transfers. Able to have more transfers added to it. Transfers in a NEW group cannot yet be funded and paid out.
  • COMPLETED — The batch group has had all desired transfers added and is now closed to further changes. Transfers in the group can now be funded and paid out. Note: COMPLETED does not imply payouts have been successfully completed.
  • MARKED_FOR_CANCELLATION — Cancellation of the transfers in the batch group was requested.
  • PROCESSING_CANCEL — Transfers in the group are being cancelled.
  • CANCELLED — Transfers in the group have been cancelled.
Enum"NEW""COMPLETED""MARKED_FOR_CANCELLATION""PROCESSING_CANCEL""CANCELLED"
Example: "COMPLETED"
transferIdsArray of integers(int64)

The IDs of all transfers successfully added to the group.

Example: [234,456]
payInDetailsArray of objects

List of pay-in details describing how the batch group can be funded. Provided only when the batch group is in the COMPLETED state.

Currently supported types: bank_transfer.

payInDetails[].​typestring

Method of payment.

Value"bank_transfer"
Example: "bank_transfer"
payInDetails[].​referencestring

The reference that should be used when funding the transfers in the batch group. This reference should be treated as an opaque value and there should be no attempt to decode or decompose it.

Example: "B5323"
payInDetails[].​amountnumber(decimal)

The total pay-in amount for all transactions in the batch when paying in with this reference and method.

Example: 12504.54
payInDetails[].​currencystring

Three-character ISO 4217 currency code.

Example: "NOK"
payInDetails[].​namestring

Name of the bank account holder.

Example: "TransferWise Ltd"
payInDetails[].​branchNamestring or null

Name of the bank branch. Provided only when the currency route requires it (such as JPY).

Example: null
payInDetails[].​accountNumberstring or null

Bank account number.

Example: "9910728"
payInDetails[].​accountTypestring or null

Bank account type. Provided only when the currency route requires it.

Example: null
payInDetails[].​bankCodestring or null

Bank identifier or routing number, depending on pay-in type and currency.

Example: "8301"
payInDetails[].​bankAddressobject or null

Address for the receiving bank. Provided only when the currency route requires it.

payInDetails[].​transferWiseAddressobject or null

Wise's address. Provided only when the currency route requires it.

payInDetails[].​ibanstring or null

ISO 13616 International Bank Account Number (when available).

Example: null
payInDetails[].​bbanstring or null

Basic Bank Account Number (BBAN). Provided only when the currency route requires it (such as NOK).

Example: "83019910728"
payInDetails[].​institutionNumberstring or null

Financial Institution number (3 digits). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​transitNumberstring or null

Branch Transit Number (5 digits). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​beneficiaryBankBICstring or null

Beneficiary Bank Business Identifier Code (BIC). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​intermediaryBankBICstring or null

Intermediary Bank Business Identifier Code (BIC). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​fpsIdentifierstring or null

Faster Payment System identifier. Provided only when the currency route requires it (such as HKD).

Example: null
payInDetails[].​clearingNumberstring or null

Clearing number. Provided only when the currency route requires it (such as SEK).

Example: null
Response
application/json
{ "id": "54a6bc09-cef9-49a8-9041-f1f0c654cd88", "version": 123, "name": "My batch group", "sourceCurrency": "GBP", "status": "COMPLETED", "transferIds": [ 234, 456 ], "payInDetails": [ { "type": "bank_transfer", "reference": "B5323", "amount": 12504.54, "currency": "NOK", "name": "TransferWise Ltd", "branchName": null, "accountNumber": "9910728", "accountType": null, "bankCode": "8301", "bankAddress": {}, "transferWiseAddress": {}, "iban": null, "bban": "83019910728", "institutionNumber": null, "transitNumber": null, "beneficiaryBankBIC": null, "intermediaryBankBIC": null, "fpsIdentifier": null, "clearingNumber": null } ] }

Update batch group status

Request

Update a batch group's status to complete or cancel it.

Complete a batch group: Set status to COMPLETED to close the group for modifications and allow funding to proceed. Once completed, payInDetails will be populated with funding instructions.

Cancel a batch group: Set status to CANCELLED to cancel all transfers in the batch. Only batches that are not funded can be cancelled. Cancellation is final and cannot be undone.

The version parameter is required for concurrency control. The operation will be rejected if the provided version does not match the server's current version.

Security
UserToken or PersonalToken
Path
profileIdinteger(int64)required

The ID of the profile that the batch group is associated with.

Example: 12345678
batchGroupIdstring(uuid)required

The batch group ID.

Example: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
Bodyapplication/jsonrequired
statusstringrequired

Status to update to:

  • COMPLETED — Close the group and allow funding
  • CANCELLED — Cancel the group and all transfers
Enum"COMPLETED""CANCELLED"
Example: "COMPLETED"
versioninteger(int64)required

The expected batch group version for concurrency control. Must match the server's current version.

Example: 1234
curl -i -X PATCH \
  https://api.wise.com/v3/profiles/12345678/batch-groups/54a6bc09-cef9-49a8-9041-f1f0c654cd88 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "status": "COMPLETED",
    "version": 1234
  }'

Responses

Batch group updated successfully.

Bodyapplication/json
idstring(uuid)

Batch group ID.

Example: "54a6bc09-cef9-49a8-9041-f1f0c654cd88"
versioninteger(int64)

Batch version, used for concurrency control. This number is updated whenever there is a change to the batch group state (its status, the identity of the transfers in the batch, etc).

Some API operations require this version in requests, and operations may be rejected when the requested version does not match the server's version.

The version is a signed integer and is not ordered with respect to any previous version.

Example: 123
namestring

Descriptive name for the batch group.

Example: "My batch group"
sourceCurrencystring

Source currency code (ISO 4217 Alphabetic Code). This currency is expected to be used for funding the batch group.

Example: "GBP"
statusstring

Current batch group status:

  • NEW — New batch group with zero or more transfers. Able to have more transfers added to it. Transfers in a NEW group cannot yet be funded and paid out.
  • COMPLETED — The batch group has had all desired transfers added and is now closed to further changes. Transfers in the group can now be funded and paid out. Note: COMPLETED does not imply payouts have been successfully completed.
  • MARKED_FOR_CANCELLATION — Cancellation of the transfers in the batch group was requested.
  • PROCESSING_CANCEL — Transfers in the group are being cancelled.
  • CANCELLED — Transfers in the group have been cancelled.
Enum"NEW""COMPLETED""MARKED_FOR_CANCELLATION""PROCESSING_CANCEL""CANCELLED"
Example: "COMPLETED"
transferIdsArray of integers(int64)

The IDs of all transfers successfully added to the group.

Example: [234,456]
payInDetailsArray of objects

List of pay-in details describing how the batch group can be funded. Provided only when the batch group is in the COMPLETED state.

Currently supported types: bank_transfer.

payInDetails[].​typestring

Method of payment.

Value"bank_transfer"
Example: "bank_transfer"
payInDetails[].​referencestring

The reference that should be used when funding the transfers in the batch group. This reference should be treated as an opaque value and there should be no attempt to decode or decompose it.

Example: "B5323"
payInDetails[].​amountnumber(decimal)

The total pay-in amount for all transactions in the batch when paying in with this reference and method.

Example: 12504.54
payInDetails[].​currencystring

Three-character ISO 4217 currency code.

Example: "NOK"
payInDetails[].​namestring

Name of the bank account holder.

Example: "TransferWise Ltd"
payInDetails[].​branchNamestring or null

Name of the bank branch. Provided only when the currency route requires it (such as JPY).

Example: null
payInDetails[].​accountNumberstring or null

Bank account number.

Example: "9910728"
payInDetails[].​accountTypestring or null

Bank account type. Provided only when the currency route requires it.

Example: null
payInDetails[].​bankCodestring or null

Bank identifier or routing number, depending on pay-in type and currency.

Example: "8301"
payInDetails[].​bankAddressobject or null

Address for the receiving bank. Provided only when the currency route requires it.

payInDetails[].​transferWiseAddressobject or null

Wise's address. Provided only when the currency route requires it.

payInDetails[].​ibanstring or null

ISO 13616 International Bank Account Number (when available).

Example: null
payInDetails[].​bbanstring or null

Basic Bank Account Number (BBAN). Provided only when the currency route requires it (such as NOK).

Example: "83019910728"
payInDetails[].​institutionNumberstring or null

Financial Institution number (3 digits). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​transitNumberstring or null

Branch Transit Number (5 digits). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​beneficiaryBankBICstring or null

Beneficiary Bank Business Identifier Code (BIC). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​intermediaryBankBICstring or null

Intermediary Bank Business Identifier Code (BIC). Provided only when the currency route requires it (such as CAD).

Example: null
payInDetails[].​fpsIdentifierstring or null

Faster Payment System identifier. Provided only when the currency route requires it (such as HKD).

Example: null
payInDetails[].​clearingNumberstring or null

Clearing number. Provided only when the currency route requires it (such as SEK).

Example: null
Response
application/json
{ "id": "54a6bc09-cef9-49a8-9041-f1f0c654cd88", "version": 123, "name": "My batch group", "sourceCurrency": "GBP", "status": "COMPLETED", "transferIds": [ 234, 456 ], "payInDetails": [ { "type": "bank_transfer", "reference": "B5323", "amount": 12504.54, "currency": "NOK", "name": "TransferWise Ltd", "branchName": null, "accountNumber": "9910728", "accountType": null, "bankCode": "8301", "bankAddress": {}, "transferWiseAddress": {}, "iban": null, "bban": "83019910728", "institutionNumber": null, "transitNumber": null, "beneficiaryBankBIC": null, "intermediaryBankBIC": null, "fpsIdentifier": null, "clearingNumber": null } ] }

Create a batch group transfer

Request

Create a transfer in the batch group using a previously created recipient account and quote.

For the request body format, see transfer creation. For quote and recipient creation, see quote creation and recipient creation.

Security
UserToken or PersonalToken
Path
profileIdinteger(int64)required

The ID of the profile that the batch group is associated with.

Example: 12345678
batchGroupIdstring(uuid)required

The batch group ID.

Example: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
Bodyapplication/jsonrequired
targetAccountinteger(int64)required

Recipient account ID.

Example: 67890
sourceAccountinteger(int64)

Refund recipient account ID.

Example: 12345
quoteUuidstring(uuid)required

Quote ID.

Example: "bd244a95-dcf8-4c31-aac8-bf5e2f3e54c0"
customerTransactionIdstring(uuid)required

Unique identifier you generate for this transfer attempt.

Example: "a]1b2c3d4-e5f6-7890-abcd-ef1234567890"
detailsobject
details.​referencestring

Recipient-facing reference (payment narrative).

Example: "to my friend"
details.​transferPurposestring

Transfer purpose code.

Example: "verification.transfers.purpose.pay.bills"
details.​transferPurposeSubTransferPurposestring

Sub-purpose code for the transfer.

Example: "verification.sub.transfers.purpose.pay.interpretation.service"
details.​sourceOfFundsstring

Source of funds code.

Example: "verification.source.of.funds.other"
curl -i -X POST \
  https://api.wise.com/v3/profiles/12345678/batch-groups/54a6bc09-cef9-49a8-9041-f1f0c654cd88/transfers \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "targetAccount": 67890,
    "sourceAccount": 12345,
    "quoteUuid": "bd244a95-dcf8-4c31-aac8-bf5e2f3e54c0",
    "customerTransactionId": "a]1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "details": {
      "reference": "to my friend",
      "transferPurpose": "verification.transfers.purpose.pay.bills",
      "transferPurposeSubTransferPurpose": "verification.sub.transfers.purpose.pay.interpretation.service",
      "sourceOfFunds": "verification.source.of.funds.other"
    }
  }'

Responses

Transfer created successfully. Returns a transfer object.

Bodyapplication/json
object

Transfer object. See Transfer API reference for full details.

Response
application/json
{}

Fund a batch group

Request

Funds all transfers in a batch group from a multi-currency account balance. Transfers are paid out immediately.

The batch group must first be completed, and there must be enough funds in the account for the whole batch. Otherwise, an insufficient funds error will be returned.

This endpoint is SCA protected when it applies. If your profile is registered within the UK and/or EEA, SCA most likely applies to you. For more information, please read implementing SCA.

Security
UserToken or PersonalToken
Path
profileIdinteger(int64)required

The ID of the profile that the batch group is associated with.

Example: 12345678
batchGroupIdstring(uuid)required

The batch group ID.

Example: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
Bodyapplication/jsonrequired
typestringrequired

The method of payment to use.

Value"BALANCE"
Example: "BALANCE"
curl -i -X POST \
  https://api.wise.com/v3/profiles/12345678/batch-payments/54a6bc09-cef9-49a8-9041-f1f0c654cd88/payments \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "BALANCE"
  }'

Responses

Batch group funded successfully.

Bodyapplication/json
idstring(uuid)

Unique batch group ID.

Example: "54a6bc09-cef9-49a8-9041-f1f0c654cd88"
namestring

Descriptive name.

Example: "My batch group"
fileNamestring or null

If this batch was submitted as a file, this is the given file name.

Example: null
alreadyPaidboolean

Not applicable to this use case.

Example: true
shortIdinteger(int64)

Not applicable to this use case.

Example: 12345
userIdinteger(int64)

The ID of the user who initiated this payment.

Example: 33333333
profileIdinteger(int64)

The ID of the profile this payment belongs to.

Example: 44444444
sourceCurrencystring

The source currency of the batch. Note that if there are insufficient funds, an automatic conversion from another currency can occur.

Example: "GBP"
statusstring

Current batch group status.

Enum"NEW""COMPLETED""MARKED_FOR_CANCELLATION""PROCESSING_CANCEL""CANCELLED"
Example: "COMPLETED"
groupTypestring

Whether this batch was submitted over the API or as a file.

Enum"API""FILE"
Example: "API"
transferIdsArray of integers(int64)

The IDs of all transfers in the group.

Example: [100001,100002,100003]
Response
application/json
{ "id": "54a6bc09-cef9-49a8-9041-f1f0c654cd88", "name": "My batch group", "fileName": null, "alreadyPaid": true, "shortId": 12345, "userId": 33333333, "profileId": 44444444, "sourceCurrency": "GBP", "status": "COMPLETED", "groupType": "API", "transferIds": [ 100001, 100002, 100003 ] }

Fund a batch group via direct debit

Request

Funds all transfers in a batch group via direct debit. The batch group must be in the COMPLETED state.

To use this funding method, you need to link an external bank account first. See direct debit account creation for more information.

This endpoint is SCA protected when it applies. If your profile is registered within the UK and/or EEA, SCA most likely applies to you. For more information, please read implementing SCA.

Security
UserToken or PersonalToken
Path
profileIdinteger(int64)required

The ID of the profile that the batch group is associated with.

Example: 12345678
batchGroupIdstring(uuid)required

The batch group ID.

Example: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
Bodyapplication/jsonrequired
typestringrequired

The method of payment to use.

Value"DIRECT_DEBIT"
Example: "DIRECT_DEBIT"
accountIdinteger(int64)required

Direct debit account ID. See direct debit account creation.

Example: 1
referencestring

Optional payment initiation reference. Maximum 10 characters. If not provided, a reference will be generated automatically.

Example: "B1234567"
curl -i -X POST \
  https://api.wise.com/v1/profiles/12345678/batch-groups/54a6bc09-cef9-49a8-9041-f1f0c654cd88/payment-initiations \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "DIRECT_DEBIT",
    "accountId": 1,
    "reference": "B1234567"
  }'

Responses

Payment initiation created successfully. You need to save payment initiation ID for tracking its status later.

Bodyapplication/json
idinteger(int64)

Payment initiation ID.

Example: 12345
batchGroupIdstring(uuid)

Batch group ID.

Example: "068e186d-9632-4937-b753-af3e53f4d0b0"
referencestring

Payment reference that will be passed to the network. Can be used for reconciliation.

Example: "B1234567"
userIdinteger(int64)

The ID of the user who initiated this payment.

Example: 33333333
profileIdinteger(int64)

The ID of the profile this payment belongs to.

Example: 44444444
typestring

Payment type.

Value"DIRECT_DEBIT"
Example: "DIRECT_DEBIT"
statusstring

Payment initiation status:

  • NEW — Payment initiation created
  • PROCESSING — Payment is being processed
  • COMPLETED — Payment completed successfully
  • FAILED — Payment failed
  • CHARGED_BACK — Payment was charged back
Enum"NEW""PROCESSING""COMPLETED""FAILED""CHARGED_BACK"
Example: "NEW"
accountIdinteger(int64)

External account ID associated with the payment.

Example: 1
transferIdinteger or null(int64)

Transfer ID of the direct debit payment. Present only after the direct debit is initiated.

Example: null
createdTimestring(date-time)

Date and time when the payment initiation was created.

Example: "2022-01-01T19:51:41.423404Z"
Response
application/json
{ "id": 12345, "batchGroupId": "068e186d-9632-4937-b753-af3e53f4d0b0", "reference": "B1234567", "userId": 33333333, "profileId": 44444444, "type": "DIRECT_DEBIT", "status": "NEW", "accountId": 1, "transferId": null, "createdTime": "2022-01-01T19:51:41.423404Z" }

Retrieve a payment initiation

Request

Get payment initiation info by ID. In addition to webhooks, this endpoint can be used for polling the status of a payment initiation.

Security
UserToken or PersonalToken
Path
profileIdinteger(int64)required

The ID of the profile that the batch group is associated with.

Example: 12345678
batchGroupIdstring(uuid)required

The batch group ID.

Example: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
paymentInitiationIdinteger(int64)required

The payment initiation ID.

Example: 12345
curl -i -X GET \
  https://api.wise.com/v1/profiles/12345678/batch-groups/54a6bc09-cef9-49a8-9041-f1f0c654cd88/payment-initiations/12345 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Payment initiation retrieved successfully.

Bodyapplication/json
idinteger(int64)

Payment initiation ID.

Example: 12345
batchGroupIdstring(uuid)

Batch group ID.

Example: "068e186d-9632-4937-b753-af3e53f4d0b0"
referencestring

Payment reference that will be passed to the network. Can be used for reconciliation.

Example: "B1234567"
userIdinteger(int64)

The ID of the user who initiated this payment.

Example: 33333333
profileIdinteger(int64)

The ID of the profile this payment belongs to.

Example: 44444444
typestring

Payment type.

Value"DIRECT_DEBIT"
Example: "DIRECT_DEBIT"
statusstring

Payment initiation status:

  • NEW — Payment initiation created
  • PROCESSING — Payment is being processed
  • COMPLETED — Payment completed successfully
  • FAILED — Payment failed
  • CHARGED_BACK — Payment was charged back
Enum"NEW""PROCESSING""COMPLETED""FAILED""CHARGED_BACK"
Example: "NEW"
accountIdinteger(int64)

External account ID associated with the payment.

Example: 1
transferIdinteger or null(int64)

Transfer ID of the direct debit payment. Present only after the direct debit is initiated.

Example: null
createdTimestring(date-time)

Date and time when the payment initiation was created.

Example: "2022-01-01T19:51:41.423404Z"
Response
application/json
{ "id": 12345, "batchGroupId": "068e186d-9632-4937-b753-af3e53f4d0b0", "reference": "B1234567", "userId": 33333333, "profileId": 44444444, "type": "DIRECT_DEBIT", "status": "NEW", "accountId": 1, "transferId": null, "createdTime": "2022-01-01T19:51:41.423404Z" }

Bulk Settlement

Bulk settlement allows partners to settle multiple transfers in a single bank transfer at the end of a settlement period. This model splits transfer creation/funding from final settlement, allowing Wise to process transfers before receiving funds based on a partner's guarantee.

Use the settlement journal endpoint to submit a list of transfers to be settled, along with the settlement reference that matches your bank transfer payment.

Operations

Card

Manage your customers' cards programmatically. These APIs allow you to retrieve card details, control card status, manage spending permissions, and access sensitive card data securely.

Key capabilities:

  • List and retrieve card details for a profile
  • Update card status (active, frozen, blocked)
  • Control spending permissions (e-commerce, ATM, contactless, etc.)
  • Access sensitive card data (PAN, CVV, PIN) via encrypted JWE payloads

Sensitive card details: Wise is a PCI DSS compliant provider and stores all card data securely. The scope for PCI compliance depends on your use case and will impact how you integrate. For all sensitive card details endpoints, follow the detailed guide.

For ordering new cards, see the Card Order API. For transaction history, see the Card Transaction API.

SchemasOperations