Skip to content

Provider capabilities

Two providers sit behind the API. The endpoints are the same for both, but what each one can do differs. The table below lists only features that are implemented and available through the provider's official merchant API.

FeatureCryptomusBinance Pay
Pay In Hosted invoice, customer pays from any wallet Hosted checkout, QR code or deeplink; customer pays from their Binance account
Pay Out To blockchain wallet addresses (crypto_address) To Binance accounts (binance_id, or email for whitelisted merchants)
Payout to an external wallet address Not offered by the Binance Pay Merchant API
Network required for payoutsYesNo
RefundsFull amount only, to a customer wallet addressFull or partial
Signed callbacks Signed with the merchant API key, checked against Cryptomus's published source IP Signed with Binance's certificate (RSA)
Status query
Provider sandboxNone (test webhooks only)None

Refunds are started by our support team from the admin panel; there is no refund endpoint in the merchant API yet.

Choosing a provider

  • Leave out provider and we use the first enabled provider, in platform priority order, that supports your currency, network, amount and (for payouts) destination type.
  • Set provider to use a specific one. If it cannot handle the request, you get a clear error (for example destination_not_supported) instead of a silent switch.
  • If no provider can handle a request, the error explains why each one was skipped.

Currencies and limits

Supported currencies, networks and minimum and maximum amounts come from each provider and are synced daily. Always read them from GET /currencies rather than hard-coding them. Values may change when the provider updates its list.

Live capabilities

GET /currencies also returns each enabled provider's capabilities, so your integration can hide options a provider cannot offer. For example, hide "withdraw to wallet address" when only Binance Pay is enabled for payouts.

Status mapping

Each provider reports status in its own words. We map them to the common statuses in Pay In and Pay Out. The provider's original value is kept for our support team, but your integration only needs the common statuses.