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

# Wallet to Wallet (Internal Transfer)

> Move money from one wallet to another on your platform. A `transfer`
payment — no external rail or provider.

Address the destination one of two ways (send exactly one):

- `destination_wallet_id` — a wallet UUID you already know. The server
  resolves the owning user from the wallet.
- `destination_payee_id` — a **payee addressed by email**. Funds route to
  the matching user's wallet, or to a held inbound-only wallet (a ghost
  recipient is provisioned) until that person is added — see
  `recipient_status` in the response (`existing` vs `pending_claim`).



## OpenAPI

````yaml POST /v1/platform/payments/wallet-to-wallet
openapi: 3.1.0
info:
  title: Finogate Platform API v1
  version: 0.1.0
servers:
  - url: https://api-sandbox.finogates.com
    description: Sandbox
  - url: https://api.finogates.com
    description: Production
security: []
tags:
  - name: auth
  - name: users
  - name: payees
  - name: verification
  - name: bank accounts
  - name: card processing
  - name: digital-assets
  - name: international
  - name: onboarding
  - name: pending-applications
  - name: wallets
  - name: payments
  - name: catalog
  - name: webhooks
  - name: phone-numbers
  - name: sms
  - name: calls
  - name: listings
  - name: embed-tokens
paths:
  /v1/platform/payments/wallet-to-wallet:
    post:
      tags:
        - payments
      summary: Wallet → Wallet (internal transfer)
      description: >-
        Move money from one wallet to another on your platform. A `transfer`

        payment — no external rail or provider.


        Address the destination one of two ways (send exactly one):


        - `destination_wallet_id` — a wallet UUID you already know. The server
          resolves the owning user from the wallet.
        - `destination_payee_id` — a **payee addressed by email**. Funds route
        to
          the matching user's wallet, or to a held inbound-only wallet (a ghost
          recipient is provisioned) until that person is added — see
          `recipient_status` in the response (`existing` vs `pending_claim`).
      operationId: >-
        create_wallet_to_wallet_payment_v1_platform_payments_wallet_to_wallet_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentWalletToWalletCreate'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - _AuthenticatedBearer: []
components:
  schemas:
    PaymentWalletToWalletCreate:
      properties:
        wallet_id:
          type: string
          format: uuid
          title: Wallet Id
          description: >-
            Source wallet UUID — the tenant's master wallet or one of the user's
            wallets. Server validates tenant ownership and ``currency`` and
            resolves the owner from it.
          examples:
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
        user_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: User Id
          description: >-
            Optional safety cross-check — when sent, must match the owner of
            ``wallet_id``.
          examples:
            - b3a9b622-cc63-4d3c-aad6-2d8e29e6f9d4
        amount:
          type: number
          exclusiveMinimum: 0
          title: Amount
          description: Amount in major currency units (e.g. dollars).
          examples:
            - 100.5
        currency:
          type: string
          maxLength: 3
          minLength: 3
          title: Currency
          description: ISO 4217 currency code.
          default: USD
          examples:
            - USD
        idempotency_key:
          type: string
          maxLength: 120
          minLength: 1
          title: Idempotency Key
          description: Unique key to ensure idempotent payment creation.
          examples:
            - pay_req_20260604_abc123
        metadata:
          additionalProperties: true
          type: object
          title: Metadata
          description: Arbitrary key-value metadata to attach to the payment.
          examples:
            - order_id: ORD-12345
        destination_wallet_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Destination Wallet Id
          description: >-
            Destination wallet UUID to credit. Server validates tenant ownership
            and ``currency`` and resolves the owner from it. Mutually exclusive
            with ``destination_payee_id`` — send one.
          examples:
            - c3d4e5f6-a7b8-9012-3456-7890abcdef01
        destination_payee_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Destination Payee Id
          description: >-
            UUID of the payee to send to. The payee must have an email; funds
            route to the matching user's wallet, or a held inbound-only wallet
            until that person is added. Mutually exclusive with
            ``destination_wallet_id`` — send one.
          examples:
            - c8d9e0f1-a2b3-4567-89ab-cdef01234567
        notify_recipient:
          type: boolean
          title: Notify Recipient
          description: >-
            Payee transfers only. Records a preference to notify the recipient
            that funds arrived. Outbound notification delivery is not yet
            active.
          default: false
          examples:
            - false
      type: object
      required:
        - wallet_id
        - amount
        - idempotency_key
      title: PaymentWalletToWalletCreate
      description: >-
        Move funds to another wallet on your platform
        (``intent_type=transfer``).


        Address the destination one of two ways — send exactly one:


        - ``destination_wallet_id`` — a wallet UUID you already know.

        - ``destination_payee_id`` — a payee (addressed by email). Funds route
          to the matching user's wallet, or to a held inbound-only wallet (a
          ghost recipient is provisioned) until that person is added — see
          ``recipient_status`` in the response.
    CommonResponse:
      properties:
        status_code:
          type: integer
          title: Status Code
          description: HTTP status code for the response.
        data:
          title: Data
          description: Payload or error details.
        query_generated_time:
          type: integer
          title: Query Generated Time
          description: >-
            UTC timestamp (milliseconds since epoch) when response was
            generated.
      type: object
      required:
        - status_code
        - data
        - query_generated_time
      title: CommonResponse
      description: |-
        Standard response wrapper for single-object responses and errors.

        Generic over the payload type. A route that declares
        ``CommonResponse[SomeModel]`` gets the real ``data`` schema rendered in
        OpenAPI/Swagger; a bare ``CommonResponse`` leaves ``data`` untyped.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    _AuthenticatedBearer:
      type: oauth2
      flows:
        password:
          scopes: {}
          tokenUrl: /v1/platform/auth/token

````