> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getsly.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a transfer

> Move funds between accounts. Same-currency transfers settle instantly; cross-currency transfers require a prior `quote_id` from POST /v1/quotes. Always send an `Idempotency-Key` header to safely retry.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/transfers
openapi: 3.1.0
info:
  title: Sly API
  description: >-
    The Agentic Economy Platform — stablecoin payments, agent wallets,
    multi-protocol commerce, and AI agent orchestration.
  version: 1.0.0
  contact:
    name: Sly
    url: https://getsly.ai
    email: support@getsly.ai
servers:
  - url: https://api.getsly.ai/v1
    description: Production
  - url: https://sandbox.getsly.ai/v1
    description: Sandbox
security:
  - bearerAuth: []
paths:
  /v1/transfers:
    post:
      tags:
        - Transfers
      summary: Create a transfer
      description: >-
        Move funds between accounts. Same-currency transfers settle instantly;
        cross-currency transfers require a prior `quote_id` from POST
        /v1/quotes. Always send an `Idempotency-Key` header to safely retry.
      parameters:
        - schema:
            type: string
            description: Prevents duplicate transfers on retry; cached for 24h
          required: false
          description: Prevents duplicate transfers on retry; cached for 24h
          name: idempotency-key
          in: header
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransferInput'
      responses:
        '201':
          description: Transfer created (may still be pending settlement)
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Transfer'
                required:
                  - data
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Insufficient balance or quote required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: KYA tier, wallet policy, or approval threshold blocked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Idempotency key reused with different parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    CreateTransferInput:
      type: object
      properties:
        fromAccountId:
          type: string
          format: uuid
        toAccountId:
          type: string
          format: uuid
        amount:
          type: number
          exclusiveMinimum: 0
        destinationCurrency:
          type: string
        quoteId:
          type: string
          format: uuid
          description: >-
            Required for cross-currency transfers; lock FX rate via POST
            /v1/quotes first
        description:
          type: string
          maxLength: 500
      required:
        - fromAccountId
        - toAccountId
        - amount
    Transfer:
      type: object
      properties:
        id:
          type: string
          format: uuid
        type:
          type: string
          enum:
            - cross_border
            - internal
            - stream_start
            - stream_withdraw
            - stream_cancel
            - wrap
            - unwrap
            - x402
        status:
          type: string
          enum:
            - pending
            - processing
            - completed
            - failed
            - cancelled
        amount:
          type: string
        currency:
          type: string
        from_account_id:
          type:
            - string
            - 'null'
          format: uuid
        to_account_id:
          type:
            - string
            - 'null'
          format: uuid
        from_wallet_id:
          type:
            - string
            - 'null'
          format: uuid
        to_wallet_id:
          type:
            - string
            - 'null'
          format: uuid
        description:
          type:
            - string
            - 'null'
        memo:
          type:
            - string
            - 'null'
        quote_id:
          type:
            - string
            - 'null'
          format: uuid
        destination_currency:
          type:
            - string
            - 'null'
        initiated_by_type:
          type:
            - string
            - 'null'
          enum:
            - user
            - api_key
            - agent
            - portal
            - system
        initiated_by_id:
          type:
            - string
            - 'null'
        protocol:
          type:
            - string
            - 'null'
        protocol_metadata:
          type:
            - object
            - 'null'
          additionalProperties: {}
        failure_reason:
          type:
            - string
            - 'null'
        completed_at:
          type:
            - string
            - 'null'
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      required:
        - id
        - type
        - status
        - amount
        - currency
        - created_at
        - updated_at
    Error:
      type: object
      properties:
        error:
          type: string
        code:
          type: string
        details: {}
        request_id:
          type: string
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key (pk_test_* or pk_live_*), JWT session, agent token (agent_*),
        Ed25519 session (sess_*), or portal token (portal_*).

````