---
title: "Initiate Internal Transfer"
method: POST
path: "/v1/customers/{customer_id}/transfers"
tags: ["Transfers"]
---

# Initiate Internal Transfer

`POST /v1/customers/{customer_id}/transfers`

Create an internal transfer between customers on the platform.

Transfer assets from the source customer to a target customer specified by `target_customer_id`.

**Note**: Cross-entity transfers are supported. The target customer can belong to a different entity.

## Path parameters

- `customer_id` string, required

## Headers

- `Idempotency-Key` string, required

## Request body

- InternalTransferRequest — Request body for creating an internal transfer
  - `amount` string, required — Transfer amount
  - `asset` string, required — - Stablecoin assets: USDC, USDT, PYUSD, RLUSD, USDG, USDP, EURC, MXNB, 1USD(1USD/USDC conversion only, deposit/withdrawal not supported) - Digital assets: BTC - Fiat currencies: USD
  - `target_customer_id` string, required — Target customer ID (recipient's portfolio ID or account_id)
  - `memorandum` string, nullable — A string representing the message about the transaction.

## Response `201`

- InternalTransferResponse — Response for internal transfer operations
  - `transaction_id` string, required — Public transaction ID exposed by OpenAPI. Internally this maps to order IDs from the concrete transaction tables.
  - `idempotency_key` string, required — HTTP `Idempotency-Key` header value. Stricter than other IDs: ≤64 ASCII chars per the common REST API convention.
  - `status` 'PENDING' | 'COMPLETED' | 'FAILED', required
  - `amount` string, required — Transfer amount
  - `asset` string, required — - Stablecoin assets: USDC, USDT, PYUSD, RLUSD, USDG, USDP, EURC, MXNB, 1USD(1USD/USDC conversion only, deposit/withdrawal not supported) - Digital assets: BTC - Fiat currencies: USD
  - `from_customer_id` string, required — Portfolio ID — also exposed as `customer_id` in OpenAPI. Identifies one individual application / portfolio row within an entity.
  - `from_account_id` string, nullable
  - `to_customer_id` string, required — Portfolio ID — also exposed as `customer_id` in OpenAPI. Identifies one individual application / portfolio row within an entity.
  - `to_account_id` string, nullable
  - `memorandum` string, nullable — A string representing the message about the transaction.
  - `created_at` string, required
  - `modified_at` string, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found
- `405` — Method Not Allowed
- `409` — Conflict
- `422` — Unprocessable Entity - Invalid enum value (e.g., unsupported network or asset name)
- `500` — Internal Server Error

---

[API](https://skmtc.net/1money/apis/1money-openapi.md) · [All operations](https://skmtc.net/1money/apis/1money-openapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/1money/1money-openapi/revisions/aa2718d28cb5/schema)
