CryptPays
GET/api

API status

Returns a minimal public API status marker.

Request

Shell
curl 'https://api.cryptpays.com/api'

HTTP 200

JSON
{"status":"OK"}
GET/api/health

Public health check

Basic liveness response. It is not a detailed administrative health report.

Request

Shell
curl 'https://api.cryptpays.com/api/health'

HTTP 200

JSON
{"status":"ok"}
GET/api/pubkey

Callback verification public key

Retrieves the current PEM public key used to verify callback signatures.

Success
HTTP 200, text/plain
Unavailable
HTTP 503, text/plain
Text
-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----

Fetch the live key from this endpoint rather than copying a key from documentation. If no key is configured, the response body is Public key not configured.. See Signature Verification.

GET/api/cryptocurrencies

Enabled cryptocurrency catalog

Returns an object keyed by canonical ticker. Only enabled, merchant-usable assets with a safe minimum are included.

Fields for each ticker entry
FieldTypeMeaning
nameStringDisplay name for the asset.
tickerStringCanonical CryptPays ticker.
minimumDecimal stringCurrent authoritative processing minimum.
decimalsIntegerAsset precision.
typeStringnative or token.

Example response — live entries and values may differ

JSON
{
  "bitcoin_btc": {
    "name": "Bitcoin",
    "ticker": "bitcoin_btc",
    "minimum": "0.00010000",
    "decimals": 8,
    "type": "native"
  },
  "erc20_usdt": {
    "name": "USDT Token",
    "ticker": "erc20_usdt",
    "minimum": "1.250000",
    "decimals": 6,
    "type": "token"
  },
  "sol_sol": {
    "name": "Solana",
    "ticker": "sol_sol",
    "minimum": "0.010000000",
    "decimals": 9,
    "type": "native"
  }
}
GET/api/{ticker}/info

Asset information

Returns current metadata for one enabled canonical asset.

Successful asset info response
FieldTypeMeaning
tickerStringCanonical ticker.
statusStringactive for a usable asset.
minimum_transactionDecimal stringCurrent authoritative minimum.
confirmations_requiredIntegerGateway default confirmation/finality requirement. Solana uses the merchant-facing finality value 1.
fee_percentDecimal stringGeneric/default public fee percentage. The confirmed callback fee reports the actual transaction percentage, including any applicable callback-domain tier.

Example response — values may differ

JSON
{
  "ticker": "bep20_usdt",
  "status": "active",
  "minimum_transaction": "1.250000000000000000",
  "confirmations_required": 12,
  "fee_percent": "1.00"
}

Unknown tickers return 1101 UNSUPPORTED_CURRENCY; known disabled assets return 1102 CURRENCY_DISABLED.

Payment

Create or reuse a payment address

GET | POST/api/{ticker}/create

Canonical ticker route.

GET | POST/api/{chain}/{token}/create

Separate chain/token route with the same request and response contract.

GET requests use query parameters. POST requests may use form or JSON input. The method used to call this endpoint is independent from callback delivery; post and json control the callback method.

Accepted create parameters
ParameterRequiredTypeDefaultDescription
callback_urlYesURL, max 2048—HTTPS public callback destination in production and exact payment identity.
address_outYesString, max 500—Valid merchant payout address for the requested network.
pendingNoInteger: 0 or 10Enables an informational pending callback.
confirmationsNoInteger ≥ 1Network defaultNumeric-chain override within operator limits; does not alter Solana finality.
postNoInteger: 0 or 10Selects GET (0) or POST (1) callback delivery.
jsonNoInteger: 0 or 10With POST, selects form (0) or JSON (1); GET remains GET.
priorityNoStringdefaultslow, default, or fast, subject to network support.
convertNoInteger: 0 or 10Requests USDT conversion snapshot fields when a confirmed price exists.

For validation details, transport examples, confirmation behavior, and priority support, see Create Parameters.

HTTP 200 success

JSON
{
  "address_in": "0x2222222222222222222222222222222222222222",
  "address_out": "0x1111111111111111111111111111111111111111",
  "callback_url": "https://merchant.example/payments/callback?order_id=123",
  "priority": "default",
  "minimum_transaction_coin": "1.250000000000000000",
  "status": "success"
}

Compatible reuse returns the immutable existing configuration. Cross-family reuse returns 1202 CALLBACK_ADDRESS_FAMILY_CONFLICT. Other common errors are 1001, 1101, 1102, and 1103.

GET/api/{ticker}/logs

Payment and delivery logs

Returns the stored wallet configuration, payment callbacks, and recent delivery attempts for an exact callback URL identity.

Logs request
ParameterRequiredTypeDescription
callbackYesURL, max 2048Exact callback URL used for payment creation, URL-encoded as the query value.
Shell
curl --get 'https://api.cryptpays.com/api/bitcoin_btc/logs' \
  --data-urlencode 'callback=https://merchant.example/payments/callback?order_id=123'

Top-level fields

Logs response envelope
FieldTypeMeaning
statusStringsuccess.
address_inStringStored deposit address.
address_outStringStored merchant payout address.
callback_urlStringStored callback identity.
notify_pendingBooleanWhether pending notifications were enabled.
notify_confirmationsIntegerStored confirmation requirement.
priorityStringStored priority.
callbacksArrayPayment callback lifecycle records.

Callback records

Fields in callbacks[]
FieldTypeMeaning
uuidStringStable lifecycle UUID, identical to the UUID sent in merchant callbacks.
txid_inString or nullIncoming transaction hash. For UTXO deposits this is the bare hash.
voutInteger, conditionalSeparate incoming output index for a valid UTXO outpoint.
txid_outString or nullForwarding transaction identifier.
value_coinDecimal stringIncoming amount for this payment.
value_forwarded_coinDecimal stringAmount forwarded to the merchant.
confirmationsIntegerIncoming customer deposit confirmations/finality, not outbound confirmations. Solana is 0 or 1.
last_updateDatetime string or nullLast lifecycle update.
resultStringInternal lifecycle state: pending, processing, sent, done, or failed.
fee_percentDecimal stringActual CryptPays percentage for the payment.
fee_coinDecimal stringTotal amount deducted from the incoming payment.
priceDecimal string or nullConfirmed USDT price snapshot when available.
coinStringCanonical ticker.
logsArrayRecent callback delivery-attempt records.

Delivery-attempt fields

Fields in callbacks[].logs[]
FieldTypeMeaning
request_urlStringCallback destination for the attempt.
responsesString or nullRecorded merchant response body.
response_statusInteger or nullRecorded HTTP status.
next_tryDatetime string or nullScheduled retry time, when applicable.
pendingInteger: 0 or 1Delivery-attempt pending flag, not blockchain finality.
confirmedInteger: 0 or 1Delivery-attempt success flag, not blockchain finality.

Illustrative Bitcoin logs response

JSON
{
  "status": "success",
  "address_in": "bc1qexampledepositaddress0000000000000000000",
  "address_out": "bc1qexamplemerchantaddress000000000000000000",
  "callback_url": "https://merchant.example/payments/callback?order_id=123",
  "notify_pending": false,
  "notify_confirmations": 3,
  "priority": "default",
  "callbacks": [
    {
      "uuid": "9ab63121-41f8-4c56-9c28-c78e9b44b487",
      "txid_in": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "vout": 1,
      "txid_out": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      "value_coin": "0.001000000000000000",
      "value_forwarded_coin": "0.000970000000000000",
      "confirmations": 3,
      "last_update": "2026-09-27 12:00:00",
      "result": "done",
      "fee_percent": "1.00",
      "fee_coin": "0.000030000000000000",
      "price": "65000.12000000",
      "coin": "bitcoin_btc",
      "logs": [
        {
          "request_url": "https://merchant.example/payments/callback?order_id=123&uuid=9ab63121-41f8-4c56-9c28-c78e9b44b487",
          "responses": "accepted",
          "response_status": 200,
          "next_try": null,
          "pending": 0,
          "confirmed": 1
        }
      ]
    }
  ]
}

If no matching payment exists, the endpoint returns 1201 PAYMENT_NOT_FOUND.

Errors

Merchant API errors

Merchant API errors use a stable numeric code and English identifier. Validation responses may also include field-level errors.

JSON
{
  "status": "error",
  "code": 1001,
  "error": "VALIDATION_FAILED",
  "message": "The request parameters are invalid.",
  "errors": {
    "callback_url": ["The callback URL field is required."]
  }
}
1000–1099 Request and validation1100–1199 Currency and network1200–1299 Payment and address1300–1399 Callback1500–1599 Internal service
Currently defined Merchant API errors
CodeIdentifierHTTPMeaningWhat to do
1001VALIDATION_FAILED422One or more request values are invalid.Correct the fields listed in optional errors.
1002ENDPOINT_NOT_FOUND404The requested Merchant API route does not exist.Check the HTTP method and path.
1101UNSUPPORTED_CURRENCY422The ticker or network is unknown or unsupported.Use a canonical ticker from the live catalog.
1102CURRENCY_DISABLED422The known asset is currently disabled.Choose an enabled catalog entry.
1103UNSUPPORTED_PRIORITY422The selected network does not support the requested priority.Use default or a supported value.
1201PAYMENT_NOT_FOUND404No payment matches the ticker and callback URL.Verify the canonical ticker and exact stored callback URL.
1202CALLBACK_ADDRESS_FAMILY_CONFLICT409The callback URL already belongs to another address family.Use a new callback URL for the incompatible family.
1501INTERNAL_GATEWAY_ERROR500An internal service error occurred.Retry later; contact support if it persists.