# Create a recipient account

Creates a recipient account. A **recipient** is the person or institution who is the ultimate beneficiary of your payment.
Recipient data includes:
- The personal details of an individual or basic information about a business.
- Bank details like account numbers, routing numbers, and other region-specific information.
- Address details like country and street address.

Certain fields shown in the schema are conditionally required depending on `currency`, `type`, `legalType`, and `country`.
The reference uses a GBP example for illustration purposes.
As such, some fields are `null` in the provided examples. To determine which fields are required for a currency corridor, use the
**[Retrieve recipient account requirements](/api-reference/recipient/recipientaccountrequirementsget)** endpoint.
#### Bank account details
There are many variations of required bank account details, depending on recipient target currency. For example:
- **GBP** requires sort code and account number.
- **BGN, CHF, DKK, EUR, GEL, GBP, NOK, PKR, PLN, RON, SEK** require IBAN.
- **USD** requires routing number, account number, and account type
- **INR** requires IFSC code and account number.

#### Address details
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 (required for 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 (for example, `"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]`.

#### Creating a refund recipient account
Sometimes we may need to refund the transfer back to the sender. The *refund recipient* is the person or institution who we refund the transfer money back to.
It is not always mandatory to create a refund recipient.
- 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.

To indicate a recipient account is a *refund recipient*, include the query parameter `refund=true` in the request.
Then, use the account ID returned in the response as `sourceAccount` when [creating transfers](/guides/product/send-money/transfers).
#### Creating an email recipient account
Contact us before attempting to use email recipients as it is only recommended for certain use cases.
If you don't know recipient bank account details, you can set up an *email recipient*. Wise then collects 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 completes the transfer.
Confirm this recipient type is available for your transaction by checking if the `"type": "email"` class is present in the response of the [retrieve recipient account requirements endpoint](/api-reference/recipient/recipientaccountrequirementsget).
If planning to send multiple currencies to a single recipient, you must create a separate email recipient resource for the beneficiary, for every currency you intend to send them.
Be aware of the following:
- Testing of transfers to email recipients in sandbox is not currently possible.
- Recipients are 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.
- Refer to our **[help page](https://wise.com/help/articles/2932105/can-i-send-money-to-someone-with-only-their-email-address)** for more details about how this works and any additional constraints not mentioned here.

Endpoint: POST /accounts
Version: 2027Q1
Security: UserToken

## Description:

  - `Bank account details` ()
    There are many variations of required bank account details, depending on recipient target currency. For example: GBP requires sort code and account number.BGN, CHF, DKK, EUR, GEL, GBP, NOK, PKR, PLN, RON, SEK require IBAN.USD requires routing number, account number, and account typeINR requires IFSC code and account number.

  - `Address details` ()
    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: CountryState (required for US, Canada, Brazil)CityAddress lineZip 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 (for example, "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].

  - `Creating a refund recipient account` ()
    Sometimes we may need to refund the transfer back to the sender. The refund recipient is the person or institution who we refund the transfer money back to. It is not always mandatory to create a refund recipient. 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. To indicate a recipient account is a refund recipient, include the query parameter refund=true in the request. Then, use the account ID returned in the response as sourceAccount when creating transfers.

  - `Creating an email recipient account` ()
    Contact us before attempting to use email recipients as it is only recommended for certain use cases. If you don't know recipient bank account details, you can set up an email recipient. Wise then collects 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 completes the transfer. Confirm this recipient type is available for your transaction by checking if the "type": "email" class is present in the response of the retrieve recipient account requirements endpoint. If planning to send multiple currencies to a single recipient, you must create a separate email recipient resource for the beneficiary, for every currency you intend to send them. Be aware of the following: Testing of transfers to email recipients in sandbox is not currently possible.Recipients are 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.Refer to our help page for more details about how this works and any additional constraints not mentioned here.

## Security:

  - `UserToken` (unknown)
    http bearer JWT

## Query parameters:

  - `refund` (boolean)
    When `true`, the request creates a refund recipient account.

## Header parameters:

  - `X-External-Correlation-Id` (string)
    Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. [Learn more](/guides/developer/headers/correlation-id).

## Request fields (application/json):

  - `currency` (string)
    3-character currency code.
    Example: GBP

  - `type` (string)
    Recipient account type. These are currency/route-specific, for example, `sort_code`, `iban`, `email`.
    Example: sort_code

  - `profile` (integer)
    Personal or business profile ID of the sender. We recommend passing the business profile ID if multiple users manage your business account so all users authorized on the business account can access the recipient.
    Example: 30000000

  - `accountHolderName` (string)
    Recipient full name.
    Example: John Doe

  - `ownedByCustomer` (boolean)
    Indicates whether the recipient account is owned by the profile owner.
While optional, we recommend setting to `true` for self-transfers (such as a user sending money to their own account in another country or currency).
Distinguishing self-transfers from third-party transfers improves routing and processing efficiency.
    Example: true

  - `details` (object)
    Contains the details of the recipient account specific to its currency and type.
Common examples include `legalType`, `sortCode`, `accountNumber`, `email`, `dateOfBirth`, etc. Use the **retrieve recipient account requirements** endpoint to determine what is required for a specific recipient.

  - `details.legalType` (string)
    Recipient legal type.
    Enum: "PRIVATE", "BUSINESS"

  - `details.sortCode` (string)
    Sort code (GBP example).
    Example: 040075

  - `details.accountNumber` (string)
    Account number (GBP example).
    Example: 37778842

  - `details.dateOfBirth` (string)
    Date of birth in ISO 8601 date format. Only required for certain currency routes. Call the **retrieve recipient account requirements** endpoint to confirm.
    Example: 1961-01-01

  - `ultimateBeneficiary` (object | null)
    The details about the ultimate beneficiary for this recipient, if present. If absent, the ultimate beneficiary *is* the recipient.

  - `ultimateBeneficiary.accountNumber` (string | null)
    Ultimate beneficiary account number.
    Example: 37778842

  - `ultimateBeneficiary.bankName` (string | null)
    Ultimate beneficiary bank name.
    Example: Wise Payments Limited

  - `ultimateBeneficiary.bankCode` (string | null)
    Ultimate beneficiary bank code.
    Example: 026073150

  - `ultimateBeneficiary.name` (object, required)
    Ultimate beneficiary name details.

  - `ultimateBeneficiary.name.fullName` (string, required)
    Ultimate beneficiary full name.
    Example: John Doe

  - `ultimateBeneficiary.address` (object | null)
    Ultimate beneficiary address.

  - `ultimateBeneficiary.address.country` (string)
    Example: US

  - `ultimateBeneficiary.address.firstLine` (string)

  - `ultimateBeneficiary.address.postCode` (string)

  - `ultimateBeneficiary.address.city` (string)

  - `ultimateBeneficiary.address.state` (string)

  - `ultimateBeneficiary.bankAddress` (object | null)
    Ultimate beneficiary bank address.

  - `ultimateBeneficiary.bankAddress.country` (string)
    Example: US

  - `ultimateBeneficiary.bankAddress.firstLine` (string)

  - `ultimateBeneficiary.bankAddress.postCode` (string)

  - `ultimateBeneficiary.bankAddress.city` (string)

  - `ultimateBeneficiary.bankAddress.state` (string)

## Request examples:

  - `GBP recipient` (unknown)

  - `Email recipient` (unknown)

## Response 200:

  - `200` (unknown)
    Recipient account created successfully.

## Response 200 fields (application/json):

  - `id` (integer)
    ID of the recipient. Use the returned id as `sourceAccount` to specify the refund recipient when creating transfers.
    Example: 40000000

  - `creatorId` (integer)
    Account entity that owns the recipient account.
    Example: 41000000

  - `profileId` (integer)
    Specific profile that owns the recipient account.
    Example: 30000000

  - `name` (object)
    Recipient name details.

  - `name.fullName` (string)
    Recipient full name.
    Example: John Doe

  - `name.givenName` (string | null)
    Recipient first name.
    Example: null

  - `name.familyName` (string | null)
    Recipient surname.
    Example: null

  - `name.middleName` (string | null)
    Recipient middle name.
    Example: null

  - `name.patronymicName` (string | null)
    Recipient patronymic name (when applicable).
    Example: null

  - `name.cannotHavePatronymicName` (boolean | null)
    Indicates if the recipient cannot have a patronymic name (when applicable).
    Example: null

  - `currency` (string)
    3-character currency code.
    Example: GBP

  - `country` (string)
    2-character country code.
    Example: GB

  - `type` (string)
    Recipient account type.
    Example: SortCode

  - `legalEntityType` (string)
    Entity type of recipient account.
    Example: PERSON

  - `active` (boolean)
    Status of the recipient account.
    Example: true

  - `details` (object)
    Contains the details of the recipient account specific to its currency and type. The fields required (in the request) or present (in the response) vary depending on currency route and recipient type (e.g., sort code, IBAN, SWIFT, email).

  - `details.reference` (string | null)
    Recipient reference (applies for some routes).
    Example: null

  - `details.sortCode` (string)
    Recipient bank sort code (GBP example).
    Example: 040075

  - `details.accountNumber` (string)
    Recipient bank account number (GBP example).
    Example: 37778842

  - `details.hashedByLooseHashAlgorithm` (string)
    Recipient account hash.
    Example: ad245621b974efa3ef870895c3wer419a3f01af18a8a5790b47645dba6304194

  - `commonFieldMap` (object)
    Map of key lookup fields for the account.
    Example: {"accountNumberField":"accountNumber","bankCodeField":"sortCode"}

  - `hash` (string)
    Account hash for tracking changes to recipient details. This is useful for re-running any validation checks on the recipient, for example against fraud engines. The hash remains constant unless the recipient's name or information in the details object changes.
    Example: 666ef880f8aa6113fa112ba6531d3ed2c26dd9fgbd7de5136bfb827a6e800479

  - `accountSummary` (string)
    Summary of account details for ease of lookup. Can be used to display recipient details in your UI.
    Example: (04-00-75) 37778842

  - `longAccountSummary` (string)
    Longer account details summary. Can be used to display recipient details in your UI.
    Example: GBP account ending in 8842

  - `displayFields` (array)
    Lookup fields (key/label/value) for rendering in your front-end. Allows you to build a UI containing all the dynamic fields for a recipient individually.
    Example: [{"key":"details/sortCode","label":"UK sort code","value":"04-00-75"},{"key":"details/accountNumber","label":"Account number","value":"37778842"}]

  - `displayFields.key` (string)
    Account identifier key name.

  - `displayFields.label` (string)
    Account identifier display label.

  - `displayFields.value` (string)
    Account identifier value.

  - `isInternal` (boolean)
    Indicates whether recipient is internal.
    Example: false

  - `ownedByCustomer` (boolean)
    Inidicates if recipient account belongs to profile owner.
    Example: false

  - `ultimateBeneficiary` (object | null)
    The details for the ultimate beneficiary of this recipient.

  - `ultimateBeneficiary.accountNumber` (string | null)
    Ultimate beneficiary account number.
    Example: 37778842

  - `ultimateBeneficiary.bankName` (string | null)
    Ultimate beneficiary bank name.
    Example: Wise Payments Limited

  - `ultimateBeneficiary.bankCode` (string | null)
    Ultimate beneficiary bank code.
    Example: 026073150

  - `ultimateBeneficiary.name` (object, required)
    Ultimate beneficiary name.

  - `ultimateBeneficiary.name.fullName` (string, required)
    Ultimate beneficiary's full name.
    Example: John Doe

  - `ultimateBeneficiary.address` (object | null)
    Ultimate beneficiary address.

  - `ultimateBeneficiary.address.country` (string)
    Example: US

  - `ultimateBeneficiary.address.firstLine` (string)

  - `ultimateBeneficiary.address.postCode` (string)

  - `ultimateBeneficiary.address.city` (string)

  - `ultimateBeneficiary.address.state` (string)

  - `ultimateBeneficiary.bankAddress` (object | null)
    Ultimate beneficiary bank address.

  - `ultimateBeneficiary.bankAddress.country` (string)
    Example: US

  - `ultimateBeneficiary.bankAddress.firstLine` (string)

  - `ultimateBeneficiary.bankAddress.postCode` (string)

  - `ultimateBeneficiary.bankAddress.city` (string)

  - `ultimateBeneficiary.bankAddress.state` (string)

  - `confirmations` (object)
    Contains 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/recipients/recipient-verification) for details about how to handle this verification data by currency.

  - `confirmations.acceptedOutcomes` (boolean)
    Indicates whether we've received an explicit customer acceptance.
    Example: false

  - `confirmations.acceptedAt` (string | null)
    Timestamp indicating date and time of outcome acceptance. Value is `null` until acceptance received.
    Example: null

  - `confirmations.quoteId` (string | null)
    If the confirmation check was run as part of a quote compatibility check, then the `quoteId` is included in the result. If `quoteId` is present, the outcome acceptance needs the `quoteId` to be specified as well.
    Example: null

  - `confirmations.outcomes` (array)
    Array of confirmation outcomes. Currently, it is safe to assume there is only one element in the outcomes array.

  - `confirmations.outcomes.type` (string)
    The type of confirmation. Possible values: `ACCOUNT_EXISTENCE`, `NAME_MATCHING`, `NAME_RESOLUTION`.
    Example: NAME_MATCHING

  - `confirmations.outcomes.timestamp` (string)
    Timestamp of when the confirmation check was performed.
    Example: 2024-11-11T23:58:11.105916743Z

  - `confirmations.outcomes.outcome` (string)
    The actual outcome of the confirmation check. Possible values: `SUCCESS`, `PARTIAL_FAILURE`, `FAILURE`, `COULD_NOT_CHECK`.
    Example: PARTIAL_FAILURE

  - `confirmations.outcomes.requiresCustomerAcceptance` (boolean)
    Indicates whether we require customer acceptance.
The value for this field (`true` or `false`) depends on the currency and the nature of the confirmation.
If `true`, you must present your customer with the ability to accept or decline the confirmation result.
    Example: true

  - `confirmations.outcomes.fieldsChecked` (array)
    Fields used to confirm the account.
    Example: ["name/fullName","details/accountNumber"]

  - `confirmations.outcomes.providedName` (string)
    The name the customer provided when creating the recipient account. Only populated for `NAME_MATCHING` and `NAME_RESOLUTION` types for certain outcomes.
    Example: John Doe

  - `confirmations.outcomes.resolvedName` (string)
    The name that we resolved during name matching or name resolution.
    Example: Joe Doe

  - `confirmations.outcomes.message` (string)
    Customer-facing message about the outcome of the check.
    Example: The name entered is slightly different to the name on the account.

  - `confirmations.outcomes.recommendedUpdates` (array)
    Shows the correct values for some of the fields checked.

  - `confirmations.outcomes.recommendedUpdates.path` (string)
    The field path to update.
    Example: name/fullName

  - `confirmations.outcomes.recommendedUpdates.value` (string)
    The recommended value for the field.
    Example: Joe Doe

## Response 200 headers (application/json):

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 400:

  - `400` (unknown)
    Bad Request — validation error.

## Response 400 fields (application/json):

  - `timestamp` (string)
    Timestamp of occurrence (ISO-8601 timestamp).
    Example: 2024-12-06T06:43:52.472471344Z

  - `errors` (array)
    List of validation errors.

  - `errors.code` (string)
    Error code (for example, `NOT_VALID`).
    Example: NOT_VALID

  - `errors.message` (string)
    Human-readable error message.
    Example: Unknown bank code. Please check the sort code is correct, or contact customer support for more information.

  - `errors.path` (string)
    Field associated with the error.
    Example: sortCode

  - `errors.arguments` (array)
    Field with error as well as input value.
    Example: ["sortCode","231479"]

## Response 400 headers (application/json):

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 401:

  - `401` (unknown)
    Unauthorized.

## Response 401 headers:

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 429:

  - `429` (unknown)
    Rate limit exceeded. Retry after the number of seconds specified in the `Retry-After` header.

## Response 429 headers (application/json):

  - `Retry-After` (integer)
    Number of seconds to wait before retrying the request.
    Example: 5

  - `X-Rate-Limited-By` (string)
    Identifies the rate limiter that triggered the 429 response.
    Example: wise-public-api

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 401 examples:

  - `UnauthorizedResponse` (unknown)

