Welcome

Welcome to Quantiex - the next-gen compliant DeFi payment and trading platform.

Quantiex is a compliant stablecoin settlement and payment solution built on the Web3 ecosystem. It simplifies your crypto-finance operations by combining full regulatory compliance with the speed, low costs, and global reach of decentralized infrastructure — enabling businesses and developers to accept, send, settle, and trade stablecoins seamlessly without the traditional headaches of legacy systems or unregulated crypto rails.

Our composable APIs and tools let you integrate compliant DeFi features quickly, whether you're building merchant acquiring, cross-border remittances, social invoicing, or advanced trading experiences — all while staying on the right side of regulations.

What you can build with Quantiex

Get Paid Anywhere

Empower your business with fast, low-cost acquiring and crypto payments. Accept stablecoin payments or seamless fiat conversions — online, in-app, at point-of-sale, or anywhere globally — backed by built-in compliance for secure, hassle-free operations.

Send Money Globally in Seconds, for Just Cents

Cross-border transfers arrive instantly, costing just a few cents. Utilize Web3 rails to move stablecoins (or fiat equivalents) worldwide with minimal fees, no intermediaries, and settlement in seconds instead of days.

Invoices

Create and share invoices instantly through your favorite social platforms. Generate professional, trackable invoices in moments, distribute them via Telegram, Discord, WhatsApp, X, email, or other channels, and enable recipients to pay directly with stablecoins or fiat — all automated and effortless.

Global Payroll

Seamlessly manage and disburse payroll to your international team across multiple countries. Automate compliant payouts in stablecoins or local fiat equivalents, handle multi-currency conversions, ensure regulatory adherence (tax, reporting, and KYC where required), and reduce costs and delays for distributed workforces.

Payment Flow

The following diagram illustrates the simplified payment flow:

┌──────────────┐
│   Create     │
│   Order      │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│   Create     │
│   Payment    │
│   Info       │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│   Customer   │
│   Pays       │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│   Payment    │
│   Confirmed  │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│   Settlement │
│   Completed  │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│   Withdraw   │
│   Funds      │
└──────────────┘

Getting Started

Prerequisites

Step 1: Login

To get started, you need to authenticate and obtain a JWT token. If you don't have an account yet, you'll need to register first (contact support or use the registration endpoint). Once you have credentials, use the login endpoint to authenticate.

What this does:

Important: Save the returned JWT token securely. You'll need it for all subsequent API requests.

curl -X POST https://api.quantiex.com/api/v1/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "merchant@example.com",
    "password": "SecurePassword123!"
  }'

Step 2: Complete KYB Verification

Know Your Business (KYB) verification is required before you can create orders and accept payments. This step submits your company's basic information for verification.

What this does:

Important:

curl -X POST https://api.quantiex.com/api/v1/kyb/basic \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "company_name": "Example Corp",
    "region_id": 1,
    "registration_number": "12345678",
    "entity_type_id": 1,
    "entity_type_other": ""
  }'

Note: Get region_id from GET /api/v1/dict/regions and entity_type_id from GET /api/v1/dict/entity-types.

Step 3: Create a Transaction Order

Once your KYB is approved, you can start creating orders. A transaction order represents a payment request from your customer. This is the first step in the payment flow.

What this does:

Use cases:

Create a transaction order:

curl -X POST https://api.quantiex.com/api/v1/transaction/setup \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "order_amount": 100.50,
    "currency": "USD",
    "transaction_id": "",
    "memo": "Payment for order #001"
  }'

Request Parameters:

Parameter Type Required Description
order_amount float64 Yes Order amount
currency string No Currency (default: USD)
transaction_id string No External order ID; if empty, auto-generated (format: YYYYMMDDHHmmss + 3 random digits)
memo string No Memo/notes

Response:

{
  "code": 0,
  "msg": "Success",
  "data": {
    "id": 1,
    "created_at": "2025-01-22T10:00:00+08:00",
    "updated_at": "2025-01-22T10:00:00+08:00",
    "merchant_id": "MBJ000001",
    "merchant_order_id": "MBJ0000012025012200001",
    "order_amount": "100.50",
    "currency": "USD",
    "transaction_id": "20250122100000001",
    "amount_random_suffix": "1234",
    "state": "Created",
    "payment_id": 0,
    "settlement_id": 0,
    "memo": "Payment for order #001"
  }
}

Step 3 (Alternative): Create an Invoice Order

Alternatively, you can create an invoice order for more detailed billing scenarios. Invoice orders support itemized billing with tax calculations and multiple line items.

What this does:

Use cases:

Alternatively, create an invoice order:

curl -X POST https://api.quantiex.com/api/v1/invoice/setup \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "invoice_date": "2025-01-22",
    "due_date": "2025-02-22",
    "from_email": "payer@example.com",
    "from_name": "Payer Company",
    "from_address": "Payer Address",
    "to_email": "receiver@example.com",
    "to_name": "Receiver Company",
    "to_address": "Receiver Address",
    "currency": "USD",
    "tax_rate": 0.1,
    "discount_amount": 0,
    "memo": "Invoice for services",
    "items": [
      {
        "item_name": "Consulting Service",
        "unit_price": 50.00,
        "quantity": 2,
        "sort_order": 1
      }
    ]
  }'

Request Parameters:

Parameter Type Required Description
invoice_date string Yes Invoice date (format: YYYY-MM-DD)
due_date string Yes Due date (format: YYYY-MM-DD)
from_email string Yes Payer email
from_name string Yes Payer name
from_address string No Payer address
to_email string Yes Receiver email
to_name string Yes Receiver name
to_address string No Receiver address
currency string Yes Currency
items array Yes Invoice items (at least one)

Invoice Item Parameters:

Parameter Type Required Description
item_name string Yes Item name
unit_price float64 Yes Unit price (must be > 0)
currency string No Currency (defaults to invoice currency)
unit string No Unit
quantity uint Yes Quantity

Response: Returns full invoice detail (same structure as invoice/detail). For new invoices, payment fields (paid_date, paid_amount, transaction_hash, etc.) are empty.

{
  "code": 0,
  "msg": "Success",
  "data": {
    "ID": 1,
    "invoice_number": "INV-MERCHANT-20240115-123456",
    "merchant_order_id": "MBJ0000012024011400001",
    "total_amount": 110.00,
    "amount_random_suffix": "1234",
    "state": "Created",
    "items": [...],
    "paid_date": "",
    "paid_amount": "",
    "transaction_hash": ""
  }
}

Note: The system auto-generates invoice number and merchant order ID. The response includes the full invoice detail; use data.ID or data.invoice_number to create payment information.

Step 4: Create Payment Information

After creating an order, you need to set up payment information to specify how customers should pay. This step configures the blockchain network, token, and calculates the exact payment amount.

What this does:

Important:

After creating an order, create payment information to receive payments:

curl -X POST https://api.quantiex.com/api/v1/order-payment/setup \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "order_type": "transaction",
    "order_id": 1,
    "network": "ethereum",
    "chain_id": "1",
    "token_symbol": "USDT",
    "token_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
    "token_decimal": 6
  }'

Request Parameters:

Parameter Type Required Description
order_type string Yes Order type: transaction or invoice
order_id uint Yes Order ID
network string Yes Blockchain network
chain_id string Yes Chain ID
token_symbol string Yes Token symbol (e.g., USDT, USDC)
token_address string Yes Token contract address
token_decimal int Yes Token decimal places (1-18)

Response:

{
  "code": 0,
  "msg": "Success",
  "data": {
    "payment": {
      "ID": 1,
      "merchant_id": "MBJ000001",
      "merchant_order_id": "MBJ0000012025012200001",
      "order_type": "transaction",
      "order_id": 1,
      "order_amount": "100.50",
      "currency": "USD",
      "payment_status": "Pending",
      "network": "ethereum",
      "chain_id": "1",
      "token_symbol": "USDT",
      "token_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
      "token_decimal": 6,
      "token_amount": "100.501234",
      "CreatedAt": "2025-01-22T10:00:00Z"
    }
  }
}

Key Information:

Important: Customers must send the exact token_amount to the Payment contract address configured for the chain. You can call GET /api/v1/blockchain/config (no auth) to get chain list, supported tokens, Payment contract address, and block_explorer_url for each chain (e.g. {block_explorer_url}/tx/{hash} for transaction links).

Step 4.1: Get Payment Options (for QR Code)

To show customers multiple chains/tokens and generate scan-to-pay QR codes, call the payment-options API with the merchant order ID (returned when creating the transaction or invoice). This is a public endpoint; no JWT required.

curl -X POST https://api.quantiex.com/api/v1/order-payment/payment-options \
  -H "Content-Type: application/json" \
  -d '{
    "order_type": "transaction",
    "merchant_order_id": "MBJ0000012025012200001"
  }'

Request Parameters:

Parameter Type Required Description
order_type string Yes Order type: transaction or invoice
merchant_order_id string Yes Merchant order ID (from transaction or invoice)

Response: Returns order_type, order_id, merchant_order_id, total_amount_usd, amount_random_suffix, and a payments array. Each item includes chain_id, network, token_symbol, token_address, token_decimal, token_amount, order_amount, display_amount, payment_uri (EIP-681 URI for wallet scan-to-pay; scheme is ethereum, chain specified by @chain_id), and rate info: rate, rate_updated_at, rate_source. Use payment_uri to generate QR codes. No user/merchant check; any caller can query by order_type and merchant_order_id.

Step 5: Check Payment Status

Monitor your payment orders to track their status and see when payments are confirmed.

Option A: Query by order (public, no auth) — Use POST /api/v1/order-payment/payment-status to poll payment status by merchant_order_id and order_type. No JWT required; returns empty payment_status if not found. Suitable for payment pages or external systems polling for confirmation.

curl -X POST https://api.quantiex.com/api/v1/order-payment/payment-status \
  -H "Content-Type: application/json" \
  -d '{
    "merchant_order_id": "MBJ0000012024011400001",
    "order_type": "transaction"
  }'

Option B: List with filters (requires JWT) — Query payment information with various filters.

What this does:

Payment statuses:

Check the payment status:

curl -X POST https://api.quantiex.com/api/v1/order-payment/list \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "page": 1,
    "pageSize": 10
  }'

Request Parameters:

Parameter Type Required Description
page int No Page number (default: 1)
pageSize int No Page size (default: 10)
merchant_order_id string No Filter by merchant order ID
order_type string No Filter by order type
payment_status string No Filter by payment status
network string No Filter by network
token_symbol string No Filter by token symbol

Response:

{
  "code": 0,
  "msg": "Success",
  "data": {
    "list": [
      {
        "ID": 1,
        "merchant_order_id": "MBJ0000012025012200001",
        "order_type": "transaction",
        "order_amount": "100.50",
        "currency": "USD",
        "payment_status": "Pending",
        "token_amount": "100.501234"
      }
    ],
    "total": 1
  }
}

Step 6: Create Withdrawal Request

Once you have available balance from settled payments, you can withdraw funds to your blockchain wallet address. This step creates a withdrawal request that will be processed after review.

What this does:

Important:

Create a withdrawal request:

curl -X POST https://api.quantiex.com/api/v1/withdraw/setup \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "withdraw_amount": "100.00",
    "currency": "USD",
    "withdraw_type": "blockchain",
    "network": "ethereum",
    "chain_id": "1",
    "token_symbol": "USDT",
    "token_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
    "to_address": "0x9876543210987654321098765432109876543210"
  }'

Request Parameters:

Parameter Type Required Description
withdraw_amount string Yes Withdrawal amount
currency string Yes Currency
withdraw_type string Yes Withdrawal type: blockchain
network string Yes Blockchain network
chain_id string Yes Chain ID
token_symbol string Yes Token symbol
token_address string Yes Token contract address
to_address string Yes Recipient wallet address

Response:

{
  "code": 0,
  "msg": "Success",
  "data": {
    "withdraw": {
      "ID": 1,
      "withdraw_no": "WD-20250122-00001",
      "withdraw_amount": "100.00",
      "withdraw_status": "Pending",
      "review_status": "Pending"
    }
  }
}

Note: The withdrawal request will be reviewed and processed. Check the withdrawal status using the withdrawal list endpoint.


Key API Endpoints

Authentication

Endpoint Method Description
/api/v1/send-code POST Request email verification code
/api/v1/register POST Register a new user account
/api/v1/login POST Login and get JWT token

Configuration & Rates (Public, no auth)

Endpoint Method Description
/api/v1/dict/regions GET Get region dictionary
/api/v1/dict/entity-types GET Get entity type dictionary
/api/v1/dict/banks GET Get bank list (for bank card withdrawal; optional query: country)
/api/v1/blockchain/config GET Get blockchain config (chains, tokens, block_explorer_url per chain; no sensitive fields)
/api/v1/blockchain/estimate-fee GET 取现交易手续费评估(query: chain_id;与取现时 Gas 计算一致)
/api/v1/token-rate/rate GET Get single token rate (query: token_symbol)
/api/v1/token-rate/rates GET Get all token rates
/api/v1/token-rate/convert POST Convert token amount to USD (body: token_symbol, token_amount)

Orders

Endpoint Method Description
/api/v1/transaction/setup POST Create a transaction order
/api/v1/transaction/list POST Get transaction list
/api/v1/transaction/detail POST Get transaction detail
/api/v1/invoice/setup POST Create an invoice
/api/v1/invoice/list POST Get invoice list
/api/v1/invoice/detail POST Get invoice detail (public; body: id or invoice_number, either one)
/api/v1/invoice/delete POST Delete an invoice

Payments

Endpoint Method Description
/api/v1/order-payment/setup POST Create payment information
/api/v1/order-payment/list POST Get payment order list (Admin: all merchants; others: own only)
/api/v1/order-payment/detail POST Get payment detail (Admin: any; others: own only)
/api/v1/order-payment/payment-options POST Get payment options by merchant_order_id (public; token amounts + EIP-681 QR URI)
/api/v1/order-payment/payment-status POST Query payment status by merchant_order_id and order_type (public; no auth; returns empty if not found)

Balances

Endpoint Method Description
/api/v1/balance/available-funds GET Get merchant available funds (total_usd, assets, rates)
/api/v1/balance/total GET Get total balance info (network must match config enabled chains; no record = 0)
/api/v1/balance/assets GET Get asset list by token_symbol only (no token_address); config enabled chains only; default 0 when no record
/api/v1/balance/history GET Get balance change history (network/chain_id must match config enabled chains)
/api/v1/balance/erc20 GET Query ERC20 token balance (config enabled chains only)

Withdrawals

Endpoint Method Description
/api/v1/withdraw/setup POST Create withdrawal request
/api/v1/withdraw/list POST Get withdrawal list (Admin: all; others: own only)
/api/v1/withdraw/detail POST Get withdrawal detail (Admin: any; others: own only)
/api/v1/withdraw/review POST Review withdrawal (approve/reject; requires withdraw_review permission)
/api/v1/withdraw/bank-info GET Get merchant's latest bank card withdrawal info (for pre-fill form)

Authentication

All API requests (except public endpoints) require JWT authentication.

Header Format

Authorization: Bearer {your_jwt_token}

Token Expiration and Refresh


Base URL

https://api.quantiex.com/api/v1

Security Best Practices

  1. Protect JWT tokens: Never expose tokens in client-side code or logs
  2. Use HTTPS: Always make API requests over HTTPS
  3. Validate responses: Always check the code field before processing data
  4. Handle errors gracefully: Implement proper error handling
  5. Monitor token expiration: Re-authenticate before tokens expire
  6. Secure storage: Store credentials securely