Skip to content
Last updated

Batch transfers

Batch groups allow you to group up to 1000 transfers under a single reference, which means all the payments within the batch group can be funded at once.

This option is useful if you have customers who need to make multiple payments at once, like paying all monthly invoices or performing monthly or quarterly payment runs.

The flow for creating batch transfers includes the following basic steps, described in detail below:

  1. Create batch group.
  2. Create batch group transfers.
  3. Update the batch group.
  4. Fund the batch group.

The batch group resource

Many batch group endpoints return a batch group resource. The key properties to take note of are the status and payInDetails properties.

See the Batch group schema for full details on the structure and fields.

Batch group statuses

StatusDescription
NEWNew batch group with zero or more transfers. Can have more transfers added to it. Any transfers in a NEW group cannot yet be funded and paid out.
COMPLETEDThe batch group has had all the desired transfers added to it and can no longer accept changes. The transfers in the group can now be funded and paid out. Note: COMPLETED does not mean that payouts have been successfully completed.
MARKED_FOR_CANCELLATIONCancellation of the transfers in the batch group was requested.
PROCESSING_CANCELTransfers in the group are in the process of being cancelled.
CANCELLEDTransfers in the group have been cancelled.

Pay-in details

The payInDetails object describe how the batch group can be funded. This object is only populated when a batch group is in the COMPLETED status.

See the payInDetails property in the schema for full details.

Create batch group

Send a create batch group request to create the group that will hold the transfers.

Set the sourceCurrency field to the ISO 4217 currency code of the currency that will be used to fund the group, and provide a descriptive name (max 100 characters) in the name field.

curl -i -X POST \
  https://api.wise.com/2026Q4/profiles/12345678/batch-groups \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-External-Correlation-Id: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
  -d '{
    "sourceCurrency": "GBP",
    "name": "My batch group"
  }'

The batch group id from the response is used in the next request.

Create batch group transfer

Next, send a create batch transfer request.

  • Use the id from the create batch group response as the batchGroupId in the endpoint path.
  • Set the targetAccount value to the recipient id from a previously created recipient account.
  • Set the quoteUuid value to the quote id from a previously created authenticated quote.

The request body follows the create standard transfer request.

curl -i -X POST \
  https://api.wise.com/2026Q4/profiles/12345678/batch-groups/54a6bc09-cef9-49a8-9041-f1f0c654cd88/transfers \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-External-Correlation-Id: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
  -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"
    }
  }'

Update batch group

Update the batch group by setting the status property to COMPLETED. Completing the group allows funding to proceed. This action prevents any further modification of the batch group.

curl -i -X PATCH \
  https://api.wise.com/2026Q4/profiles/12345678/batch-groups/54a6bc09-cef9-49a8-9041-f1f0c654cd88 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-External-Correlation-Id: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
  -d '{
    "status": "COMPLETED",
    "version": 1234
  }'

Fund batch group

Once the batch group is completed, you can fund all transfers at once either from your multi-currency account balance or via direct debit from a linked external bank account.

Fund from balance

To fund the batch group from your MCA balance, send a fund batch group request. With this option, transfers are paid out immediately.

curl -i -X POST \
  https://api.wise.com/2026Q4/profiles/12345678/batch-payments/54a6bc09-cef9-49a8-9041-f1f0c654cd88/payments \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-External-Correlation-Id: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
  -d '{
    "type": "BALANCE"
  }'

Via direct debit

To fund via direct debit, send a fund batch group via direct debit request. To use this funding method, you must link an external bank account first. See the create a direct debit account reference for more information.

curl -i -X POST \
  https://api.wise.com/2026Q4/profiles/12345678/batch-groups/54a6bc09-cef9-49a8-9041-f1f0c654cd88/payment-initiations \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-External-Correlation-Id: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
  -d '{
    "type": "DIRECT_DEBIT",
    "accountId": 1,
    "reference": "B1234567"
  }'

Batch group events

You can use the retrieve a payment initiation request and the batch payment initiations state change webhook to keep informed about the batch group status.

Postman collection

Batch transfers, Postman collection

Use our Postman collection to test your workflow. It includes:

  • Sandbox environment: https://api.wise-sandbox.com
  • Common requests with dynamic responses
  • Workflows that copy response data across calls
Fork in Postman