# Convert or Move Money Between Balances

This endpoint allows conversion and movement of funds between balance accounts.

Convert across balance accounts:
Convert funds between two STANDARD balance accounts in different currencies. Requires a quote created with "payOut": "BALANCE".

Move money between balances:
- Add money to a same-currency jar (move from STANDARD to SAVINGS without conversion)
- Add money to another-currency jar (convert money using a quote)
- Withdraw money from a jar (move from SAVINGS to STANDARD without conversion)

Either amount or quoteId is required. Use quoteId for cross-currency movements.

Endpoint: POST /v2/profiles/{profileId}/balance-movements
Security: UserToken, PersonalToken

## Path parameters:

  - `profileId` (integer, required)
    The profile ID.

## Header parameters:

  - `X-idempotence-uuid` (string, required)
    Unique identifier assigned by you. Used for idempotency check purposes. Should your call fail for technical reasons then you can use the same value again for making a retry call.

  - `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.
    Example: "f47ac10b-58cc-4372-a567-0e02b2c3d479"

## Request fields (application/json):

  - `quoteId` (string)
    Quote ID. Required for cross-currency movements. Quote must be created with payOut: BALANCE.

  - `sourceBalanceId` (integer)
    Source balance ID. Required when moving between balances (with targetBalanceId).

  - `targetBalanceId` (integer)
    Target balance ID. Required when moving between balances (with sourceBalanceId).

  - `amount` (object)
    Amount to move. Required for same-currency movements. Either amount or quoteId must be provided.

  - `amount.value` (number)
    Amount value.

  - `amount.currency` (string)
    Currency code (ISO 4217 Alphabetic Code).

## Response 201 fields (application/json):

  - `id` (integer)
    Movement transaction ID.
    Example: 30000001

  - `type` (string)
    Type of movement.
    Enum: "DEPOSIT", "WITHDRAWAL", "CONVERSION"

  - `state` (string)
    State of the movement.
    Enum: "PENDING", "COMPLETED", "CANCELLED", "REVERSED"

  - `balancesAfter` (array)
    Balance states after the movement.

  - `balancesAfter.id` (integer)
    Balance ID.
    Example: 1

  - `balancesAfter.value` (number)
    Balance value after movement.
    Example: 10000594.71

  - `balancesAfter.currency` (string)
    Currency code.
    Example: "GBP"

  - `creationTime` (string)
    When the movement was created.
    Example: "2017-11-21T09:55:49.275Z"

  - `sourceAmount` (object)
    Source amount of the movement.

  - `sourceAmount.value` (number)
    Example: 113.48

  - `sourceAmount.currency` (string)
    Example: "EUR"

  - `targetAmount` (object)
    Target amount of the movement.

  - `targetAmount.value` (number)
    Example: 100

  - `targetAmount.currency` (string)
    Example: "GBP"

  - `rate` (number)
    Exchange rate applied to the conversion.
    Example: 0.88558

  - `feeAmounts` (array)
    Fee amounts charged for the movement.

  - `feeAmounts.value` (number)
    Example: 0.56

  - `feeAmounts.currency` (string)
    Example: "EUR"

  - `steps` (array)
    Steps involved in the movement.

  - `steps.id` (integer)
    Step ID.
    Example: 369588

  - `steps.type` (string)
    Step type.
    Example: "CONVERSION"

  - `steps.creationTime` (string)
    When the step was created.
    Example: "2017-11-21T09:55:49.276Z"

  - `steps.balancesAfter` (array)

  - `steps.balancesAfter.value` (number)
    Example: 9998887.01

  - `steps.balancesAfter.currency` (string)
    Example: "EUR"

  - `steps.sourceAmount` (object)

  - `steps.sourceAmount.value` (number)
    Example: 113.48

  - `steps.sourceAmount.currency` (string)
    Example: "EUR"

  - `steps.targetAmount` (object)

  - `steps.targetAmount.value` (number)
    Example: 100

  - `steps.targetAmount.currency` (string)
    Example: "GBP"

  - `steps.fee` (object)

  - `steps.fee.value` (number)
    Example: 0.56

  - `steps.fee.currency` (string)
    Example: "EUR"

  - `steps.rate` (number)
    Exchange rate applied.
    Example: 0.88558


