---
title: "Create a Payment"
method: POST
path: "/v1/transit/payment"
tags: ["Crypto Orchestration"]
---

# Create a Payment

`POST /v1/transit/payment`

Create a new payment order for a supported integration type (ByBit, Kraken, OKX, Pass Through)

## Request body

- object
  - `integration_type` 'BYBIT' | 'PASS_THROUGH' | 'KRAKEN' | 'OKX', required — Integration provider type.
  - `order_info` object, required
    - `merchant_name` string
    - `client_id` string
    - `payment_type` 'E_COMMERCE', required
    - `merchant_trade_no` string, uuid, required
    - `order_amount` string — Conditionally required when quote_id is not provided.
    - `quote_id` string — Conditionally required when order_amount is not provided.
    - `currency` 'USDC' | 'USDT' | 'BTC' | 'ETH', required
    - `rail` 'SOLANA' | 'BITCOIN' | 'ETHEREUM' | 'TRON' | 'BASE' — Blockchain rail for the destination. Required for OKX and Kraken.
    - `currency_type` 'crypto', required
    - `redirection_url` string, uri — Optional redirect URL after payment completion. Used for OKX.
    - `remarks` string — Optional order remarks.
    - `success_url` string, uri, required
    - `failed_url` string, uri, required
    - `order_expire_time` integer
    - `customer` object
      - `uid` string, required
      - `external_user_id` string, required
      - `user_name` string, required
      - `register_time` integer, required
      - `kyc_country` string, required
    - `goods` object[], required
      - `shopping_name` string, required
      - `mcc_code` string, required
      - `goods_name` string, required
      - `goods_detail` string
    - `env` object, required
      - `terminal_type` 'APP' | 'WEB' | 'WAP' | 'MINIAPP' | 'OTHERS', required
      - `device` string, required
      - `browser_version` string, required
      - `ip` string, ipv4, required
    - `risk_info` object
      - `terminal_type` 'APP' | 'WEB' | 'WAP' | 'MINIAPP' | 'OTHERS', required
  - `fin` object — Required when quote_id is not provided.
    - `settlement_config` object, required
      - `settlement_via` 'ONE_TO_ONE' | 'MARKET_ORDER' | 'FEE_RETENTION', required
      - `destination_details` object, required
        - `wallet_address` string, required
        - `currency` 'USDC' | 'USDT' | 'BTC' | 'ETH' | 'PYUSD', required
        - `rail` 'SOLANA' | 'BITCOIN' | 'ETHEREUM' | 'BASE' | 'TRON', required
    - `developer_fee` object, nullable — Developer fee configuration. Nullable. Both fields default to 0. Used as a sibling of settlement_config for OKX.
      - `fixed` string — Fixed fee in USD per transaction. Defaults to 0.
      - `percentage` string — Percentage fee applied to order_amount. Defaults to 0.

## Response `200`

Payment created successfully

- object
  - `data` object
    - `payment_id` string, uuid
    - `integration_type` string
    - `provider_response` object — Provider-specific response fields. Shape varies by integration_type.
      - `pay_id` string — Provider-generated payment ID.
      - `terminal_type` string, nullable — Terminal type used for the payment. Present for ByBit orders.
      - `expire_time` integer — Unix timestamp when the payment link expires.
      - `create_time` integer — Unix timestamp when the order was created.
      - `checkout_link` string — Payment checkout link. For OKX orders this is the QR-code deeplink.
      - `qr_content` string, nullable — Base64-encoded QR code image. Present for ByBit orders.

## Other responses

- `401` — Authentication failed due to invalid credentials
- `422` — Validation error detected by Fin
- `428` — Error thrown from provider (forwards partner's HTTP status code)

---

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