Developers

One API for crypto payments.

A REST API with idempotency, signed webhooks, a strict payment state machine and a full sandbox. Test keys are issued for sandbox evaluation.

Create a payment
curl -X POST https://api.zopay.io/v1/payments \
  -H "Authorization: Bearer sk_test_xxx" \
  -H "X-Idempotency-Key: order-10001" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": "ORDER-10001",
    "price_amount": "100.00",
    "price_currency": "USD",
    "pay_currency": "USDT_TRON",
    "callback_url": "https://you.com/webhooks"
  }'
01

Create a payment

Call POST /v1/payments with the fiat price and the crypto method your customer chose.

02

Redirect to checkout

Send the customer to the hosted checkout_url, or render the address and QR yourself.

03

Receive webhooks

We POST signed events for every status change. Verify the HMAC signature and update your order.

04

Settle & reconcile

Funds accrue to your balance. Settle to your wallet manually or on a schedule, then export reports.

Predictable responses.

Amounts are always decimal strings — never floats. Every request carries a request id and every error a stable code.

201 Created
{
  "id": "pay_01K123456789",
  "status": "waiting",
  "price_amount": "100.00",
  "pay_amount": "100.350000",
  "pay_currency": "USDT_TRON",
  "pay_address": "TYxxxxxxxxxxxxxxxxxxxx",
  "checkout_url": "https://pay.zopay.io/pay_01K123456789",
  "expires_at": "2026-07-15T20:30:00Z"
}
POST /v1/payments Create a payment invoice
GET /v1/payments/:id Retrieve a payment
GET /v1/payments List payments
POST /v1/payments/:id/refund Refund a payment
GET /v1/currencies Supported currencies
GET /v1/estimates Estimate a crypto amount
GET /v1/balances Merchant balances
GET /v1/settlements List settlements
POST /v1/sandbox/payments/:id/simulate Simulate chain events