# Create On-Chain Transfer

Creates an on-chain USDC transfer (withdrawal) from a Jiko pocket to an external crypto wallet counterparty.
The counterparty must be a `LINKED` crypto wallet counterparty owned by the pocket's customer.
- A counterparty that does not exist, or belongs to another customer, returns `412` `CounterpartyNotFoundError`.
- A counterparty that is not `LINKED` (`PENDING`, `FAILED`, `UNLINKED` or `EXTERNAL_ACCOUNT_CLOSED`) returns `412` `CounterpartyNotVerifiedError`.
- An amount over the transaction or daily limit, or not above the withdrawal minimum, returns `412`.

None of these create a transfer.
Creating on-chain transfers isn't available by default and must be enabled; contact your Jiko point of contact to learn more. Requests made without it enabled are rejected with a `403`.
The transfer is returned in a `PROCESSING` state and moves to `COMPLETED` or `FAILED`. Status updates are delivered via [Webhooks](/products/partner-api/guides/building/webhooks) as `transfers.crypto.withdrawal.success` and `transfers.crypto.withdrawal.rejected` events.

Endpoint: POST /api/v1/transfers/on-chain/
Version: Version: e1d7ae01
Security: HTTPBearer

## Security:

  - `HTTPBearer` (unknown)
    http bearer

## Header parameters:

  - `x-jiko-idempotency` (string, required)
    A UUID you generate to identify this request. Reusing a value that was already sent is rejected as a duplicate request.

  - `x-jiko-signature` (string, required)
    Base64-encoded HMAC-SHA256 hash of `x-jiko-idempotency + request pathname + body`, keyed with your shared secret. See [Authentication](/products/partner-api/guides/building/auth) for the full algorithm and a code sample.

## Request fields (application/json):

  - `transfer_id` (any)
    Optional client-generated transfer ID for idempotency

  - `pocket_id` (string, required)
    Also known as jiko_account_id

  - `counterparty_id` (string, required)
    ID of the verified crypto wallet counterparty

  - `amount_usdc` (integer, required)
    Transfer amount in USD cents

## Response 201:

  - `201` (unknown)
    Successful Response

## Response 201 fields (application/json):

  - `id` (string, required)

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

  - `pocket_id` (string, required)

  - `counterparty_id` (string, required)

  - `amount` (object, required)

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

  - `amount.currency` (string, required)

  - `amount.formatted` (string)

  - `time_created` (string, required)

  - `object_type` (string, required)

## Response 422:

  - `422` (unknown)
    Validation Error

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

