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

# Get a transfer

> Returns the current status and details of a payout transfer by its `transfer_id` (the value returned by `POST /api/payouts/transfer`).

Lookup is global by `transfer_id`: any valid API key can retrieve any transfer — including transfers created from the dashboard or with a different API key — as long as you know its `transfer_id`. Transfer IDs are unguessable 24-character identifiers.

**Status values:**
- `ready_to_process` — waiting for your USDC deposit
- `processing` — deposit received; funds are being converted
- `transfer_created` — conversion complete; outgoing fiat transfer to recipient has been created
- `completed` — outgoing payment sent to recipient
- `failed` — transfer failed at some stage; check the `error` field

**Rate limit:** 30 requests/minute.



## OpenAPI

````yaml /openapi.json get /api/payouts/transfer/{transfer_id}
openapi: 3.0.3
info:
  title: MW Payouts API
  version: 1.0.0
  description: >-
    The MW Payouts API lets you programmatically retrieve exchange-rate quotes,
    calculate platform fees, and submit USDC-to-fiat payout transfers on behalf
    of your account.


    All requests must be authenticated with an API key obtained from the
    **Developers** section of the dashboard. API keys are for **server-side use
    only** — never embed them in client-side code.
  contact:
    name: MW Support
    email: support@madhousewallet.com
servers:
  - url: https://business.madhousewallet.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Payouts
    description: USDC-to-fiat payout operations
  - name: Recipients
    description: Payout recipient management
paths:
  /api/payouts/transfer/{transfer_id}:
    get:
      tags:
        - Payouts
      summary: Get a transfer
      description: >-
        Returns the current status and details of a payout transfer by its
        `transfer_id` (the value returned by `POST /api/payouts/transfer`).


        Lookup is global by `transfer_id`: any valid API key can retrieve any
        transfer — including transfers created from the dashboard or with a
        different API key — as long as you know its `transfer_id`. Transfer IDs
        are unguessable 24-character identifiers.


        **Status values:**

        - `ready_to_process` — waiting for your USDC deposit

        - `processing` — deposit received; funds are being converted

        - `transfer_created` — conversion complete; outgoing fiat transfer to
        recipient has been created

        - `completed` — outgoing payment sent to recipient

        - `failed` — transfer failed at some stage; check the `error` field


        **Rate limit:** 30 requests/minute.
      operationId: getTransfer
      parameters:
        - name: transfer_id
          in: path
          required: true
          schema:
            type: string
            example: 507f1f77bcf86cd799439011
          description: The `transfer_id` returned by POST /api/payouts/transfer
      responses:
        '200':
          description: Transfer found
          content:
            application/json:
              schema:
                type: object
                properties:
                  transfer:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Transfer ID
                        example: 507f1f77bcf86cd799439011
                      user_id:
                        type: string
                        description: Your account user ID
                        example: usr_550e8400e29b41d4a716446655440000
                      type:
                        type: string
                        enum:
                          - payout
                        example: payout
                      amount:
                        type: number
                        description: USD amount sent
                        example: 1000
                      currency:
                        type: string
                        nullable: true
                        description: Target payout currency
                        example: EUR
                      status:
                        type: string
                        enum:
                          - ready_to_process
                          - processing
                          - transfer_created
                          - completed
                          - failed
                          - refunded
                        description: Current transfer status
                        example: processing
                      status_label:
                        type: string
                        description: Human-readable status description
                        example: Deposit received — processing
                      recipientId:
                        type: integer
                        description: Recipient account ID
                        example: 12345678
                      recipient:
                        $ref: '#/components/schemas/RecipientSnapshot'
                        description: >-
                          Snapshot of the recipient account at transfer creation
                          time. Present even if the recipient has since been
                          deleted.
                      customerUuid:
                        type: string
                        nullable: true
                        format: uuid
                        description: Your caller-supplied UUID for this transfer
                        example: 550e8400-e29b-41d4-a716-446655440000
                      customerEmail:
                        type: string
                        nullable: true
                        format: email
                        description: Email address for transfer notifications
                        example: user@example.com
                      sourceToken:
                        type: string
                        nullable: true
                        description: Source token used for the deposit (e.g. usdc)
                        example: usdc
                      sourceNetwork:
                        type: string
                        nullable: true
                        description: Source network used for the deposit (e.g. base)
                        example: base
                      quote:
                        type: object
                        nullable: true
                        description: Quote snapshot captured at transfer creation time
                        properties:
                          sourceAmount:
                            type: number
                            description: Original USD input amount
                            example: 1000
                          providerCharge:
                            type: number
                            description: >-
                              Provider processing fee in USD deducted from
                              source amount before conversion (absent when zero)
                            example: 2
                          serviceFeePercent:
                            type: number
                            description: >-
                              Platform service fee as a percentage of the source
                              amount
                            example: 1.5
                          serviceFeeFixed:
                            type: number
                            nullable: true
                            description: >-
                              Fixed EUR fee deducted after conversion (absent
                              when zero)
                            example: 0.5
                          targetCurrency:
                            type: string
                            description: ISO currency code of the payout destination
                            example: EUR
                          usdToTargetRate:
                            type: number
                            description: USD to target currency exchange rate
                            example: 0.9183
                          targetAmount:
                            type: number
                            nullable: true
                            description: Expected recipient amount in target currency
                            example: 915.28
                          transferFee:
                            type: number
                            nullable: true
                            description: >-
                              Transfer provider fee charged by the settlement
                              layer (deducted from target amount)
                            example: 0.58
                          estimatedDelivery:
                            type: string
                            nullable: true
                            format: date-time
                            description: Estimated delivery time (ISO 8601)
                            example: '2026-03-26T15:52:37Z'
                      wallet_address:
                        type: string
                        nullable: true
                        description: >-
                          The address (EVM, Solana, or Tron) specified as the
                          sender at transfer creation time
                        example: '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'
                      error:
                        type: string
                        nullable: true
                        description: Error message when status is `failed`; null otherwise
                        example: null
                      refund_tx_hash:
                        type: string
                        nullable: true
                        description: >-
                          On-chain transaction hash (Base) of the USDC refund
                          returned to the sender's wallet. Present only when
                          `status` is `refunded`; null otherwise.
                        example: null
                      reference:
                        type: string
                        description: >-
                          Payment reference string embedded in the transfer.
                          This value appears in recipient bank statements as the
                          remittance information.
                        example: 507f1f77bcf86cd799439011
                      timestamp:
                        type: string
                        format: date-time
                        description: ISO timestamp when the transfer was created
                        example: '2026-03-22T14:30:00.000Z'
                      updated_at:
                        type: string
                        format: date-time
                        description: ISO timestamp of the last status update
                        example: '2026-03-22T14:35:00.000Z'
                    required:
                      - id
                      - type
                      - amount
                      - currency
                      - status
                      - status_label
                      - recipientId
                      - reference
                      - timestamp
                      - updated_at
                required:
                  - transfer
              example:
                transfer:
                  id: 507f1f77bcf86cd799439011
                  type: payout
                  amount: 1000
                  currency: EUR
                  status: processing
                  status_label: Deposit received — processing
                  recipientId: 12345678
                  recipient:
                    id: 12345678
                    accountHolderName: Jane Doe
                    currency: EUR
                    type: iban
                    country: DE
                    details:
                      legalType: PRIVATE
                      iban: DE89370400440532013000
                  customerUuid: 550e8400-e29b-41d4-a716-446655440000
                  customerEmail: user@example.com
                  sourceToken: usdc
                  sourceNetwork: base
                  quote:
                    sourceAmount: 1000
                    providerCharge: 2
                    serviceFeePercent: 1.5
                    targetCurrency: EUR
                    usdToTargetRate: 0.9183
                    targetAmount: 915.28
                    transferFee: 0.58
                    estimatedDelivery: '2026-03-26T15:52:37Z'
                  wallet_address: '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'
                  error: null
                  refund_tx_hash: null
                  reference: 507f1f77bcf86cd799439011
                  timestamp: '2026-03-22T14:30:00.000Z'
                  updated_at: '2026-03-22T14:32:00.000Z'
        '400':
          description: Invalid transfer ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Transfer not found or not owned by your account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded (30 requests/minute per key)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    RecipientSnapshot:
      type: object
      nullable: true
      description: >-
        Snapshot of the recipient account captured at transfer creation time.
        Present even if the recipient has since been deleted.
      properties:
        id:
          type: integer
          description: Recipient account ID
          example: 12345678
        accountHolderName:
          type: string
          description: Name on the account
          example: Jane Doe
        currency:
          type: string
          description: ISO 4217 currency code
          example: EUR
        type:
          type: string
          description: Account type (e.g. iban, sort_code, aba)
          example: iban
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code
          example: DE
          nullable: true
        details:
          type: object
          description: Account-type-specific details (routing/account numbers, IBAN, etc.)
      required:
        - id
        - accountHolderName
        - currency
        - type
        - details
    Error:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message
      required:
        - error
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Pass your API key as a Bearer token: `Authorization: Bearer
        mw_live_<keyId>_<secret>`

````