Developers

API for payment teams

Create invoices, redirect customers to checkout, receive signed webhook events and reconcile payment states in your own system.

Authentication

Pass the key in a header. All responses are JSON. Base URL: https://crynova.io/api/v1

Authorization: Bearer cryn_live_xxx
X-Api-Key: cryn_live_xxx
Create invoice
curl -X POST https://crynova.io/api/v1/invoices \
  -H "Authorization: Bearer cryn_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "149.00",
    "currency": "USDT_TRC20",
    "order_id": "ORD-1048",
    "description": "Order payment",
    "metadata": { "customer_id": "cus_9281" }
  }'

API capabilities

Create invoice

Generate payment requests with amount, currency, order ID and metadata.

Poll status

Read invoice state for reconciliation and support workflows.

Webhook events

Receive invoice.paid, invoice.expired and confirmation updates.

Endpoints

MethodEndpointPurpose
GET /currencies List available currencies and networks.
GET /invoices List invoices with filters.
POST /invoices Create an invoice and get address + checkout URL.
GET /invoices/{uuid} Full invoice details.
GET /invoices/{uuid}/status Lightweight status & confirmations check.
POST /invoices/{uuid}/cancel Cancel an unpaid invoice.

Response

{
  "invoice_id": "7a4f...",
  "status": "pending",
  "currency": "USDT_TRC20",
  "amount": "149.00",
  "pay_address": "TR7x...",
  "checkout_url": "https://crynova.io/pay/7a4f...",
  "expires_at": "2026-06-07T12:30:00+00:00"
}

Webhook — events & payload

X-Crynova-Event: invoice.paid
X-Crynova-Sig: sha256=...

{
  "event": "invoice.paid",
  "invoice_id": "7a4f...",
  "status": "paid",
  "amount": "149.00",
  "received": "149.00",
  "currency": "USDT_TRC20"
}

Events

invoice.created Invoice created.
invoice.waiting_confirmations Transaction detected.
invoice.paid Paid in full.
invoice.underpaid Received less than due.
invoice.expired Expired / cancelled.

Signature verification

Every webhook is signed with HMAC-SHA256. Verify the X-Crynova-Sig header.

$sig = 'sha256=' . hash_hmac(
    'sha256', $rawBody, $secret
);
if (! hash_equals($sig, $header)) {
    abort(401);
}

Ready to integrate?

Create a project, get an API key and accept your first payment in minutes.

We use cookies to make the site work correctly and to improve your experience. By continuing to use the site you agree to our Privacy Policy.