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).
CoinPayments — currency2 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
- No withdrawal APIs. clotho is non-custodial — deposits land in addresses derived from your xpub. There is nothing to withdraw from; withdrawal endpoints return a clear error explaining this.
- Prices are settled 1:1 in the stablecoin (
USD≈ USDT/USDC). No fiat FX. - Status enums, signature recipes and field types match each gateway's official SDKs byte-for-byte (including their quirks), so existing verification code keeps working.
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 }