CryptAPI.io - Payment API Documentation (v3.1.1)

Download OpenAPI specification:Download

CryptAPI.io is a cryptocurrency payment API.

It is designed with the intent to allow you to integrate multiple coin payments in your service with the least effort possible.

There are no sign-ups, lengthy implementations or API keys required, it is as easy as a simple CURL request to create a new payment address.

The only thing required is that you implement the logic on your server to handle the callbacks sent to your server when the transaction from the client is confirmed.

For the documentation on CryptAPI Pro click here.

Receive a payment

Endpoints to receive payments.

Create new address

This method is used to generate a new address to give your clients, where they can send payments.

Notice: The length of this request can't surpass the 8192 characters!

Please make sure when sending a transaction you consult the minimum transfer value for the crypto/token you wish to use. If the value you send is bellow our minimums, CryptAPI will ignore the transaction.

Request
path Parameters
ticker
required
string

The token ticker. Currently supported tokens can be checked on the Supported Coins page.

query Parameters
callback
required
string

The URL the callbacks will be sent to. Must be a valid URL.

Attention:

- The callback URL should be unique. Duplicated callback URLs will return the same address_in. You can make your callback URL unique by adding GET parameters, like: ?user_id=1234

- The callback URL needs to be urlencoded, otherwise the GET parameters you add may be lost.

address
string

Address or addresses where the payment will be forwarded to.

In case of multiple addresses, it should be in the following format: <percentage_1>@<address_1>|<percentage_2>@<address_2> and so on.

Percentages are set from 0.0001 (0.01%) to 1.0 (100%) and must add up to 1.00 (100%).

Addresses must be valid.

Note: For multiple addresses the minimum value per transaction (see fees page) is multiplied by the following formula: 1 + (N - 1) / 3, where N is the number of output addresses.

Check our knowledge base for more information about this parameter.

pending
integer

Set this to 1 if you want to be notified of pending transactions (before they're confirmed)

confirmations
integer

Number of confirmations you want before receiving the callback (Min. 1)

email
string

E-mail address to receive payment notifications

Note: before getting e-mail payment notifications, you must confirm your e-mail address here.

post
integer

Set this to 1 if you wish to receive the callback as a POST request (default: GET)

priority
string

Different per currency/network.

Check our knowledge base for more information about this parameter.

multi_token
integer

Set this to 1 to enable it (default: 0).

Check our knowledge base for more information about this parameter.

multi_chain
integer

Set this to 1 to enable it (default: 0).

Check our knowledge base for more information about this parameter.

convert
integer

Set this to 1 to enable it (default: 0).

If enabled, returns the converted value converted to FIAT in the callback, with the parameters value_coin_convert and value_forwared_coin_convert. The value of the fields are json-encoded.

Responses
200

Address was created

Response Schema: application/json
address_in
string

Generated Address, give this to your client

address_out
string

Your address(es), where the payment will be forwarded to, should be the same address(es) you provided.

callback_url
string

The callback URL you provided

priority
string

The confirmation priority you requested

status
string

Status

400

Error creating address

get/{ticker}/create/
Request samples
Response samples
application/json
{
  • "address_in": "14PqCsA7KMgseZMPwg6mJy754MtQkrgszu",
  • "address_out": "1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP (single address) {1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP: 0.70, 1PE5U4temq1rFzseHHGE2L8smwHCyRbkx3: 0.30} (multiple addresses)",
  • "callback_url": "example.com/invoice/1234?payment_id=5678",
  • "priority": "default",
  • "status": "success"
}

Check payment logs

This method is used to check logs for your callback URLs.

Request
path Parameters
ticker
required
string

The token ticker. Currently supported tokens can be checked on the Supported Coins page.

query Parameters
callback
required
string

The URL of the callback

Responses
200

List of payments sent to this callback

Response Schema: application/json
address_in
string

Generated Address, give this to your client

address_out
string

Your address(es), where the payment will be forwarded to, should be the same address(es) you provided.

callback_url
string

The callback URL you provided

status
string

Status

notify_pending
boolean

Get notified of pending transactions

notify_confirmations
integer

Number of confirmations required before sending the callback

priority
string

The confirmation priority you requested

callbacks
Array of objects (logs)

List of payments made to this address

400

Your request couldn't be processed, please try again later

404

No request or no payment callbacks found

get/{ticker}/logs/
Request samples
Response samples
application/json
{
  • "address_in": "14PqCsA7KMgseZMPwg6mJy754MtQkrgszu",
  • "address_out": "1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP (single address) {1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP: 0.70, 1PE5U4temq1rFzseHHGE2L8smwHCyRbkx3: 0.30} (multiple addresses)",
  • "callback_url": "example.com/invoice/1234?payment_id=5678",
  • "status": "success",
  • "notify_pending": true,
  • "notify_confirmations": 1,
  • "priority": "default",
  • "callbacks": [
    ]
}

Utils

Utilitaries that give useful information.

Check coin information

This endpoint is used to check the information of the cryptocurrency you want to use.

Request
path Parameters
ticker
required
string

The token ticker. Currently supported tokens can be checked on the Supported Coins page.

query Parameters
prices
integer

If you want to receive also the coin prices, set to 0 to disable the prices (default: 1)

Responses
200

Info fetched successfully

Response Schema: application/json
coin
string

Human readable name of the currency

minimum_transaction
integer

Minimum transaction value for this currency, values below this value are disregarded

minimum_fee
integer

CryptAPI's minimum fee for this currency, in atomic units

fee_percent
number

Fee percentage for this currency

prices_updated
string

Datetime of the last price update

status
string

Status

prices
object

Object with the exchange rate of this currency in various FIAT currencies.

Keys are the names of the currencies, values are the exchange rates.

updated every 5min.

400

Error fetching info

get/{ticker}/info/
Request samples
Response samples
application/json
{
  • "coin": "Bitcoin",
  • "minimum_transaction": "20000",
  • "minimum_fee": "200",
  • "fee_percent": "1.00",
  • "prices_updated": "2019-10-14T13:00:09.585Z",
  • "status": "success",
  • "prices": "{'DKK': '56281.94', 'CAD': '10985.14', 'AED': '30517.01', 'BRL': '34243.36', 'USD': '8308.47', 'MXN': '160193.26', 'CNY': '58740.88', 'INR': '591471.72', 'JPY': '899719.16', 'HKD': '65173.93', 'GBP': '6616.08', 'EUR': '7535.35'}"
}

Generate QR Code

This method generates a base64-encoded image for payments

Request
path Parameters
ticker
required
string

The token ticker. Currently supported tokens can be checked on the Supported Coins page.

query Parameters
address
required
string

The payment address (address_in from our system)

value
integer

Value to request the user, in the main coin (BTC, ETH, etc...). Optional.

Note: Some user wallets don't support this, only the address. Use at your own discretion.

size
integer

Size of the QR Code image in pixels. Min: 64 Max: 1024 Default: 512

Responses
200

The QR Code

Response Schema: application/json
status
string

Status

qr_code
string

Base64-encoded image of the QR Code. Use it like this: <img src='data:image/png;base64,{qr_code}' alt='Payment QR Code'/>

payment_uri
string

Payment URI, useful if you want to make a clickable payment button.

get/{ticker}/qrcode/
Request samples
Response samples
application/json
{
  • "status": "success",
  • "qr_code": "...",
  • "payment_uri": "..."
}

Estimate Blockchain Fees

This method allows you to estimate blockchain fees to process a transaction.

Attention: This is an estimation only, and might change significantly when the transaction is processed. CryptAPI is not responsible if blockchain fees when forwarding the funds differ from this estimation.

Note: These not include CryptAPI's fees.

Request
path Parameters
ticker
required
string

The token ticker. Currently supported tokens can be checked on the Supported Coins page.

query Parameters
addresses
integer

The number of addresses to forward the funds to. Default: 1

priority
string

Different per currency/network. Check our knowledge base for more information about this parameter.

Responses
200

Estimated cost

Response Schema: application/json
status
string

Status

estimated_cost
integer

Estimated cost in the coin

estimated_cost_currency
object

Object with the estimated cost in various FIAT currencies.

Keys are the names of the currencies, values are the estimated costs.

400

Your request couldn't be processed, please try again later

get/{ticker}/estimate/
Request samples
Response samples
application/json
{
  • "status": "success",
  • "estimated_cost": "0.00001",
  • "estimated_cost_currency": "{'USD': '0.09', 'EUR': '0.08', 'GBP': '0.07', 'CAD': '0.11', 'JPY': '10.21', 'AED': '0.33', 'DKK': '0.58', 'BRL': '0.46', 'CNY': '0.56', 'HKD': '0.69', 'INR': '6.67', 'MXN': '1.81', 'UGX': '310.74', 'PLN': '0.35', 'PHP': '4.56', 'CZK': '1.91', 'HUF': '27.95', 'BGN': '0.15', 'RON': '0.39', 'LKR': '18.02'}"
}

Convert prices

This method allows you to easily convert prices from FIAT to Crypto or even between cryptocurrencies

Request
path Parameters
ticker
required
string

The token ticker. Currently supported tokens can be checked on the Supported Coins page.

query Parameters
value
required
number

Value to convert

from
required
string

Currency to convert from, FIAT or crypto

Responses
200

The value converted

Response Schema: application/json
value_coin
number

The converted value

exchange_rate
number

The exchange rate between the 2 currencies

status
string

Status

400

Your request couldn't be processed, please try again later

get/{ticker}/convert/
Request samples
Response samples
application/json
{
  • "value_coin": "0.01",
  • "exchange_rate": "47000",
  • "status": "success"
}

Callbacks

This is the Callback documentation. Be aware that, these callbacks are sent by our API to your platform. The Callbacks are triggered when the user sends the payment to the address generated by our system. Your platform should be able to handle these callbacks.

The callbacks will be sent with an extra header, x-ca-signature, which is a base64-encoded 1024-bit RSA-SHA256 signature of the callback. The data signed depends on what type of callback you're receiving: if it's sent via GET then the full request URL to your system (including all GET parameters) are signed, if it's sent via POST then the entire body of the request is signed.

The Public Key for the verification can be retrieved from this endpoint.

Check our knowledge base to learn how to verify the callback with code samples.

Pending CallbackWebhook

Callback issued when a client's transaction is pending confirmation.

Note 1: Only issued if you have requested to be notified of pending transactions.

Note 2: Sent via POST if post=1 parameter set, else sent via GET

We strongly advise agaisnt whitelisting our callback IPs, because they might change in the future without warning, but if you really need to, at this moment the callbacks will be sent from the following IPs: 145.239.119.223 and 135.125.112.47

Request
query Parameters
uuid
string

This is an unique identifier to each payment your clients have made, so you can easily track any duplicate callbacks sent, in the case our system doesn't mark the callback as successful

Example: uuid=dbfcb40e-5a6b-4305-9fa2-b0fbda6e3ff2
address_in
string

Address where your client's payment was received

Example: address_in=14PqCsA7KMgseZMPwg6mJy754MtQkrgszu
address_out
string

Address(es) where we forwarded your payment

Example: address_out=1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP (single address) {1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP: 0.70, 1PE5U4temq1rFzseHHGE2L8smwHCyRbkx3: 0.30} (multiple addresses)
txid_in
string

Transaction hash of your client's payment

Example: txid_in=a2174ffd39289100709f2a07b129cdbba69df2e22e5be1830221dab1fd4e332c
confirmations
integer

Number of confirmations of the current transaction

Example: confirmations=1
value
integer
Deprecated

Value of the payment in integer. Field meant to help with precise calculations on some platforms

Notice: For some stable coins (e.g USDT or BUSD), this field always come rounded to 'cents' (two decimals), meaning you must always divide it by 100.
Example: If value=1054, 1054/100=10.54.

It's recomended to use the value_coin field instead.

Check our knowledge base to get the list of stable coins

Example: value=50000
value_coin
number

Value of the payment

Example: value_coin=0.05
value_coin_convert
string

Converted value to various FIAT currencies of the value_coin. Response is json-encoded.

Notice: This parameter will only be shown if added the convert=1 parameter in the /create/ endpoint.

Example: value_coin_convert={"USD": "3.20", "EUR": "3.05", "GBP": "2.62", "CAD": "4.16", "JPY": "431.90", "AED": "11.77", "DKK": "22.67", "BRL": "16.52", "CNY": "21.43", "HKD": "25.16", "INR": "249.97", "MXN": "64.95", "UGX": "11975.46", "PLN": "14.25", "PHP": "173.14", "CZK": "75.37", "HUF": "1220.10", "BGN": "5.94", "RON": "15.02", "LKR": "1153.30", "TRY": "55.54", "ZAR": "51.36", "RUB": "181.24"}
coin
string

Ticker of the coin used for the payment: ['btc', 'bch', 'ltc', 'eth', 'xmr', 'trx', 'iota']

For ERC-20 (ETH) Tokens,this parameter will be erc20_ + the ticker of the token, e.g erc20_usdt

For TRC-20 (Tron) Tokens,this parameter will be trc20_ + the ticker of the token, e.g trc20_usdt

For BEP-20 (BSC) Tokens,this parameter will be bep20_ + the ticker of the token, e.g bep20_usdt

Example: coin=btc
pending
integer

1 if transaction is pending

Example: pending=1
Responses
200

Expected response from your server

Response Schema: text/plain
string
Response samples
text/plain
*ok*

Confirmed CallbackWebhook

Callback issued when a client's transaction has been confirmed by the network.

Note: Sent via POST if post=1 parameter set, else sent via GET

We strongly advise agaisnt whitelisting our callback IPs, because they might change in the future without warning, but if you really need to, at this moment the callbacks will be sent from the following IPs: 145.239.119.223 and 135.125.112.47

Request
query Parameters
uuid
string

This is an unique identifier to each payment your clients have made, so you can easily track any duplicate callbacks sent, in the case our system doesn't mark the callback as successful

Example: uuid=dbfcb40e-5a6b-4305-9fa2-b0fbda6e3ff2
address_in
string

Address where your client's payment was received

Example: address_in=14PqCsA7KMgseZMPwg6mJy754MtQkrgszu
address_out
string

Address(es) where we forwarded your payment

Example: address_out=1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP (single address) {1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP: 0.70, 1PE5U4temq1rFzseHHGE2L8smwHCyRbkx3: 0.30} (multiple addresses)
txid_in
string

Transaction hash of your client's payment

Example: txid_in=a2174ffd39289100709f2a07b129cdbba69df2e22e5be1830221dab1fd4e332c
txid_out
string

Transaction hash of our the payment forwarded to you

Example: txid_out=a2174ffd39289100709f2a07b129cdbba69df2e22e5be1830221dab1fd4e332c
confirmations
integer

Number of confirmations of the current transaction

Example: confirmations=1
fee
integer

CryptAPI fee in integer. Field meant to help with precise calculations on some platforms

Example: fee=500
value
integer
Deprecated

Value of the payment in integer. Field meant to help with precise calculations on some platforms

Notice: For some stable coins (e.g USDT or BUSD), this field always come rounded to 'cents' (two decimals), meaning you must always divide it by 100.
Example: If value=1054, 1054/100=10.54.

It's recomended to use the value_coin field instead.

Check our knowledge base to get the list of stable coins

Example: value=50000
value_coin
number

Value of the payment

Example: value_coin=0.05
value_coin_convert
string

Converted value to various FIAT currencies of the value_coin. Response is json-encoded.

Notice: This parameter will only be shown if added the convert=1 parameter in the /create/ endpoint.

Example: value_coin_convert={"USD": "3.20", "EUR": "3.05", "GBP": "2.62", "CAD": "4.16", "JPY": "431.90", "AED": "11.77", "DKK": "22.67", "BRL": "16.52", "CNY": "21.43", "HKD": "25.16", "INR": "249.97", "MXN": "64.95", "UGX": "11975.46", "PLN": "14.25", "PHP": "173.14", "CZK": "75.37", "HUF": "1220.10", "BGN": "5.94", "RON": "15.02", "LKR": "1153.30", "TRY": "55.54", "ZAR": "51.36", "RUB": "181.24"}
value_forwarded
integer
Deprecated

Value forwarded to you, after fees in integer. Field meant to help with precise calculations on some platforms

Example: value_forwarded=50000
value_forwarded_coin
number

Value forwarded to you, after fees

Example: value_forwarded_coin=0.05
value_forwarded_coin_convert
string

Converted value to various FIAT currencies of the value_forwarded_coin. Response is json-encoded.

Notice: This parameter will only be shown if added the convert=1 parameter in the /create/ endpoint.

Example: value_forwarded_coin_convert={"USD": "3.17", "EUR": "3.01", "GBP": "2.59", "CAD": "4.12", "JPY": "427.16", "AED": "11.64", "DKK": "22.41", "BRL": "16.33", "CNY": "21.20", "HKD": "24.88", "INR": "247.19", "MXN": "64.25", "UGX": "11855.29", "PLN": "14.08", "PHP": "171.25", "CZK": "74.50", "HUF": "1206.19", "BGN": "5.88", "RON": "14.86", "LKR": "1140.51", "TRY": "54.93", "ZAR": "50.82", "RUB": "179.22"}
coin
string

Ticker of the coin used for the payment: ['btc', 'bch', 'ltc', 'eth', 'xmr', 'trx', 'iota']

For ERC-20 (ETH) Tokens,this parameter will be erc20_ + the ticker of the token, e.g erc20_usdt

For TRC-20 (Tron) Tokens,this parameter will be trc20_ + the ticker of the token, e.g trc20_usdt

For BEP-20 (BSC) Tokens,this parameter will be bep20_ + the ticker of the token, e.g bep20_usdt

Example: coin=btc
pending
integer

If 0 means transaction was paid.

Example: pending=0
Responses
200

Expected response from your server

The callback will be marked as successful when it receives the following response from your server

Response Schema: text/plain
string
Response samples
text/plain
*ok*