Gateway Compatibility — migrate without rewriting

Already integrated with another crypto payment gateway? clotho speaks five gateway dialects natively. Keep your existing SDK and integration code — change the base URL and credentials, and your deposits settle into your own wallet instead of a custodian's.

Enable a profile in the dashboard (Gateways → Enable gateway). You pick the environment, a callback URL, and a default chain; clotho returns your credentials once — including the secrets that sign callbacks in each gateway's native format.

Supported gateways

Gateway Base URL Auth Deposit callback
UdunCloud api.clotho.moira-e.com/compat/udun merchantId + md5 sign udun envelope, success ACK
Coinbase Commerce api.clotho.moira-e.com/compat/coinbase X-CC-Api-Key X-CC-Webhook-Signature (HMAC-SHA256)
NOWPayments api.clotho.moira-e.com/compat/nowpayments x-api-key x-nowpayments-sig (HMAC-SHA512, sorted JSON)
BTCPay Greenfield api.clotho.moira-e.com/compat/btcpay Authorization: token … BTCPay-Sig: sha256=…
CoinPayments api.clotho.moira-e.com/compat/coinpayments/api.php public key + HMAC header (SHA512) IPN signed with ipn_secret

Examples

Coinbase Commerce SDK — only the base URL and key change:

const { Client, Charge } = require('coinbase-commerce-node')
Client.init('ck_compat_key_from_clotho')
Client.setRequestLibraryConfig({ baseUrl: 'https://api.clotho.moira-e.com/compat/coinbase' })

const charge = await Charge.create({
  name: 'Gold pack', description: '1000 coins',
  pricing_type: 'fixed_price',
  local_price: { amount: '5.00', currency: 'USD' },
})
// charge.hosted_url now points at clotho's hosted checkout

NOWPayments — same request, your ticker decides the chain:

curl -s https://api.clotho.moira-e.com/compat/nowpayments/v1/payment \
  -H "x-api-key: <your clotho compat key>" \
  -H "Content-Type: application/json" \
  -d '{"price_amount": 5, "price_currency": "usd",
       "pay_currency": "usdttrc20", "order_id": "RGDBP-21314"}'

Supported tickers include usdttrc20, usdterc20, usdtbsc, usdtmatic, usdtarb, usdtop, usdtarc20 and the usdc* family (GET /v1/currencies returns the live list).

CoinPaymentscurrency2 uses their dot syntax: USDT.TRC20, USDT.ERC20, USDT.BEP20, USDC

BTCPay — invoices live under your compat store id: POST /compat/btcpay/api/v1/stores/{storeId}/invoices with {"amount": "5.00", "currency": "USD"}; payment methods follow the USDT-TRON naming convention.

What's intentionally different

Multichain

Orders (native or compat) can settle on 8 chains: TRON, BSC, Ethereum, Arbitrum, Optimism, Base, Polygon, Avalanche — in USDT or USDC (Base is USDC-only). One EVM wallet registration covers every EVM chain: the same xpub derives identical addresses across them, so adding a chain requires nothing from you.

On the native API, pick the token with the optional currency field:

{ "external_id": "order-1", "chain": "polygon",
  "currency": "USDC", "amount_micro": 5000000 }