> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pawpayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cryptomus

> Cryptomus-compatible routes, authentication, webhooks, and unsupported features.

<Note>
  The Compatibility API is enabled per merchant on request — contact support
  before switching traffic. See [Migrate from another provider](/compat/overview).
</Note>

Use this base URL in an existing Cryptomus integration:

```text theme={null}
https://api.pawpayments.com/compat/cryptomus/v1
```

Requests keep the Cryptomus authentication format:

| Header | Value |
| - | - |
| `merchant` | Paw merchant ID as a string. |
| `sign` | `md5(base64(json_body) + api_key)` |

The same Paw `api_key` is used as both the Cryptomus payment key and payout key.

Payout routes require the caller IP address to be present in the merchant's payout IP whitelist.

## Supported

Supported categories:

* Payments: create, info, list, resend, services, test webhook
* Payouts: create, info, list, services, test webhook
* Static wallet
* Balance
* Exchange rates

Cryptomus `order_id` responses contain the Paw invoice or payout id. Sending that id again as `order_id` for the same merchant returns the existing invoice or payout.

## Not Supported

These features are not available and return a provider-shaped `501 NOT_SUPPORTED` response:

* `POST /v1/payment/mark-as-paid`
* `POST /v1/payment/qr`
* `/v1/recurrence/*`
* `/v2/user-api/*`

These request fields are accepted but ignored:

* `course_source`
* payout `priority`
* payout `from_currency`
* invoice `is_refresh`

Code-based discounts are not supported. Use `discount_percent` when a simple invoice amount modifier is enough.

## Who pays the commission

The commission is charged to one side in full. Invoice `subtract` (0–100, the share charged to the client) picks it: `50` and above — the client pays it on top of the amount, below `50` — it is deducted from what you receive. When a request has no `subtract`, the merchant's **Commission** setting in the dashboard (Settings) applies (the client, unless you changed it). Any other value is rejected with `422`.

## Webhooks

Cryptomus-compatible invoices send a JSON IPN body with a `sign` field in the body. The signature uses the same `md5(base64(json_body_without_sign) + api_key)` pattern expected by Cryptomus integrations.

PHP-style slash escaping is enabled by default for signature generation, matching common Cryptomus and Heleket PHP examples. Disable the merchant setting `cryptomus_php_slashes` only if the merchant-side verifier expects unescaped slashes.

For the full list of supported providers, see the [migration overview](./overview).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.