Skip to main content
The Compatibility API lets an existing merchant integration keep its provider SDK and request format while switching traffic to PawPayments.
The Compatibility API is disabled by default and is enabled per merchant on request. Contact support to turn it on for your merchant account. Until then every compatibility route rejects your requests: HTTP 403 for Cryptomus, Heleket, NowPayments and CoinPayments v2, and an error envelope for CoinPayments legacy v1 (api.php). The native API (https://api.pawpayments.com/api/v2) is always available.
In most integrations, the merchant changes only the provider base URL: Use the same Paw merchant api_key for request signing. Cryptomus and Heleket SDKs send the Paw merchant ID as the merchant header and sign with api_key. NowPayments SDKs continue to send x-api-key. CoinPayments SDKs send the Paw merchant ID as the public key/client id and sign with api_key (HMAC-SHA512 for legacy, HMAC-SHA256 for v2).

Where to change the base URL

You only repoint the SDK (or your HTTP client) at the Paw compat base URL — paths, headers, request signing, and response parsing stay exactly the same. Below is the exact place to change it for each provider’s official SDK. If you call the REST API directly without an SDK, just swap the scheme + host (keeping the version prefix) for the Paw base URL.

Cryptomus / Heleket

Default host: https://api.cryptomus.com/ (Heleket: https://api.heleket.com/). The SDK appends v1/payment, v1/payout, etc.
  • Official PHP SDK (cryptomus/api-php-sdk): edit the constant in src/RequestBuilder.php:
  • Other SDKs / raw REST: set the API host so requests resolve to https://api.pawpayments.com/compat/cryptomus/v1/... (or .../compat/heleket/v1/...).
Keep the merchant header (Paw merchant id) and sign (md5(base64(json_body) + api_key)) unchanged.

NowPayments

Default base: https://api.nowpayments.io/v1/.
  • Official PHP SDK (nowpayments-api-php): change the class constant:
  • JavaScript / Go / other: set the base-URL / host option to https://api.pawpayments.com/compat/nowpayments/v1.
Keep sending x-api-key. The payout JWT flow (POST /v1/auth) works unchanged against the same base URL.

CoinPayments — legacy v1 (api.php)

Legacy SDKs post to a single full URL, https://www.coinpayments.net/api.php.
  • Set the SDK’s API URL field/constant (e.g. $this->url / API_URL in the CoinPayments PHP class) to:
Set the public key to your Paw merchant ID and the private key to your api_key; the key POST field and the HMAC header (HMAC-SHA512 of the raw body) keep their format.

CoinPayments — v2 (REST)

Default base: https://a-api.coinpayments.net (the SDK appends /api/v2/merchant/...).
  • Pass the base URL to the client constructor — without a trailing path:
    PHP/JS equivalents set the same value (e.g. ApiHelper::API_URL).
Use exactly https://api.pawpayments.com/compat/coinpayments (no extra path): the v2 signature covers the full request URL, so the base must match what Paw reconstructs.

Webhooks

Invoices created through a compatibility route automatically use that provider’s webhook format: Compatibility routes are documented here as a migration guide. For individual request field descriptions, keep using the original provider documentation. The sections below describe what Paw supports, what is ignored, and what returns 501 NOT_SUPPORTED.