Information
- OpenAPI version:
3.1.0
B2B stablecoin collection and settlement infrastructure with compliance built in. Create deposit addresses, watch them confirm on-chain, sweep to custody, and pay out, over TRON, BSC and Ethereum.
CowriePay is a stablecoin collection and settlement API for businesses and the developers integrating them, with compliance built in: sanctions screening on every deposit, allowlists and approvals, and a complete audit trail. Create deposit addresses on TRON, BSC and Ethereum, watch them confirm on-chain, sweep to custody, and pay out, with HMAC-signed webhooks along the way.
Assets: USDT on all three chains, USDC and EURC on Ethereum, plus the native ETH and BNB.
Sign up at app.cowriepay.io/signup. Activating your account
from the emailed link issues a Sandbox API key (cpk_test_), so you can sign your first request
without waiting on a review.
Going Live is a separate step and is gated on your KYB being approved, not on a turnaround time:
submit your business details and documents, and once the file is approved your workspace is enabled
for Live and you create a cpk_live_ key from the dashboard. The Going live guide on the
documentation site carries the full checklist.
There is a single base URL for every request, Sandbox and Live alike:
https://api.cowriepay.io
You do not switch hosts to test. The API key you sign with selects the network (the key prefix decides Sandbox vs Live):
| Key prefix | Mode | Network |
|---|---|---|
cpk_test_… |
Sandbox | Testnets (TRON Nile, BSC testnet, ETH Hoodi), valueless crypto |
cpk_live_… |
Live | Mainnets, real funds |
Same URL, same code, same request: swap cpk_test_ for cpk_live_ to go from Sandbox to Live.
Create test keys from the dashboard in Sandbox mode, then pre-fund a Sandbox wallet in one call
with the built-in Sandbox Faucet (see the Sandbox tag), no public faucets to hunt. To go Live:
complete KYB in the dashboard, our team approves it and sets your workspace live, then you mint a
cpk_live_ key. Nothing else in your integration changes.
All amounts are human-readable decimal strings in whole asset units, never raw
blockchain units (sun, wei). To send 100 USDT you pass "100", not "100000000".
When you send an amount, write it as a plain decimal. Trailing zeros are optional,
so "100", "100.0" and "100.000000" are all read as the same value. The only limit
is the asset’s precision: an amount finer than the smallest step below is rejected.
When the API returns an amount, it is zero-padded to the asset’s precision (a deposit
of 100 USDT_TRON reads back as "100.000000"). That padding is a display detail of the
response; it is never required on input.
| Asset | You send | Smallest step (decimals) | API returns |
|---|---|---|---|
| USDT_TRON | “100” | 0.000001 (6) | “100.000000” |
| USDT_BSC | “50.5” | 0.000000000000000001 (18, Binance-Peg BSC-USD, unlike USDT on TRON/ETH) | “50.500000000000000000” |
| ETH | “1.5” | 0.000000000000000001 (18) | “1.500000000000000000” |
| BNB | “0.001” | 0.000000000000000001 (18) | “0.001000000000000000” |
Public API key identifier (cpk_live_xxx or cpk_test_xxx). Must be combined with X-CowriePay-Timestamp and X-CowriePay-Signature headers for HMAC request signing.
Security scheme type: apiKey
Header parameter name: X-CowriePay-Key