# Create On-Us Transfer

Initiates an On-Us Transfer between two Pockets.
On-Us Transfers can be made in four directions (defined by `type`):
1. `PARTNER_CUSTOMER_FUNDING`: From a Partner’s Pocket to a Customer’s Pocket
2. `PARTNER_CUSTOMER_DEFUNDING`: From a Customer’s Pocket to a Partner’s Pocket
3. `INTERNAL_REALLOCATION`: Between two Pockets belonging to the same Customer
4. `PEER_TO_PEER`: From a Customer’s Pockets to Customer’s On-Us Counterparty

On-Us Transfer amounts can be specified two ways (defined by `amount.type`):
1. `REQUESTED_AMOUNT`: Transfer a specified dollar amount
2. `FULL_WITHDRAWAL`: Transfer the Pocket's total available balance (net of fees). `amount.type` cannot be `FULL_WITHDRAWAL` when `type` is `PARTNER_CUSTOMER_FUNDING`.

On-Us Transfers can be processed asynchronously or synchronously. **We strongly recommend processing On-Us Transfers asynchronously** (setting `async_mode` to `true`). Asynchronous transfers will be created in a `PENDING` state and status updates will be delivered via [Webhooks](/products/partner-api/guides/building/webhooks).

Endpoint: POST /api/v1/transfers/on-us/
Version: Version: cf52545e
Security: HTTPBearer

## Header parameters:

  - `x-jiko-idempotency` (string, required)

  - `x-jiko-signature` (string, required)

## Request fields (application/json):

  - `transfer_id` (any)
    The ID for this transfer, auto-generated if not provided.

  - `description` (any)
    A description of the transfer, visible on statements.

  - `end_to_end_identification` (any)
    Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain.

  - `from_account` (object, required)

  - `from_account.id` (string, required)

  - `from_account.type` (string, required)

  - `type` (string, required)
    Disburse funds from partner to customer.

  - `source` (string, required)
    The source of customer funds at the Partner institution.

  - `amount_usdc` (any)
    The amount, in USD cents. **Deprecated**, use `amount` instead.

  - `amount` (any)

  - `amount.amount_usdc` (integer, required)

  - `amount.type` (string, required)

  - `async_mode` (boolean)
    **Using asynchronous processing is strongly recommended.** Status updates will be delivered via Webhooks.

  - `type` (string, required)
    Withdraw funds from customer to partner.

  - `target` (string, required)
    The funds destination belonging to the customer at the Partner institution.

  - `type` (string, required)
    Move funds between accounts belonging to the same customer.

  - `transfer_type` (any)
    Type of internal reallocation transfer. BANK_TRANSFER (default): sells the CUSIP from the origin pocket and buys new CSIP for the destination pocket. Settlement is T+1. SECURITY_TRANSFER: no bank transaction occurs; CUSIPs are moved directly between pockets. This is instant but currently only allowed for jiko_net pockets.

  - `to_account` (object, required)

  - `to_account.id` (string, required)

  - `to_account.type` (string, required)

  - `type` (string, required)

## Response 201 fields (application/json):

  - `id` (string, required)

  - `status` (string, required)
    Enum: "PENDING", "COMPLETED", "REJECTED"

  - `reason` (any, required)

  - `transfer` (any, required)

  - `transfer.transfer_id` (any)
    The ID for this transfer, auto-generated if not provided.

  - `transfer.description` (any)
    A description of the transfer, visible on statements.

  - `transfer.end_to_end_identification` (any)
    Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain.

  - `transfer.from_account` (object, required)

  - `transfer.from_account.id` (string, required)

  - `transfer.from_account.type` (string, required)

  - `transfer.type` (string, required)

  - `transfer.source` (string, required)
    The source of customer funds at the Partner institution.

  - `transfer.amount` (object, required)

  - `transfer.amount.value` (integer, required)
    USD values are always in cents.

  - `transfer.amount.currency` (string, required)

  - `transfer.amount.formatted` (string)

  - `transfer.target` (string, required)
    The funds destination belonging to the customer at the Partner institution.

  - `transfer.transfer_type` (string, required)
    Enum: "BANK_TRANSFER", "SECURITY_TRANSFER"

  - `transfer.to_account` (object, required)

  - `transfer.to_account.id` (string, required)

  - `transfer.to_account.type` (string, required)

  - `fees` (array, required)

  - `fees.type` (string, required)

  - `object_type` (string, required)

## Response 422 fields (application/json):

  - `detail` (array)

  - `detail.loc` (array, required)

  - `detail.msg` (string, required)

  - `detail.type` (string, required)

  - `detail.input` (any)

  - `detail.ctx` (object)

