---
title: "Create a cash balance transfer"
method: POST
path: "/payments/cash_balance_transfers"
tags: ["Cash Balance Transfers"]
---

# Create a cash balance transfer

`POST /payments/cash_balance_transfers`

Create an internal cash balance transfer between two account groups belonging to the same user and tenant. The cash leaves the source account group and arrives at the target account group as a single operation, with no external bank transfer. Only settled cash denominated in the same currency (EUR) can be transferred. Both account groups must be of the same type, and the type must be one of `PERSONAL`, `CHILD`, or `BUSINESS`.

## Headers

- `idempotency-key` string, uuid, required

## Request body

- object
  - `source_account_group_id` string, uuid, required — Account group unique identifier.
  - `target_account_group_id` string, uuid, required — Account group unique identifier.
  - `amount` string, required
  - `currency` 'EUR' | 'GBP', required — Alphabetic three-letter [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. * EUR - Euro * GBP - Pound Sterling

## Response `200`

Cash balance transfer

- object
  - `id` string, uuid, required — Cash balance transfer unique identifier
  - `created_at` string, date-time, required — Date and time when the resource was created. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
  - `updated_at` string, date-time, required — Date and time when the resource was last updated. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
  - `source_account_group_id` string, uuid, required — Account group unique identifier.
  - `target_account_group_id` string, uuid, required — Account group unique identifier.
  - `amount` string, required
  - `currency` 'EUR' | 'GBP', required — Alphabetic three-letter [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. * EUR - Euro * GBP - Pound Sterling
  - `status` 'ISSUED' | 'CONFIRMED' | 'CANCELLED', required — Status of the cash balance transfer. * ISSUED - Transfer has been created and the cash movement is in progress. * CONFIRMED - Cash was successfully moved from the source to the target account group. * CANCELLED - Transfer was cancelled and no cash was moved.
  - `cancellation_reason` string, nullable — Reason the transfer was cancelled. Present only when `status` is `CANCELLED`, otherwise `null`.

## Other responses

- `400` — Bad Request. The incoming request had a malformed parameter/object.
- `401` — Unauthorized. The caller has not been authenticated.
- `403` — Forbidden. The caller has been authenticated but is not allowed to take the requested action.
- `404` — Not Found. The requested resource could not be found.
- `406` — Not Acceptable. The resource does not have a current representation that would be acceptable to the user agent. "Accept" header defined unsupported value.
- `429` — Too Many Requests. The caller has exceeded their quota for the time period and has been throttled.
- `500` — Internal Server Error. The service encountered an unexpected error.
- `503` — Service Unavailable. The service handling for this request cannot be reached at this time.
- `504` — Gateway Timeout. The service gateway has reached its internal timeout.

---

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