---
title: "POST /api/v1/transfer"
method: POST
path: "/api/v1/transfer"
tags: ["Transfers"]
---

# POST /api/v1/transfer

`POST /api/v1/transfer`

Initiate an offramp payment for an existing customer

## Headers

- `idempotency-key` string, uuid, required — Required for mutating calls. Use a V4 UUID. The server stores the first result for 24h and returns it on subsequent retries with the same key.

## Request body

- CreateTransferRequest — Request schema for creating a transfer
  - `quote_id` string, uuid, required — UUID
  - `customer_id` string, uuid, required — Customer UUID
  - `destination` union, required
    - object
      - `type` 'bank', required
      - `recipient_type` 'individual' | 'business' — Beneficiary type. individual → account_holder_name is treated as the person's full name; business → treated as the company name. Required for payouts in AED, CAD, EUR, GBP, MXN, USD; optional for other currencies.
      - `date_of_birth` string — Beneficiary date of birth (YYYY-MM-DD). Required when recipient_type is individual for payouts in AED, CAD, EUR, GBP, MXN, USD. Not required for business beneficiaries.
      - `account_holder_name` string, required — Name of the bank account holder (or company name when recipient_type=business)
      - `account_number` string — Bank account number (required if iban is not provided)
      - `iban` string — International Bank Account Number (required if account_number is not provided)
      - `bank_name` string, required — Name of the bank
      - `bank_country` string, required — Bank country code (ISO 2-letter)
      - `currency` string, required — Currency code (ISO 3-letter)
      - `account_type` 'savings' | 'checking' | 'payment' — Type of bank account
      - `branch_name` string — Bank branch name
      - `address` AddressApi
        - `street` string, required
        - `city` string, required
        - `state` string, required
        - `postal_code` string, required
        - `country` string, required — Country code (ISO 3166-1 alpha-2, lowercase)
      - `swift_code` string — SWIFT Code
      - `bic_code` string — Bank Identifier Code (BIC)
      - `ifsc_code` string — IFS Code (India)
      - `aba_code` string — ABA / Routing Number (US)
      - `sort_code` string — SORT Code (UK)
      - `branch_code` string — Branch Code
      - `bsb_code` string — BSB Code (Australia)
      - `bank_code` string — Bank Code
      - `cnaps` string — CNAPS (China)
      - `name_in_local_language` string — Account holder name in local language (e.g. Chinese characters for CNY)
      - `national_identification_number` string — National identification number of the account holder
      - `logistics_tracking_details` object[] — Logistics tracking details (required for CNY local payouts)
        - `tracking_number` string — Logistics tracking number
        - `logistics_provider` object
          - `name` string — Logistics provider name
          - `code` string — Logistics provider code
      - `documents` object[] — Supporting documents for the payout (e.g. invoice, contract)
        - `type` 'invoice' | 'contract' | 'other', required — Document type
        - `base64_url` string, required — Base64 data URI of the document (e.g. data:application/pdf;base64,...)
    - object
      - `type` 'crypto', required
      - `currency` string, required — Destination stablecoin currency code (e.g. USDC)
      - `network` string, required — Destination blockchain network (e.g. ethereum, polygon)
      - `address` string, required — Destination wallet address
  - `metadata` Metadata
  - `purpose_code` 'PAYMENT_FOR_SERVICES' | 'PAYMENT_FOR_SOFTWARE' | 'PAYMENT_FOR_IMPORTED_GOODS' | 'TRAVEL_SERVICES' | 'VENDOR_CONTRACTOR_PAYOUTS' | 'TRANSFER_TO_OWN_ACCOUNT' | 'INVESTMENT_IN_SHARES' | 'PURCHASE_OF_PROPERTY' | 'REPAYMENT_OF_LOANS' | 'SALARY' | 'PAYMENT_OF_PROPERTY_RENTAL' | 'INFORMATION_SERVICE_CHARGES' | 'ADVERTISING_PR_EXPENSES' | 'ROYALTY_FEES' | 'BROKER_COMMITMENT_FEES' | 'ADVISOR_TECHNICAL_FEES' | 'REPRESENTATIVE_OFFICE_EXPENSES' | 'TAX_PAYMENT' | 'TRANSPORTATION_FEES_FOR_GOODS' | 'CONSTRUCTION_COSTS' | 'INSURANCE_PREMIUM' | 'GENERAL_GOODS_TRADES' | 'INSURANCE_CLAIMS_PAYMENT' | 'FAMILY_MAINTENANCE' | 'EDUCATION_EXPENSES' | 'MEDICAL_TREATMENT' | 'DONATIONS' | 'MUTUAL_FUND_INVESTMENT' | 'CURRENCY_EXCHANGE' | 'USER_WITHDRAWAL' | 'ADVANCE_PAYMENTS_FOR_GOODS' | 'VENDOR_CONTRACTOR_SOFTWARE_PAYOUTS' | 'MERCHANT_SETTLEMENT' | 'REPATRIATION_FUND_SETTLEMENT' | 'PERSONAL_REMITTANCE' | 'RETURN_OF_FUNDS' — Purpose of the transfer

## Response `200`

Default Response

- TransferResponse — Response schema for a transfer
  - `id` string, uuid, required
  - `tenant_id` string, uuid, required
  - `customer_id` string, uuid, required
  - `quote_id` string, uuid, required
  - `type` 'offramp' | 'onramp', required — Type of transfer: offramp (crypto to fiat) or onramp (fiat to crypto)
  - `status` 'created' | 'unknown' | 'compliance_hold' | 'awaiting_funds_collection' | 'funds_collected' | 'in_progress' | 'payment_submitted' | 'payment_processed' | 'completed' | 'failed' | 'cancelled' | 'expired', required — Status of the transfer in display format
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `metadata` Metadata
  - `source_deposit_instructions` union
    - object
      - `wallet_address` string, required — Unique wallet address for this payment intent
      - `currency` string, required — Currency or token code (e.g., 'USDC', 'USDT')
      - `network` string, required — Blockchain network
      - `amount` string, required — Expected stablecoin amount in major units
    - object
      - `bank_name` string — Bank name for fiat deposit
      - `account_number` string — Bank account number
      - `iban` string — International Bank Account Number
      - `bic` string — Bank Identifier Code
      - `payment_rails` string[]
      - `bsb` string — BSB routing number (Australia)
      - `account_name` string — Account holder name
      - `reference` string — Payment reference
      - `currency` string, required — Fiat currency code
      - `amount` string, required — Expected fiat amount in major units
  - `destination` union
    - object
      - `amount` string, required — Destination amount in major units
      - `currency` string, required — Destination currency code
      - `network` string, required — Blockchain network
      - `wallet_address` string, required — Destination wallet address
    - object
      - `amount` string, required — Destination amount in major units
      - `currency` string, required — Destination currency code
      - `network` string, required
      - `account_holder_name` string
      - `account_number` string
      - `iban` string
      - `bank_name` string
      - `bank_country` string
      - `account_type` 'savings' | 'checking' | 'payment' — Type of bank account
      - `branch_name` string
      - `address` AddressApiOutput
        - `street` string, required
        - `city` string, required
        - `state` string, required
        - `postal_code` string, required
        - `country` string, required — Country code (ISO 3166-1 alpha-2, lowercase)
      - `swift_code` string
      - `bic_code` string
      - `ifsc_code` string
      - `aba_code` string
      - `sort_code` string
      - `branch_code` string
      - `bsb_code` string
      - `bank_code` string
      - `cnaps` string
      - `name_in_local_language` string
      - `national_identification_number` string
      - `logistics_tracking_details` object[]
        - `tracking_number` string
        - `logistics_provider` object
          - `name` string
          - `code` string
      - `documents` object[]
        - `type` 'invoice' | 'contract' | 'other'
  - `fees` object, nullable
    - `fx_fee` object
      - `amount` string, required
      - `currency` string, required
    - `integrator_fee` object
      - `amount` string, required
      - `currency` string, required
    - `platform_fee` object
      - `amount` string, required
      - `currency` string, required
    - `payment_method_fee` object
      - `amount` string, required
      - `currency` string, required
    - `network_fee` object
      - `amount` string, required
      - `currency` string, required
    - `total_fee` object
      - `amount` string, required
      - `currency` string, required
  - `exchange_rate` number, nullable
  - `origin` 'api' | 'otc', required

## Other responses

- `400` — Default Response
- `404` — Default Response
- `422` — Default Response
- `500` — Default Response

---

[API](https://skmtc.net/stables/apis/stables-api.md) · [All operations](https://skmtc.net/stables/apis/stables-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/stables/stables-api/revisions/40ed0bdb89e1/schema)
