---
title: "Create a recipient account"
method: POST
path: "/v1/accounts"
tags: ["recipient"]
---

# Create a recipient account

`POST /v1/accounts`

Creates a recipient account. A **recipient** is a person or institution who is the ultimate beneficiary of your payment.

Recipient data includes three data blocks:
- General data - the personal details of an individual and basic information about a business.
- Bank details - account numbers, routing numbers, and other region-specific bank details.
- Address details - country and street address of an individual or business.

Notes:
- Date of Birth is optional; consult the account-requirements APIs to confirm if it is needed or contact Wise Support.
- `ownedByCustomer` is optional but strongly recommended for self-transfers.
- Email recipients: testing transfers to email recipients in sandbox is not currently possible.

Refund recipients:
- Use `refund=true` query parameter.

#### Bank account data
There are many different variations of bank account details needed depending on recipient target currency. For example:

- **GBP** — sort code and account number
- **BGN, CHF, DKK, EUR, GEL, GBP, NOK, PKR, PLN, RON, SEK** — IBAN
- **USD** — routing number, account number, account type
- **INR** — IFSC code, account number
- etc.

#### Address data
Recipient address data is required only if target currency is **USD, PHP, THB or TRY**, or if the source currency is **USD or AUD**.

Address fields can include:
- Country
- State (US, Canada, Brazil)
- City
- Address line
- Zip code

#### accountHolderName rules
- **Personal recipients:** Full names must include more than one name, and both first and last name must have more than one character. Numbers are not allowed.
- **Business recipients:** Business names must be in full and can be a single name. The full name cannot be just a single character, but can be made up of a set of single characters (e.g. `"A"` is not permitted but `"A 1"` or `"A1"` is permitted).
- Special characters `_()'*,.` are allowed for personal and business names.
- In general the following regex describes permitted characters:
  `[0-9A-Za-zÀ-ÖØ-öø-ÿ-_()'*,.\s]`.

Recipient requirements vary depending on recipient type/currency route. A GBP example is provided here.<br>
Many fields may be `null` in examples. To determine which fields are required for which currency, use the
**[Recipient Requirements](/api-reference/recipient/recipientAccountRequirementsGet)** endpoint.

#### Create a refund recipient account
`POST /v1/accounts?refund=true`

Sometimes we may need to refund the transfer back to the sender - see the [transfer status here](/guides/product/send-money/tracking-transfers) for cases when this may happen.

A refund recipient is a person or institution where we will refund transfer the money back to if necessary. This is not always a mandatory resource to create. If the funds are sent over a fast local payment network we can usually infer the refund recipient from the bank transaction that funded the transfer. Please discuss this with your Wise implementation team if you are unsure if the refund recipient is needed.

If funds are sent using a slow domestic payment network, or you are using a bulk settlement model, we may require you to share the bank details of the source bank account.

The format of the request payload for refund recipient creation will be different depending on the currency you will send transfers from. You may use the [account requirements](/api-reference/recipient/recipientaccountrequirementsget) endpoint to understand the payload requirements when creating the refund recipient for a specific currency.

The refund recipient account ID returned in the response is used as `sourceAccount` when [creating transfers](/guides/product/send-money/transfers).

#### Create an email recipient account
`POST /v1/accounts`

{% admonition type="warning" %}
Please contact us before attempting to use email recipients. We do not recommend using this feature except for certain use cases.
{% /admonition %}

If you don't know recipient bank account details you can set up an email recipient; Wise will collect bank details directly from the recipient.

Wise will email your recipient with a link to collect their bank account details securely. After the bank account details have been provided Wise will complete your transfer.

It's best to confirm that this recipient type is available to your transaction by checking if the `"type": "email"` class is present in the response from `GET /v1/quotes/{quoteId}/account-requirements` — see **[account requirements](/api-reference/recipient/recipientAccountRequirementsGet)** for more information on how to use this endpoint.

If planning to send multiple currencies to a single recipient, you will need to create a separate email recipient resource for this beneficiary, for every currency you intend to send to them. We highly encourage you to provide the `{profileId}` if your recipient is receiving a payment from your Business account, especially if you have multiple businesses, or have multiple users administrating your business account.

Please be aware of the following caveats:
- Testing of transfers to email recipients in sandbox is not currently possible.
- Recipients will be required to enter bank details **every time a payment is made**.
- We highly encourage you to provide the `profileId` if your recipient is receiving a payment from your Business account, especially if you have multiple businesses, or have multiple users administrating your business account.
- Please refer to our **[help page](https://wise.com/help/articles/2932105/can-i-send-money-to-someone-with-only-their-email-address)** on how this works and any additional constraints not mentioned in this section.

## Query parameters

- `refund` boolean

## Headers

- `X-External-Correlation-Id` string, uuid

## Request body

- RecipientCreateRequest — Create a recipient (beneficiary) account request for POST /v1/accounts. The required fields inside `details` depend on currency/route; use the account-requirements endpoints (e.g. /v1/quotes/{quoteId}/account-requirements) to discover the exact required fields.
  - `currency` string — 3 character currency code.
  - `type` string — Recipient account type (currency/route-specific), e.g. sort_code, iban, email.
  - `profile` integer — Personal or business profile ID of the sender. It is highly advised to pass the business profile ID in this field if your business account is managed by multiple users, so that the recipient can be accessed by all users authorized on the business account.
  - `accountHolderName` string — Recipient full name.
  - `ownedByCustomer` boolean — Indicates whether the recipient account is owned by the profile owner (self-transfer), such as a user sending money to their own account in another country or currency. Set to `true` for self-transfers. We strongly recommend setting this field, as distinguishing self-transfers from third-party transfers improves routing and processing efficiency.
  - `details` object — Currency/route-specific recipient fields. Common examples include legalType, sortCode, accountNumber, email, dateOfBirth, etc. Use account-requirements APIs to determine what is required.
    - `legalType` 'PRIVATE' | 'BUSINESS' — Recipient legal type (when applicable).
    - `sortCode` string — Sort code (GBP example).
    - `accountNumber` string — Account number (GBP example).
    - `dateOfBirth` string — Date of birth in ISO 8601 date format (Optional for GBP example).
  - `ultimateBeneficiary` object, nullable — The information of the ultimate beneficiary for this recipient, if present. If absent, the ultimate beneficiary is the recipient.
    - `accountNumber` string, nullable — Ultimate beneficiary account number.
    - `bankName` string, nullable — Ultimate beneficiary bank name.
    - `bankCode` string, nullable — Ultimate beneficiary bank code.
    - `name` object, required — Ultimate beneficiary name details.
      - `fullName` string, required — Ultimate beneficiary full name.
    - `address` object, nullable — Ultimate beneficiary address.
      - `country` string
      - `firstLine` string
      - `postCode` string
      - `city` string
      - `state` string
    - `bankAddress` object, nullable — Ultimate beneficiary bank address.
      - `country` string
      - `firstLine` string
      - `postCode` string
      - `city` string
      - `state` string

## Response `200`

Recipient account created successfully.

- Recipient — The `accountSummary` and `longAccountSummary` fields can be used to represent the recipient's details in your UI. The `displayFields` array allows you to build a UI containing all the dynamic fields of a recipient individually. In order to use these fields, you would need to POST using the v1 endpoint to create the recipient account, and then GET using the v2 endpoint to retrieve these fields. The v2 resource also includes the `hash` field that can be used to track recipient details changes. This is useful for re-running any validation checks your system performs on the recipient, for example against fraud engines. The hash will remain constant unless the recipient's name or information in the `details` object changes.
  - `id` integer — ID of the recipient. Use the returned id as `sourceAccount` to specify the refund recipient when creating transfers.
  - `creatorId` integer — Account entity that owns the recipient account.
  - `profileId` integer — Specific profile that owns the recipient account.
  - `name` object — Recipient name details.
    - `fullName` string — Recipient full name.
    - `givenName` string, nullable — Recipient first name.
    - `familyName` string, nullable — Recipient surname.
    - `middleName` string, nullable — Recipient middle name.
    - `patronymicName` string, nullable — Recipient patronymic name (when applicable).
    - `cannotHavePatronymicName` boolean, nullable — Indicates if the recipient cannot have a patronymic name (when applicable).
  - `currency` string — 3 character currency code.
  - `country` string — 2 character country code.
  - `type` string — Recipient type.
  - `legalEntityType` string — Entity type of recipient.
  - `active` boolean — Status of the recipient.
  - `details` object — Account details (currency/type-specific). The keys present vary by currency route and recipient type (e.g., sort code, IBAN, SWIFT, email).
    - `reference` string, nullable — Recipient reference (present for some routes).
    - `sortCode` string — Recipient bank sort code (GBP example).
    - `accountNumber` string — Recipient bank account number (GBP example).
    - `hashedByLooseHashAlgorithm` string — Recipient account hash.
  - `commonFieldMap` object — Map of key lookup fields on the account.
  - `hash` string — Account hash for change tracking.
  - `accountSummary` string — Summary of account details for ease of lookup.
  - `longAccountSummary` string — Account details summary.
  - `displayFields` object[] — Lookup fields (key/label/value) for rendering a UI.
    - `key` string — Account identifier key name.
    - `label` string — Account identifier display label.
    - `value` string — Account identifier value.
  - `isInternal` boolean — Indicates whether recipient is internal.
  - `ownedByCustomer` boolean — If recipient account belongs to profile owner.
  - `ultimateBeneficiary` object, nullable — The information of the ultimate beneficiary for this recipient.
    - `accountNumber` string, nullable — Ultimate beneficiary account number.
    - `bankName` string, nullable — Ultimate beneficiary bank name.
    - `bankCode` string, nullable — Ultimate beneficiary bank code.
    - `name` object, required — Ultimate beneficiary name details.
      - `fullName` string, required — Ultimate beneficiary full name.
    - `address` object, nullable — Ultimate beneficiary address.
      - `country` string
      - `firstLine` string
      - `postCode` string
      - `city` string
      - `state` string
    - `bankAddress` object, nullable — Ultimate beneficiary bank address.
      - `country` string
      - `firstLine` string
      - `postCode` string
      - `city` string
      - `state` string
  - `confirmations` object — Verification results for the recipient's details. Only populated for currencies with recipient verification enabled (CNY, KRW, INR, IDR, EUR). See the [Recipient verification guides](/guides/product/send-money/recipient-verification) for how to handle these.
    - `acceptedOutcomes` boolean — Whether we've received an explicit customer acceptance.
    - `acceptedAt` string, date-time, nullable — Timestamp indicating time of outcome acceptance, `null` if has not been accepted.
    - `quoteId` string, nullable — If the confirmation check was run as part of a quote compatibility check, then the `quoteId` will be on the result. If `quoteId` is present, then the outcome acceptance will need the `quoteId` to be specified as well.
    - `outcomes` object[] — Array of confirmation outcomes. At the moment it is safe to assume that there is only one element in the outcomes list.
      - `type` string — The type of confirmation. Possible values: `ACCOUNT_EXISTENCE`, `NAME_MATCHING`, `NAME_RESOLUTION`.
      - `timestamp` string, date-time — Timestamp of when the confirmation check was performed.
      - `outcome` string — The actual outcome of the confirmation. Possible values: `SUCCESS`, `PARTIAL_FAILURE`, `FAILURE`, `COULD_NOT_CHECK`.
      - `requiresCustomerAcceptance` boolean — Whether we require customer acceptance. Whether this value is true or false is dependent on the currency and the nature of the confirmation.
      - `fieldsChecked` string[] — Fields we used to confirm the account.
      - `providedName` string — The name that the customer provided when creating the recipient account. Only populated for NAME_MATCHING and NAME_RESOLUTION types for certain outcomes.
      - `resolvedName` string — The name that we resolved during name matching or name resolution.
      - `message` string — Customer facing message about the outcome of the check.
      - `recommendedUpdates` object[] — Shows what are the correct values for some of the fields we've checked.
        - `path` string — The field path to update.
        - `value` string — The recommended value for the field.

## Other responses

- `400` — Bad Request — validation error.
- `401` — Unauthorized.
- `429` — Rate limit exceeded. Retry after the number of seconds specified in the `Retry-After` header.

---

[API](https://skmtc.net/wise/apis/platform-api.md) · [All operations](https://skmtc.net/wise/apis/platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wise/platform-api/revisions/4907a1d269ab/schema)
