> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Wise

The Wise connector lets your AI agent act in each user's Wise account. Each user connects their own Wise access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 32 tools.

**Authentication:** Bearer Token
**Categories:** Accounting & Finance
**Tools:** 32: 19 read, 12 write, 1 destructive
**Users sign in with:** Access token
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=WISE)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Wise connection

   In **AgentKit > Connections**, create a Wise connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'wise'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Wise:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'wise_get_exchange_rates',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "wise"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Wise:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="wise_get_exchange_rates",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Wise credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'wise_compare_prices',
  toolInput: {
    source_currency: '<source_currency>',
    target_currency: '<target_currency>',
  },
  connector: 'wise',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="wise_compare_prices",
    tool_input={
        "source_currency": "<source_currency>",
        "target_currency": "<target_currency>",
    },
    connection_name="wise",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `wise_compare_prices`

Compare Transfer Prices · Read-only

Compare Wise's price and delivery speed against other money transfer providers for one currency route.
Returns the route details and a list of providers with their quotes, fees, exchange rates and delivery estimates.
Provide either send_amount or recipient_gets_amount, not both. Use wise_create_quote for an actionable Wise quote.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `source_currency` (`string`, required): Three-letter ISO 4217 code of the currency being sent. Example: GBP.
- `target_currency` (`string`, required): Three-letter ISO 4217 code of the currency being received. Example: EUR.
- `filter` (`string`, optional): Set to POPULAR to return only the most popular competing providers. Example: POPULAR. One of: `POPULAR`.
- `number_of_providers` (`integer`, optional): How many popular providers to return when filter is POPULAR. Wise defaults to 4. Example: 4.
- `recipient_gets_amount` (`number`, optional): Amount the recipient should receive in the target currency. Provide this or send_amount, never both. Example: 1000.
- `send_amount` (`number`, optional): Amount to send in the source currency. Provide this or recipient_gets_amount, never both. Example: 1000.
- `source_country` (`string`, optional): ISO 3166-1 alpha-2 country code to filter providers by sending country. Example: GB.
- `target_country` (`string`, optional): ISO 3166-1 alpha-2 country code to filter providers by receiving country. Example: DE.

Example input: `{"source_currency":"<source_currency>","target_currency":"<target_currency>"}`

### `wise_get_balance`

Get Balance · Read-only

Get one balance account of a Wise profile by its id.
Returns the balance's id, currency, type, name and amounts (total, reserved, cash and total worth).
Use wise_list_balances to find balance ids first.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `balance_id` (`integer`, required): Numeric ID of the balance account. Call wise_list_balances to find it. Example: 45678901.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.

Example input: `{"balance_id":45678901,"profile_id":14575282}`

### `wise_get_balance_statement`

Get Balance Statement · Read-only

Get the statement of a balance account over a time interval in JSON format.
Returns account holder details, the list of transactions with amounts, fees and running balances, and the end-of-statement balance.
The interval cannot exceed 469 days. Accounts registered outside the US, Australia, New Zealand, Singapore, Canada and Malaysia need Strong Customer Authentication, which personal API tokens cannot complete, so this call can fail with 403 for them.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `balance_id` (`integer`, required): Numeric ID of the balance to get the statement for. Call wise_list_balances to find it. Example: 45678901.
- `currency` (`string`, required): Three-letter ISO 4217 currency code of the balance being queried. Example: GBP.
- `interval_end` (`string`, required): Statement end time in UTC, ISO 8601. Must be within 469 days of the start. Example: 2026-09-30T23:59:59.999Z.
- `interval_start` (`string`, required): Statement start time in UTC, ISO 8601. Example: 2026-09-01T00:00:00.000Z.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `type` (`string`, optional): Statement layout. COMPACT gives one line per transaction; FLAT gives accounting-style lines with fees on a separate line. Example: COMPACT. One of: `COMPACT`, `FLAT`.

Example input: `{"balance_id":45678901,"currency":"<currency>","interval_end":"<interval_end>","interval_start":"<interval_start>","profile_id":14575282}`

### `wise_get_batch_group`

Get Batch Group · Read-only

Get a Wise batch group by its id.
Returns the batch group's version, name, source currency, status, transfer ids and pay-in details.
Use before wise_update_batch_group to read the current version number.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `batch_group_id` (`string`, required): ID of the batch group. Example: 54a6bc09-cd83-4a2c-a2b1-1c9d3d3b2d1a.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.

Example input: `{"batch_group_id":"<batch_group_id>","profile_id":14575282}`

### `wise_get_exchange_rates`

Get Exchange Rates · Read-only

Get current or historical Wise mid-market exchange rates, for one currency pair or for every currency.
Returns a list of rate entries with source, target, rate and time.
Use wise_create_quote instead when you need the rate and fees for an actual transfer.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from_time` (`string`, optional): Start of a rate history period, a timestamp or a date. Use with to and group. Example: 2026-03-01.
- `group` (`string`, optional): Interval for rate history grouping: day, hour or minute. Example: day. One of: `day`, `hour`, `minute`.
- `source` (`string`, optional): Three-letter ISO 4217 code of the currency being sent. Leave empty together with target to get all rates. Example: EUR.
- `target` (`string`, optional): Three-letter ISO 4217 code of the currency being received. Example: USD.
- `time` (`string`, optional): Timestamp for a single historical rate, ISO 8601 with optional offset. Example: 2026-03-13T14:53:01.
- `to_time` (`string`, optional): End of a rate history period, a timestamp or a date. Use with from and group. Example: 2026-03-13.

Example input: `{}`

### `wise_get_profile`

Get Profile · Read-only

Get the details of one Wise profile by its id.
Returns the profile type, name, address, contact details, state and, for business profiles, the business name and registration number.
Use wise_list_profiles to discover profile ids first.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.

Example input: `{"profile_id":14575282}`

### `wise_get_quote`

Get Quote · Read-only

Get a Wise quote by its id.
Returns the quote's rate, expiry, status, fees and paymentOptions. Expired quotes remain readable for about 48 hours.
Use wise_create_quote to make a new quote.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `quote_id` (`string`, required): ID of the quote (GUID). Example: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf.

Example input: `{"profile_id":14575282,"quote_id":"<quote_id>"}`

### `wise_get_recipient`

Get Recipient · Read-only

Get one Wise recipient account by its id.
Returns the recipient's name, currency, country, account type, active flag and bank details.
Use wise_list_recipients to find recipient ids.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Numeric ID of the recipient account. Example: 40000000.

Example input: `{"account_id":40000000}`

### `wise_get_recipient_requirements`

Get Recipient Requirements · Read-only

Get the fields Wise requires to create a recipient account for the currency route of a quote.
Returns a list of recipient account types, each with its title and the fields (key, type, validation, allowed values) to fill in.
Use before wise_create_recipient, and pass the matching type and field values into it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `quote_id` (`string`, required): ID of the quote whose currency route defines the requirements. Example: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf.
- `address_required` (`boolean`, optional): Set to true to always include the recipient address as required, even if the route does not need it. Example: true.

Example input: `{"quote_id":"<quote_id>"}`

### `wise_get_total_funds`

Get Total Funds · Read-only

Get the combined value of all balances of a Wise profile, converted into one currency.
Returns total worth, total available (including overdraft), total cash and overdraft usage and limit.
Use wise_list_balances to see each balance separately.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `currency` (`string`, required): Three-letter ISO 4217 currency code that all balances are converted into. Example: GBP.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.

Example input: `{"currency":"<currency>","profile_id":14575282}`

### `wise_get_transfer`

Get Transfer · Read-only

Get one Wise transfer by its id.
Returns the transfer's status, reference, rate, source and target amounts, recipient, quote and whether it has active issues.
Use to track progress after wise_fund_transfer.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `transfer_id` (`integer`, required): Numeric ID of the transfer. Example: 16521632.

Example input: `{"transfer_id":16521632}`

### `wise_list_activities`

List Activities · Read-only

List the activity feed of a Wise profile, such as transfers, card payments and balance movements.
Returns a page of activities and a cursor to request the next page.
Use wise_list_transfers when only transfers are needed.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `monetary_resource_type` (`string`, optional): Only return activities of this resource type. Example: TRANSFER.
- `next_cursor` (`string`, optional): Pagination cursor taken from the previous response, to fetch the next page. Example: eyJwYWdlIjoyfQ.
- `since` (`string`, optional): Only return activities after this ISO 8601 timestamp. Example: 2026-09-01T00:00:00.000Z.
- `size` (`integer`, optional): Number of activities per page, from 1 to 100. The Wise default is 10. Example: 25.
- `status` (`string`, optional): Only return activities with this status. Example: COMPLETED.
- `until` (`string`, optional): Only return activities up to this ISO 8601 timestamp. Example: 2026-09-30T23:59:59.999Z.

Example input: `{"profile_id":14575282}`

### `wise_list_balances`

List Balances · Read-only

List the multi-currency balance accounts of a Wise profile, filtered by balance type.
Returns each balance's id, currency, type, name and amounts (total, reserved, cash and total worth).
Use wise_get_balance for a single balance by id. Use wise_get_total_funds for one combined total in a single currency.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `types` (`string`, required): Comma-separated balance types to return. Allowed values are STANDARD (regular currency balances) and SAVINGS (jars). At least one type is required. Example: STANDARD,SAVINGS.

Example input: `{"profile_id":14575282,"types":"<types>"}`

### `wise_list_currencies`

List Currencies · Read-only

List every currency Wise supports for creating transfers.
Returns each currency's code, symbol, name, search keywords and whether it supports decimals.
Use before wise_create_quote to check that a currency is supported.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `wise_list_profiles`

List Profiles · Read-only

List all Wise profiles (personal and business) that belong to the authenticated user.
Returns each profile's id, type (PERSONAL or BUSINESS), name, email, address and current state.
Use this first to find the profile id that most other Wise tools need. Use wise_get_profile for one profile's full details.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `wise_list_recipients`

List Recipients · Read-only

List recipient accounts of a Wise profile, optionally filtered by currency, type or active state.
Returns a page of recipients and a seek position for the next page.
Use wise_get_recipient for one recipient by id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `active` (`boolean`, optional): Whether to return active recipients. Wise defaults to true. Example: true.
- `currency` (`string`, optional): Only return recipients for these target currencies, comma-separated. Example: USD,GBP.
- `owned_by_customer` (`boolean`, optional): Only return recipients that are (true) or are not (false) owned by the customer. Leave empty for all. Example: false.
- `profile_id` (`integer`, optional): ID of the Wise profile whose recipients to list. Defaults to the personal profile. Example: 14575282.
- `seek_position` (`integer`, optional): Pagination position taken from seekPositionForNext in the previous response. Example: 1234567.
- `size` (`integer`, optional): Number of recipients per page, up to 20. Example: 20.
- `sort` (`string`, optional): Sort order as field,direction where field is id or currency and direction is asc or desc. Example: id,desc.
- `type` (`string`, optional): Only return recipients of these account types, comma-separated. Example: iban,sort_code.

Example input: `{}`

### `wise_list_transfer_payments`

List Transfer Payments · Read-only

List the completed payments that funded a Wise transfer.
Returns each payment's id, method, amount, currency and timestamps.
Use wise_get_transfer for the transfer itself.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `transfer_id` (`integer`, required): Numeric ID of the transfer. Example: 16521632.

Example input: `{"transfer_id":16521632}`

### `wise_list_transfers`

List Transfers · Read-only

List transfers of a Wise profile, filtered by status, currency or creation date.
Returns each transfer's id, status, reference, rate, source and target amounts and creation time.
Use wise_get_transfer for one transfer by id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_date_end` (`string`, optional): Only return transfers created on or before this date. Example: 2026-09-30.
- `created_date_start` (`string`, optional): Only return transfers created on or after this date. Example: 2026-09-01.
- `limit` (`integer`, optional): Maximum number of transfers to return. Example: 50.
- `offset` (`integer`, optional): Number of transfers to skip, for paging. Example: 0.
- `profile_id` (`integer`, optional): ID of the Wise profile whose transfers to list. Defaults to the personal profile. Example: 14575282.
- `source_currency` (`string`, optional): Only return transfers sent in this ISO 4217 currency. Example: GBP.
- `status` (`string`, optional): Only return transfers in these statuses, comma-separated, such as incoming_payment_waiting, processing, funds_converted, outgoing_payment_sent, cancelled or funds_refunded. Example: processing,outgoing_payment_sent.
- `target_currency` (`string`, optional): Only return transfers received in this ISO 4217 currency. Example: EUR.

Example input: `{}`

### `wise_validate_transfer_requirements`

Validate Transfer Requirements · Read-only

Check which extra details Wise requires before a transfer can be created for a quote and recipient.
Returns the list of required and optional fields, such as reference, transfer purpose and source of funds, with allowed values. This only reads requirements and creates nothing.
Call before wise_create_transfer, then pass the needed values into it.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `quote_uuid` (`string`, required): ID of the quote the transfer will use. Example: bd244a95-dcf8-4c31-aac8-bf5e2f3e54c0.
- `target_account` (`integer`, required): ID of the recipient account. Example: 40000000.
- `customer_transaction_id` (`string`, optional): Unique ID you will use for the transfer. Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890.
- `reference` (`string`, optional): Reference text the recipient sees on their bank statement. The maximum length depends on the currency route. Example: Invoice 4471.
- `source_of_funds` (`string`, optional): Source of funds code. Required for some routes, such as large USD transfers. Example: verification.source.of.funds.other.
- `transfer_nature` (`string`, optional): Transfer nature code, for transfers to or from BRL. Example: MOVING_MONEY_BETWEEN_OWN_ACCOUNTS.
- `transfer_purpose` (`string`, optional): Transfer purpose code. Required for some routes, such as THB; see wise_validate_transfer_requirements. Example: verification.transfers.purpose.pay.bills.
- `transfer_purpose_invoice_number` (`string`, optional): Invoice number. Required for some routes, such as INR. Example: INV-2026-0042.
- `transfer_purpose_sub_transfer_purpose` (`string`, optional): Sub-purpose code. Required for some routes, such as CNY. Example: verification.sub.transfers.purpose.pay.interpretation.service.

Example input: `{"quote_uuid":"<quote_uuid>","target_account":40000000}`

### `wise_cancel_transfer`

Cancel Transfer · Write

Cancel a Wise transfer that is still waiting for funds.
Returns the transfer with its updated status. Only transfers in the incoming_payment_waiting state can be cancelled; others return 409 Conflict.
Use wise_get_transfer first to check the status.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `transfer_id` (`integer`, required): Numeric ID of the transfer to cancel. Example: 16521632.

Example input: `{"transfer_id":16521632}`

### `wise_convert_between_balances`

Convert or Move Between Balances · Write

Convert money between two currency balances or move money between a balance and a savings jar in a Wise profile.
Returns the balance movement with its id, state, source and target amounts, rate, fees and the resulting balances.
For a cross-currency conversion first call wise_create_quote with pay_out set to BALANCE and pass its id as quote_id. For a same-currency move pass amount_value and amount_currency instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `idempotence_uuid` (`string`, required): Unique UUID that you generate for this request, used by Wise to avoid duplicate operations. Reuse the same value only when retrying a failed call. Example: 3f8a1c52-7d4e-4b9a-9c1e-5a2b7d6e8f90.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `amount_currency` (`string`, optional): Three-letter ISO 4217 currency code of the amount. Required together with amount_value. Example: GBP.
- `amount_value` (`number`, optional): Amount to move, as a decimal number. Required for same-currency moves; leave empty when quote_id is used. Example: 100.50.
- `quote_id` (`string`, optional): ID of a quote created with pay_out set to BALANCE. Required for cross-currency conversions; leave empty for same-currency moves. Example: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf.
- `source_balance_id` (`integer`, optional): ID of the balance to take money from. Required when moving money between a balance and a jar. Example: 45678901.
- `target_balance_id` (`integer`, optional): ID of the balance to put money into. Required when moving money between a balance and a jar. Example: 45678902.

Example input: `{"idempotence_uuid":"<idempotence_uuid>","profile_id":14575282}`

### `wise_create_balance`

Create Balance · Write

Open a new balance account (a currency balance or a savings jar) in a Wise profile.
Returns the new balance's id, currency, type, name and amounts.
Use wise_list_balances first to check whether a STANDARD balance already exists for the currency, since only one is allowed per currency.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `currency` (`string`, required): Three-letter ISO 4217 currency code of the balance to open. Example: EUR.
- `idempotence_uuid` (`string`, required): Unique UUID that you generate for this request, used by Wise to avoid duplicate operations. Reuse the same value only when retrying a failed call. Example: 3f8a1c52-7d4e-4b9a-9c1e-5a2b7d6e8f90.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `type` (`string`, required): Type of balance to open. STANDARD is a regular currency balance (only one per currency per profile). SAVINGS is a savings jar (several allowed per currency). Example: STANDARD. One of: `STANDARD`, `SAVINGS`.
- `name` (`string`, optional): Name of the balance. Required when type is SAVINGS; ignored for STANDARD. Example: Holiday fund.

Example input: `{"currency":"<currency>","idempotence_uuid":"<idempotence_uuid>","profile_id":14575282,"type":"STANDARD"}`

### `wise_create_batch_group`

Create Batch Group · Write

Create a Wise batch group that collects up to 1000 transfers to be funded together.
Returns the batch group's id, version, name, source currency, status and transfer ids.
Add transfers with wise_create_batch_group_transfer, then close it with wise_update_batch_group and fund it with wise_fund_batch_group.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Descriptive name for the batch, up to 100 characters. Example: October supplier payouts.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `source_currency` (`string`, required): Three-letter ISO 4217 code of the currency used to fund the batch. Example: GBP.

Example input: `{"name":"<name>","profile_id":14575282,"source_currency":"<source_currency>"}`

### `wise_create_batch_group_transfer`

Create Batch Group Transfer · Write

Create a transfer inside a Wise batch group from a quote and recipient.
Returns the created transfer with its id, status, amounts and reference.
Use wise_create_transfer for a standalone transfer. The batch must still be open.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `batch_group_id` (`string`, required): ID of the batch group to add the transfer to. Example: 54a6bc09-cd83-4a2c-a2b1-1c9d3d3b2d1a.
- `customer_transaction_id` (`string`, required): Unique ID you generate for this transfer, used to prevent duplicates. Reuse the same value only when retrying a failed call. Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `quote_uuid` (`string`, required): ID of the quote to base the transfer on. A quote can be used for one transfer only. Example: bd244a95-dcf8-4c31-aac8-bf5e2f3e54c0.
- `target_account` (`integer`, required): ID of the recipient account to pay. Example: 40000000.
- `reference` (`string`, optional): Reference text the recipient sees on their bank statement. The maximum length depends on the currency route. Example: Invoice 4471.
- `source_account` (`integer`, optional): ID of the refund recipient account to return money to if the transfer fails. Usually not needed. Example: 40000001.
- `source_of_funds` (`string`, optional): Source of funds code. Required for some routes, such as large USD transfers. Example: verification.source.of.funds.other.
- `transfer_purpose` (`string`, optional): Transfer purpose code. Required for some routes, such as THB; see wise_validate_transfer_requirements. Example: verification.transfers.purpose.pay.bills.
- `transfer_purpose_sub_transfer_purpose` (`string`, optional): Sub-purpose code. Required for some routes, such as CNY. Example: verification.sub.transfers.purpose.pay.interpretation.service.

Example input: `{"batch_group_id":"<batch_group_id>","customer_transaction_id":"<customer_transaction_id>","profile_id":14575282,"quote_uuid":"<quote_uuid>","target_account":40000000}`

### `wise_create_quote`

Create Quote · Write

Create a Wise quote for sending money from a profile, fixing the exchange rate and fees for a short time.
Returns the quote id, rate, expiry, fees and a paymentOptions list with the price of each pay-in and pay-out method.
Provide either source_amount or target_amount, not both. Use the returned id with wise_create_transfer, or with wise_get_recipient_requirements to find the recipient fields needed.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `profile_id` (`integer`, required): Numeric ID of the sender's Wise profile (personal or business). Call wise_list_profiles to find it. Example: 14575282.
- `source_currency` (`string`, required): Three-letter ISO 4217 code of the currency being sent. Example: GBP.
- `target_currency` (`string`, required): Three-letter ISO 4217 code of the currency being received. Example: USD.
- `pay_in` (`string`, optional): Funding method of the transfer. Set to BALANCE when you will fund the transfer from a Wise balance, otherwise fees on the quote will not match the transfer. Wise defaults to BANK_TRANSFER. Example: BALANCE. One of: `BANK_TRANSFER`, `BALANCE`.
- `pay_out` (`string`, optional): Preferred payout method. Wise defaults to BANK_TRANSFER. Other values include BALANCE, SWIFT, SWIFT_OUR, ALIPAY and INTERAC. Use BALANCE for conversions between your own balances. Example: BANK_TRANSFER.
- `preferred_pay_in` (`string`, optional): Preferred pay-in method to list first in the response, for example BANK_TRANSFER. Example: BANK_TRANSFER.
- `source_amount` (`number`, optional): Amount to send in the source currency. Provide this or target_amount, never both. Example: 100.
- `target_account` (`integer`, optional): ID of the recipient account, from wise_create_recipient or wise_list_recipients. Optional; it can be added later with wise_update_quote. Example: 12345.
- `target_amount` (`number`, optional): Amount the recipient should receive in the target currency. Provide this or source_amount, never both. Example: 120.
- `transfer_nature` (`string`, optional): Transfer nature code, required for transfers to or from BRL so that IOF tax is calculated correctly. Accepted values are listed by wise_validate_transfer_requirements. Example: MOVING_MONEY_BETWEEN_OWN_ACCOUNTS.

Example input: `{"profile_id":14575282,"source_currency":"<source_currency>","target_currency":"<target_currency>"}`

### `wise_create_recipient`

Create Recipient · Write

Create a Wise recipient account, the beneficiary of a transfer, from bank details.
Returns the recipient's id, name, currency, country, account type, active flag and a summary of its details.
Call wise_get_recipient_requirements first to learn the account type and the fields required in details for the currency route.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_holder_name` (`string`, required): Full name of the recipient. Personal names need a first and last name; business names can be a single name. Example: John Doe.
- `currency` (`string`, required): Three-letter ISO 4217 code of the currency the recipient receives. Example: GBP.
- `details` (`object`, required): Bank details for the route as an object, for example legalType (PRIVATE or BUSINESS), sortCode and accountNumber for GBP, or iban for EUR. The exact keys come from wise_get_recipient_requirements. Example: {"legalType": "PRIVATE", "sortCode": "040075", "accountNumber": "37778842"}.
- `type` (`string`, required): Recipient account type for the route, as listed by wise_get_recipient_requirements, such as sort_code, iban or email. Example: sort_code.
- `owned_by_customer` (`boolean`, optional): Set to true when the recipient account belongs to the profile owner, for example a transfer to your own account abroad. Example: true.
- `profile_id` (`integer`, optional): ID of the Wise profile that owns the recipient. Pass the business profile ID when several users manage the business account. Defaults to the personal profile. Example: 30000000.
- `refund` (`boolean`, optional): Set to true to create a refund recipient, the account Wise returns money to if a transfer fails. Example: false.

Example input: `{"account_holder_name":"<account_holder_name>","currency":"<currency>","details":{"legalType":"PRIVATE","sortCode":"040075","accountNumber":"37778842"},"type":"<type>"}`

### `wise_create_transfer`

Create Transfer · Write

Create a Wise transfer to a recipient from a quote. The transfer starts as a draft and moves no money until it is funded.
Returns the transfer's id, status, reference, rate, source and target amounts and customerTransactionId.
Create the quote and recipient first, and check wise_validate_transfer_requirements for extra details. Fund it with wise_fund_transfer.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `customer_transaction_id` (`string`, required): Unique ID you generate for this transfer, used to prevent duplicates. Reuse the same value only when retrying a failed call. Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890.
- `quote_uuid` (`string`, required): ID of the quote to base the transfer on. A quote can be used for one transfer only. Example: bd244a95-dcf8-4c31-aac8-bf5e2f3e54c0.
- `target_account` (`integer`, required): ID of the recipient account to pay. Example: 40000000.
- `reference` (`string`, optional): Reference text the recipient sees on their bank statement. The maximum length depends on the currency route. Example: Invoice 4471.
- `source_account` (`integer`, optional): ID of the refund recipient account to return money to if the transfer fails. Usually not needed. Example: 40000001.
- `source_of_funds` (`string`, optional): Source of funds code. Required for some routes, such as large USD transfers. Example: verification.source.of.funds.other.
- `transfer_purpose` (`string`, optional): Transfer purpose code. Required for some routes, such as THB; see wise_validate_transfer_requirements. Example: verification.transfers.purpose.pay.bills.
- `transfer_purpose_invoice_number` (`string`, optional): Invoice number. Required for some routes, such as INR. Example: INV-2026-0042.
- `transfer_purpose_sub_transfer_purpose` (`string`, optional): Sub-purpose code. Required for some routes, such as CNY. Example: verification.sub.transfers.purpose.pay.interpretation.service.

Example input: `{"customer_transaction_id":"<customer_transaction_id>","quote_uuid":"<quote_uuid>","target_account":40000000}`

### `wise_fund_batch_group`

Fund Batch Group From Balance · Write

Fund every transfer in a completed Wise batch group from a multi-currency balance, paying them out immediately.
Returns the batch group with its status, name, transfer ids and whether it was already paid.
Complete the batch with wise_update_batch_group first and make sure the balance covers the whole batch. Profiles in the UK and EEA need Strong Customer Authentication, which personal API tokens cannot complete.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `batch_group_id` (`string`, required): ID of the completed batch group to fund. Example: 54a6bc09-cd83-4a2c-a2b1-1c9d3d3b2d1a.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.

Example input: `{"batch_group_id":"<batch_group_id>","profile_id":14575282}`

### `wise_fund_transfer`

Fund Transfer From Balance · Write

Fund a Wise transfer from a multi-currency balance, which starts processing and moves the money.
Returns the payment result with its status, error code if any, and balance transaction id.
Create the transfer with wise_create_transfer first. Profiles in the UK and EEA need Strong Customer Authentication, which personal API tokens cannot complete, so this can fail with 403 there.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `profile_id` (`integer`, required): Numeric ID of the profile that owns the transfer and balance. Call wise_list_profiles to find it. Example: 14575282.
- `transfer_id` (`integer`, required): Numeric ID of the transfer to fund. Example: 16521632.
- `balance_id` (`integer`, optional): ID of the balance to debit. If empty Wise uses the profile's balance in the transfer's source currency. Example: 45678901.

Example input: `{"profile_id":14575282,"transfer_id":16521632}`

### `wise_update_batch_group`

Complete or Cancel Batch Group · Write

Close a Wise batch group so it can be funded, or cancel it together with all its transfers.
Returns the batch group with its new status, version and pay-in details. Cancelling is final and only allowed before funding.
Read the current version with wise_get_batch_group first; the call is rejected if the version is stale.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `batch_group_id` (`string`, required): ID of the batch group to update. Example: 54a6bc09-cd83-4a2c-a2b1-1c9d3d3b2d1a.
- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `status` (`string`, required): New status. COMPLETED closes the group for changes and allows funding. CANCELLED cancels the group and every transfer in it, and cannot be undone. Example: COMPLETED. One of: `COMPLETED`, `CANCELLED`.
- `version` (`integer`, required): Current version of the batch group, from wise_get_batch_group, used to prevent conflicting updates. Example: 1234.

Example input: `{"batch_group_id":"<batch_group_id>","profile_id":14575282,"status":"COMPLETED","version":1234}`

### `wise_update_quote`

Update Quote · Write

Update a Wise quote, usually to attach the recipient account so the final price and payout method are known.
Returns the updated quote with its payOut method, rate, expiry and paymentOptions.
Use after wise_create_quote when the recipient was not known at creation. Pricing can change, so re-check the fees before creating the transfer.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `profile_id` (`integer`, required): Numeric ID of the Wise profile (personal or business) to act on. Call wise_list_profiles to find it. Example: 14575282.
- `quote_id` (`string`, required): ID of the quote to update (GUID). Example: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf.
- `pay_out` (`string`, optional): Preferred payout method, such as BANK_TRANSFER, BALANCE, SWIFT, SWIFT_OUR, ALIPAY or INTERAC. Example: SWIFT_OUR.
- `target_account` (`integer`, optional): ID of the recipient account to attach to the quote. Example: 12345.
- `transfer_nature` (`string`, optional): Transfer nature code, required for transfers to or from BRL. Example: MOVING_MONEY_BETWEEN_OWN_ACCOUNTS.

Example input: `{"profile_id":14575282,"quote_id":"<quote_id>"}`

### `wise_deactivate_recipient`

Deactivate Recipient · Destructive

Deactivate a Wise recipient account so it can no longer receive transfers.
Returns the recipient with its active flag set to false. A deactivated recipient cannot be reactivated, but a new one can be created with the same details.
Use wise_get_recipient first to confirm the right account.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Numeric ID of the recipient account to deactivate. Example: 40000000.

Example input: `{"account_id":40000000}`

## Related

Other Accounting & Finance connectors ([all 37](/agentkit/connectors/?category=accounting-finance)):

- [QuickBooks](/agentkit/connectors/quickbooks/): Scalekit connector, OAuth, 117 tools
- [Xero](/agentkit/connectors/xero/): Scalekit connector, OAuth, 94 tools
- [Stripe](/agentkit/connectors/stripe/): Scalekit connector, Access token, 178 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
