Quick Start

1. Register and add a payment address

Create a merchant account, then in Settings → Payment addresses add the TRON address customers should pay to. Add a TEST (Nile) address to try things out safely.

2. Create an API key

API Keys → New key, environment TEST. Copy the secret — it is shown exactly once.

3. Create an invoice

curl -X POST https://api.usdtpay.ge/api/v1/invoices \
  -H "Authorization: Bearer sk_test_xxx" \
  -H "Idempotency-Key: order-123" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "19.99",
    "currency": "USD",
    "asset": "USDT",
    "network": "TRON",
    "external_id": "ORDER-123",
    "description": "Pro subscription",
    "customer": {"email": "customer@example.com"},
    "expires_in": 1800,
    "metadata": {"order_id": "123"}
  }'

Response:

{
  "id": "inv_01j…",
  "external_id": "ORDER-123",
  "status": "pending",
  "amount": "19.99",
  "currency": "USD",
  "crypto_amount": "19.99",
  "asset": "USDT",
  "network": "TRON",
  "payment_address": "T…",
  "checkout_url": "https://usdtpay.ge/i/inv_01j…",
  "expires_at": "2026-01-01T12:30:00+00:00",
  "created_at": "2026-01-01T12:00:00+00:00"
}

4. Redirect the customer

window.location.href = invoice.checkout_url;

5. Handle the webhook

Add an endpoint under Webhooks, verify the signature, and mark the order paid on payment.paid. See Webhooks.