# Upgrade a managed account with IBAN

Assign an IBAN to a Managed Account.
IBANs enable managed accounts to receive and send funds via wire transfers.
Assigning an IBAN to a Managed Account may be done asynchronously, in which case the `ManagedAccountIBAN.state` will be set to `PENDING_ALLOCATION` until bank details are ready to use.

Endpoint: POST /managed_accounts/{id}/iban
Version: v3
Security: auth_token, api-key

## Security:

  - `auth_token` (unknown)
    http bearer JWT

  - `api-key` (unknown)
    apiKey in header api-key

## Path parameters:

  - `id` (string, required)
    The unique identifier of the Managed Account.

## Header parameters:

  - `idempotency-ref` (string)
    A unique call reference generated by the caller that, taking into consideration the payload as well as the operation itself, helps avoid duplicate operations. Idempotency reference uniqueness is maintained for at least 24 hours.

## Response 200:

  - `200` (unknown)
    Success

## Response 200 fields (application/json):

  - `state` (string, required)
    The state of the Managed Account's IBAN as follows:
- UNALLOCATED: The Managed Account has never been assigned an IBAN. Use the *managedAccountsIBANUpgrade* operation to assign an IBAN to a Managed Account.
- PENDING_ALLOCATION: The IBAN is being allocated to the Managed Account.
- ALLOCATED: An IBAN is allocated to the Managed Account.
    Enum: "UNALLOCATED", "PENDING_ALLOCATION", "ALLOCATED"

  - `bankAccountDetails` (array, required)
    A list of bank account details associated with the IBAN.
Multiple details can be provided if multiple IBAN providers are supported by your payment model.

  - `bankAccountDetails.beneficiaryNameAndSurname` (string, required)
    The beneficiary name and surname details to be used when initiating a deposit onto the IBAN.

  - `bankAccountDetails.beneficiaryBank` (string, required)
    The beneficiary bank name to be used when initiating a deposit onto the IBAN.

  - `bankAccountDetails.beneficiaryBankAddress` (string, required)
    The beneficiary bank address to be used when initiating a deposit onto the IBAN.

  - `bankAccountDetails.paymentReference` (string)
    A reference required by the partner bank to execute a deposit on the managed account.


If provided, make sure that this is included as part of the wire transfer details when initiating a deposit.

  - `bankAccountDetails.details` (any, required)
    The bank details required to initiate a deposit on the managed account.

The details required to deposit on the IBAN vary depending on the wire transfer channel that will be used.

  - `bankAccountDetails.details.iban` (string, required)
    International Bank Account Number, required for wire transfer over SEPA or RIX

  - `bankAccountDetails.details.bankIdentifierCode` (string)
    BIC, for wire transfer over SEPA or RIX

  - `bankAccountDetails.details.accountNumber` (string, required)
    Account number, required for wire transfer over Faster Payments.

  - `bankAccountDetails.details.sortCode` (string, required)
    Sort code, required for wire transfer over Faster Payments.

  - `bankAccountDetails.details.secondaryReference` (string)

  - `bankAccountDetails.details.iban` (string, required)
    International Bank Account Number, required for wire transfer over SWIFT.

  - `bankAccountDetails.details.code` (string, required)
    SWIFT code, identifying a particular bank or branch, required for wire transfer over SWIFT.

## Response 200 headers (application/json):

  - `request-ref` (string, required)
    A request identifier. Providing this reference when contacting our support team will help us investigate your query.

## Response 400:

  - `400` (unknown)
    Bad Request Error - Your request is invalid.

## Response 400 fields (application/json):

  - `message` (string)
    When present helps to identify and fix the problem.

  - `syntaxErrors` (object)
    Is returned as part of an HTTP error response whenever a syntax error is detected. A list of the fields together with their syntax error will be provided.

  - `syntaxErrors.invalidFields` (array)

  - `syntaxErrors.invalidFields.params` (array)

  - `syntaxErrors.invalidFields.fieldName` (string)

  - `syntaxErrors.invalidFields.error` (string)
    Enum: "REQUIRED", "HAS_TEXT", "REQUIRES", "SIZE", "RANGE", "IN", "NOT_IN", "REGEX", "EXACTLY", "AT_LEAST", "AT_MOST", "ALL_OR_NONE"

## Response 400 headers (application/json):

  - `request-ref` (string, required)
    A request identifier. Providing this reference when contacting our support team will help us investigate your query.

## Response 401:

  - `401` (unknown)
    Unauthorized - Your credentials or access token are invalid.

## Response 401 headers:

  - `request-ref` (string, required)
    A request identifier. Providing this reference when contacting our support team will help us investigate your query.

## Response 403:

  - `403` (unknown)
    Forbidden - Access to the requested resource or action is forbidden.

## Response 403 fields (application/json):

  - `errorCode` (string)
    Enum: "INSUFFICIENT_PERMISSIONS"

## Response 403 headers (application/json):

  - `request-ref` (string, required)
    A request identifier. Providing this reference when contacting our support team will help us investigate your query.

## Response 404:

  - `404` (unknown)
    Not found - The requested resource couldn't be found.

## Response 404 fields (application/json):

  - `code` (string)

  - `message` (string)

## Response 404 headers (application/json):

  - `request-ref` (string, required)
    A request identifier. Providing this reference when contacting our support team will help us investigate your query.

## Response 409:

  - `409` (unknown)
    Conflict

## Response 409 fields (application/json):

  - `errorCode` (string)
    Enum: "INSTRUMENT_ALREADY_UPGRADED_TO_IBAN", "INSTRUMENT_IS_NOT_ACTIVE", "IBAN_ALLOCATION_EXCEEDED", "IBAN_NOT_SUPPORTED", "IBAN_ALREADY_REQUESTED", "OWNER_NOT_VERIFIED"

## Response 429:

  - `429` (unknown)
    Too many requests.

## Response 429 headers:

  - `request-ref` (string, required)
    A request identifier. Providing this reference when contacting our support team will help us investigate your query.

  - `x-ratelimit-limit` (string, required)
    Example: `20, 10;w=60, 20;w=3600, 200;w=86400`
The first number (20) is the limit that has been exceeded.
The remaining numbers are the limits that are in force, with 'w' meaning 'window in seconds'. In this example `20;w=3600` was exceeded. 20 calls in 3600secs (1hr)

  - `x-ratelimit-reset` (integer, required)
    The number of seconds until the window is reset.

## Response 500:

  - `500` (unknown)
    Internal Server Error - There is a problem with the server. Please try again later.

## Response 500 headers:

  - `request-ref` (string, required)
    A request identifier. Providing this reference when contacting our support team will help us investigate your query.

## Response 503:

  - `503` (unknown)
    Service Unavailable - The requested service is temporarily unavailable. Please try again later.

## Response 503 headers:

  - `request-ref` (string, required)
    A request identifier. Providing this reference when contacting our support team will help us investigate your query.

## Response default:

  - `default` (unknown)
    Error

## Response default fields (application/json):

  - `code` (string)

  - `message` (string)

