# 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](/guides/developer/headers/correlation-id).

## 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

