CryptPays

Introduction

How CryptPays works

You supply the destination for payment notifications and the wallet that should receive funds. CryptPays returns a new or previously associated deposit address for that payment identity.

callback_url

Where status is delivered

CryptPays sends signed payment data to this URL.

address_out

Where funds are forwarded

The merchant payout address for the selected blockchain family.

address_in

Where the customer pays

The deposit address returned by the create request.

After the customer pays address_in, CryptPays detects the deposit, applies the asset’s minimum and finality rules, forwards the eligible payment to address_out, and delivers a signed confirmed callback.

Merchant identity

Keyless by design

Normal Merchant API use does not require an API key. A payment configuration is identified by its callback URL and selected address family, while funds are forwarded to its stored address_out.

First integration

Quick Start

This path uses confirmed callbacks only. Pending notifications and other advanced controls can be added after the basic payment flow works.

  1. Choose a supported ticker

    Read the live catalog instead of maintaining a currency list in your application. It contains the assets currently enabled for merchant use and their current minimums.

    Shell
    curl https://api.cryptpays.com/api/cryptocurrencies
  2. Check current asset information

    Use the canonical ticker returned by discovery. The info response provides that ticker, the current minimum, the default confirmation or finality setting, and the generic public fee percentage.

    Shell
    curl https://api.cryptpays.com/api/bep20_usdt/info
  3. Create a payment address

    The essential inputs are callback_url and address_out. The create request does not register or require an expected payment amount.

    Requiredcallback_url

    Your public HTTPS payment-notification URL.

    Requiredaddress_out

    Your payout address for the selected asset family.

    Recommendedpost=1, json=1

    Use JSON POST callbacks for a new integration.

    Recommended JSON callback setup

    Shell
    curl -X POST https://api.cryptpays.com/api/bep20_usdt/create \
      -H 'Content-Type: application/json' \
      -d '{
        "callback_url": "https://merchant.example/payments/order-123",
        "address_out": "0x1111111111111111111111111111111111111111",
        "post": 1,
        "json": 1
      }'

    Illustrative success response

    JSON
    {
      "address_in": "0x2222222222222222222222222222222222222222",
      "address_out": "0x1111111111111111111111111111111111111111",
      "callback_url": "https://merchant.example/payments/order-123",
      "priority": "default",
      "minimum_transaction_coin": "1.000000000000000000",
      "status": "success"
    }

    Example addresses and minimum are illustrative. Read current values from the live API.

  4. Present address_in

    Show the returned deposit address to the customer together with the selected asset and current public minimum. Each blockchain deposit is processed independently; CryptPays does not need an invoice amount in advance.

  5. Receive the confirmed callback

    Fulfill the order only from the signed confirmed event: result=sent and pending=0. The abridged JSON example below uses illustrative values.

    JSON callback
    {
      "uuid": "c2d4ec37-6e24-48bc-b58a-0e569451d3cc",
      "txid_in": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "value_coin": "100.000000000000000000",
      "value_forwarded_coin": "98.800000000000000000",
      "fee": "1.00",
      "fee_coin": "1.200000000000000000",
      "coin": "bep20_usdt",
      "result": "sent",
      "pending": 0
    }

    Pending notifications are optional and off by default (pending=0). See pending and confirmed callbacks before enabling them.

  6. Verify the callback signature

    Before trusting any callback data, verify X-CryptPay-Signature and X-CryptPay-Timestamp. See the signature verification guide for the exact canonical request format.

  7. Acknowledge with HTTP 200

    After signature verification and successful idempotent processing, return exactly HTTP 200. CryptPays ignores the response body; any other status is a delivery failure and may be retried.

At a glance

Payment Lifecycle

A normal payment moves through one independent lifecycle from address creation to merchant acknowledgement.

  1. CreateGet address_in
  2. DepositCustomer pays
  3. ConfirmFinality reached
  4. ForwardMerchant payout
  5. CallbackSigned sent event
  6. HTTP 200Acknowledge

Live configuration

Supported Currencies

This table is loaded once from the canonical Merchant API. It is the runtime authority for enabled assets, canonical tickers, and current minimums.

Loading current supported currencies…
GET/api/cryptocurrencies

If the live table is unavailable, call the catalog endpoint directly. The explanatory documentation and API reference remain available without JavaScript.

Continue

Go deeper