Documentation

API Endpoints

All endpoints require x-api-key header. Base URL: https://paynovax.online/api/v1

Deposit

x-api-key required
POST /payment/create Create payment session

Generates a unique ephemeral BSC wallet address and QR code. The platform monitors the wallet and forwards received tokens to your merchant wallet automatically. Sessions expire after the configured TTL (default 15 min).

Request Body

{
  "tokenId":        1,        // required
  "amount":         "49.99",   // required
  "merchantWallet": "0xAbc…",  // optional
  "domainId":       3          // optional (server-side)
}

Response 201

{
  "sessionId":       "ps_abc123",
  "depositAddress":  "0x9f…",
  "qrCode":          "data:image/png;…",
  "amount":          "49.99",
  "token":           "USDT",
  "expiresAt":       "2026-03-23T12:30:00Z",
  "status":          "pending"
}

Possible Errors

VALIDATION_ERROR UNAUTHORIZED NO_PACKAGE DOMAIN_NOT_WHITELISTED
GET /payment/:sessionId/status Poll payment status

Returns the current state of a payment session. Poll every 5–10 seconds until status is completed or expired.

// Response 200
{
  "sessionId":     "ps_abc123",
  "status":       "pending" | "completed" | "expired" | "cancelled",
  "amount":       "49.99",
  "receivedAmount": "49.99" | null,
  "txHash":       "0xDead…" | null,
  "expiresAt":    "2026-03-23T12:30:00Z"
}
POST /payment/:sessionId/cancel Cancel pending session

Cancels a pending session. No request body required. Has no effect on sessions already completed or expired.

// Response 200
{ "success": true, "data": { "message": "Payment session cancelled." } }
GET /payment/history List payment sessions

Paginated list of payment sessions for the API key.

Query Params

page limit · status = pending | completed | expired | cancelled
// Response 200
{
  "items": [ /* session objects */ ],
  "meta":  { "page": 1, "limit": 20, "total": 143, "pages": 8 }
}

Withdrawal

x-api-key required
POST /withdrawal/send Send BEP-20 token

Sends BEP-20 tokens from the domain's withdrawal wallet to a recipient BSC address.

Request Body

{
  "domainId":  3,              // required
  "tokenId":   1,              // required
  "toAddress": "0xRecipient…", // required
  "amount":    "100.00"        // required
}

Response 201

{
  "withdrawalId": "wd_xyz789",
  "txHash":       "0xDEF…",
  "amount":       "100.00",
  "token":        "USDT",
  "toAddress":    "0xRecipient…",
  "status":       "submitted"
}

Possible Errors

VALIDATION_ERROR UNAUTHORIZED NOT_FOUND BLOCKCHAIN_ERROR
GET /withdrawal/history List withdrawals

Paginated list of withdrawal records for the API key.

Query Params

page limit · status = submitted | completed | failed
// Response 200
{
  "items": [ /* withdrawal objects */ ],
  "meta":  { "page": 1, "limit": 20, "total": 57, "pages": 3 }
}
GET /withdrawal/:withdrawalId Get single withdrawal

Returns a single withdrawal record by ID. Returns NOT_FOUND if the ID doesn't belong to the authenticated API key.