Skip to main content

Create Pay-in

Initiate a deposit to your account. Pay-ins accept fiat transfers (via bank transfer) or stablecoin deposits (on-chain). All pay-ins must reference a valid quote.

Endpoint

POST /v1/payins

Request Headers

HeaderRequiredDescription
X-API-KeyYesYour API key
Content-TypeYesapplication/json
Idempotency-KeyNoUnique identifier for idempotent retries

Request

curl -X POST https://api.thiqwave.com/v1/payins \
  -H "X-API-Key: your_api_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: unique_request_id" \
  -d '{
    "quote_id": "quote_1234567890",
    "source_currency": "AED",
    "destination_currency": "USDT",
    "destination_network": "ethereum",
    "destination_address": "0x742d35Cc6634C0532925a3b844Bc123e5fA42f9c",
    "amount": 50000,
    "metadata": {
      "customer_id": "cust_123"
    }
  }'

Request Body

FieldTypeRequiredDescription
quote_idstringNoQuote ID to lock in rates. If omitted, a new quote is created internally.
source_currencystringYesFiat currency code (AED, SAR, USD, EUR, GBP).
destination_currencystringYesStablecoin (USDT, USDC).
destination_networkstringYesBlockchain network: ethereum, base, polygon, tron, stellar, solana, xrpl, sui, hedera.
destination_addressstringYesWallet address to receive stablecoins.
amountintegerYesAmount in smallest fiat unit (e.g., 50000 AED fils).
metadataobjectNoKey-value pairs for your reference.

Response

{
  "payin_id": "payin_1234567890",
  "quote_id": "quote_1234567890",
  "status": "awaiting_deposit",
  "source_currency": "AED",
  "destination_currency": "USDT",
  "destination_network": "ethereum",
  "destination_address": "0x742d35Cc6634C0532925a3b844Bc123e5fA42f9c",
  "source_amount": 50000,
  "estimated_stablecoin_amount": "479.50",
  "payment_instructions": {
    "beneficiary_account": "1234567890",
    "beneficiary_name": "Thiqwave Limited",
    "bank_code": "ABUAAE3D",
    "country": "AE",
    "reference": "payin_1234567890"
  },
  "expires_at": "2026-04-09T14:45:00Z",
  "created_at": "2026-04-09T14:30:00Z"
}

Response Fields

FieldTypeDescription
payin_idstringUnique pay-in identifier.
quote_idstringAssociated quote ID.
statusstringCurrent status: awaiting_deposit, processing, completed, failed.
source_currencystringSource fiat currency.
destination_currencystringDestination stablecoin.
destination_networkstringDestination blockchain.
destination_addressstringWallet address for stablecoin delivery.
source_amountintegerAmount in smallest fiat unit.
estimated_stablecoin_amountstringExpected stablecoin amount in human-readable format.
payment_instructionsobjectBank transfer details (beneficiary account, name, bank code, country, reference).
expires_atstringISO 8601 timestamp when pay-in window closes.
created_atstringISO 8601 timestamp of creation.

Pay-in States

StatusDescription
awaiting_depositWaiting for fiat deposit. Use payment_instructions to transfer funds.
processingFiat received and being converted.
completedStablecoins delivered to destination address.
failedTransaction failed. Check details for reason.

Notes

  • Pay-in windows typically remain open for 15 minutes. Complete the bank transfer within this timeframe.
  • Use the reference field from payment_instructions in your bank transfer to match deposits.
  • Monitor pay-in status via the Get Pay-in endpoint or webhooks.