SHKeeper - is an open-source, self-hosted cryptocurrency payment processor. It uniquely serves as both a gateway and a merchant, enabling you to accept payments in various cryptocurrencies without fees and intermediaries.
You can authenticate either via Basic Auth or an API key depending from endpoint requirement. You can generate or view an API key in the SHKeeper UI under Wallets
-> Manage
-> API key
, the API key is the same for each wallet. Basic HTTP credentials it's your SHKeeper UI user and password. For metrics endpoints using separate user and password specified in METRICS_USERNAME
, METRICS_PASSWORD
environment variables, with default values shkeeper
,shkeeper
. You can see the required authentication on the API docs at the top of each endpoint under AUTHORIZATIONS
.
SHKeeper supports authenticating and authorizing users through the Basic HTTP authentication scheme. Send the user and password encoded in base64 with the format Basic {base64(username:password)}
. Using this authentication is required for payout-related endpoints, and for metrics, but another credentials. Metric credentials can be set by environment variables: METRICS_USERNAME
, METRICS_PASSWORD
. The default username
:password
is shkeeper
:shkeeper
.
Basic
Get a list of cryptocurrencies available for operation from SHKeeper (these are the ones that are online and not disabled in the admin panel).
crypto | Array of strings (Crypto) Array of available crypto(deprecated) |
Array of objects (CryptoObj) Array of available crypto | |
status | string Status of obtaining available crypto currencies |
curl --location --request GET 'https://demo.shkeeper.io/api/v1/crypto'
{- "crypto": [
- "BNB",
- "BNB-USDT",
- "ETH-USDT",
- "BTC",
- "ETH",
- "BNB-USDC",
- "ETH-USDC"
], - "crypto_list": [
- {
- "display_name": "BNB",
- "name": "BNB"
}, - {
- "display_name": "BEP20 USDT",
- "name": "BNB-USDT"
}, - {
- "display_name": "ERC20 USDT",
- "name": "ETH-USDT"
}, - {
- "display_name": "Bitcoin",
- "name": "BTC"
}, - {
- "display_name": "Ethereum",
- "name": "ETH"
}, - {
- "display_name": "BEP20 USDC",
- "name": "BNB-USDC"
}, - {
- "display_name": "ERC20 USDC",
- "name": "ETH-USDC"
}
], - "status": "success"
}
crypto_name required | string Enum: "BTC" "LTC" "DOGE" "XMR" … 16 more Example: ETH-USDC An identifier for cryptocurrency. Check Get cryptocurrencies to get all available list. |
external_id required | string A unique order_id or invoice_id from your store. |
fiat required | string Value: "USD" Currency code in ISO 4217 format for conversion. Currently, only USD is supported. |
amount required | string The amount for which the invoice should be created in SHKeeper. |
callback_url required | string The URL to which SHKeeper will send notifications in the event of transactions related to the created invoices. |
amount | string Amount in cryptocurrency with added SHKeeper fee |
display_name | string cryptocurrency display name |
exchange_rate | string cryptocurrency to fiat exchange rate for the moment of invoice generated |
id | string SHKeeper invoice id |
recalculate_after | string Time to hold exchange rate for the client, if 0 - no recalculate when recived payment |
status | string Creating SHKeeper invoice status |
wallet | string Generated address for chosen cryptocurrency assigned to SHKeeper invoice |
{- "external_id": 107,
- "fiat": "USD",
- "amount": "7.8",
}
{- "amount": "7.8",
- "display_name": "ERC20 USDT",
- "exchange_rate": "1",
- "id": 61,
- "recalculate_after": 0,
- "status": "success",
- "wallet": "0x6f2Fc9D7205B7D9037dDE45B5f9e12B18EA07e27"
}
{- "external_id": "107",
- "crypto": "ETH-USDT",
- "addr": "0x6f2Fc9D7205B7D9037dDE45B5f9e12B18EA07e27",
- "fiat": "USD",
- "balance_fiat": "7.8",
- "balance_crypto": "7.8",
- "paid": true,
- "status": "PAID",
- "transactions": [
- {
- "txid": "0x23487a9890b80bb908cc07097d0ddd098fff0980bb098ccc098aa0addd098880",
- "date": "2024-06-25 14:45:20",
- "amount_crypto": "3.8",
- "amount_fiat": "3.8",
- "amount_fiat_without_fee": "3.7254901961",
- "fee_fiat": "0.0745098039",
- "trigger": false,
- "crypto": "ETH-USDT"
}, - {
- "txid": "0x518a10b13a708fd11aa98db88c625dd45130db6656ba822600b01d0c53c85078",
- "date": "2024-06-25 15:45:38",
- "amount_crypto": "4",
- "amount_fiat": "4",
- "amount_fiat_without_fee": "3.9215686275",
- "fee_fiat": "0.0784313725",
- "trigger": true,
- "crypto": "ETH-USDT"
}
], - "fee_percent": "2",
- "fee_fixed": "0",
- "fee_policy": "PERCENT_FEE",
- "overpaid_fiat": "0.00"
}
Get detailed information about status of created invoice in SHKeeper by external_id
external_id required | string Example: 233822 An identifier order_id or invoice_id from your store. |
Array of objects (Invoice) Array of found invoices | |
status | string Status of request |
curl --location --request GET 'https://demo.shkeeper.io/api/v1/invoices/233822' \ --header 'X-Shkeeper-Api-Key: fs9GYTyNdkjPHX36'
{- "invoices": [
- {
- "amount_fiat": "10.0000000000",
- "balance_fiat": "23.0003000000",
- "external_id": "233822",
- "fiat": "USD",
- "status": "OVERPAID",
- "txs": [
- {
- "addr": "0xE77895BAda700d663f033510f73f1E988CF55756",
- "amount": "5.0000000000",
- "crypto": "ETH-USDT",
- "status": "CONFIRMED",
- "txid": "0x4f9df3c2255ee6f1bda50dfab1a84b87345aeaf89863afea9a2687e0e51d42dc"
}, - {
- "addr": "0xE77895BAda700d663f033510f73f1E988CF55756",
- "amount": "3.0000000000",
- "crypto": "ETH-USDC",
- "status": "CONFIRMED",
- "txid": "0xdaae319a0bee00f362f40ae725932c25a9b33bd33f3346ec22464361a56fcd1d"
}
]
}
], - "status": "success"
}
crypto_name required | string Enum: "BTC" "LTC" "DOGE" "XMR" … 16 more Example: ETH-USDC An identifier for cryptocurrency. Check Get cryptocurrencies to get all available list. |
amount required | string Payout amount |
destination required | string For |
fee required | string Transaction fee.
|
task_id | string Payout task ID |
{- "amount": 107,
- "destination": "0xBD26e3512ce84F315e90E3FE75907bfbB5bD0c44",
- "fee": "10"
}
{- "task_id": "b2a01bb0-8abe-403b-a3fa-8124c84bcf23"
}
Multipayout is not supported for the following cryptocurrencies: XMR
, BTC
, LTC
, and DOGE
. For these, you need to use the Payout method.
crypto_name required | string Enum: "BTC" "LTC" "DOGE" "XMR" … 16 more Example: ETH-USDC An identifier for cryptocurrency. Check Get cryptocurrencies to get all available list. |
amount required | string Payout amount |
dest required | string Payout destination |
dest_tag | string Useful for |
task_id | string Multipayout task ID |
[- {
- "dest": "0xBD26e3512ce84F315e90E3FE75907bfbB5bD0c44",
- "amount": "100"
}, - {
- "dest": "0xE77895BAda700d663f033510f73f1E988CF55756",
- "amount": "200.11"
}
]
{- "task_id": "b2a01bb0-8abe-403b-a3fa-8124c84bcf23"
}
Get status of payout task
crypto_name required | string Enum: "BTC" "LTC" "DOGE" "XMR" … 16 more Example: ETH-USDC An identifier for cryptocurrency. Check Get cryptocurrencies to get all available list. |
task_id required | string <uuid> Example: 7028c45b-0c88-483e-b703-dd455a361b2e Payout task ID |
Array of objects (PayoutResultObj) Payout amount | |
status | string Enum: "PENDING" "FAILURE" "SUCCESS" Task status |
curl --location --request GET 'https://demo.shkeeper.io/api/v1/ETH-USDT/task/8c618c4a-39fc-4c7a-b4f8-1661ea47fec6' \ --user admin:admin
{- "result": [
- {
- "amount": "100",
- "dest": "TGusXhweqkJ1aJftjmAfLqA1rfEWD4hSGZ",
- "status": "success",
- "txids": [
- "da2996bae7a8a4d655a1288f8f4c79ce0aa3640e61f8ae8de08ae9c70c72d90d"
]
}, - {
- "amount": "200.11",
- "dest": "TYtD9md7cHuB4P6kDd362jhcUGP7cJybF7",
- "status": "success",
- "txids": [
- "d8972ac9c964adbc25486d2cfdf2de7b61c3f0ca7510aa7cddc832a9bccdf551"
]
}
], - "status": "SUCCESS"
}
key required | string Decryption key that was set on the first run of SHKeeper on demand |
status | string Decrypt wallets status |
key=sikfl5llLFt5is50dsfk4yvldti0034jfmmeJm
{- "status": "success"
}
Get all generated cryptocurrency addresses for specified cryptocurrency
crypto_name required | string Enum: "BTC" "LTC" "DOGE" "XMR" … 16 more Example: ETH-USDC An identifier for cryptocurrency. Check Get cryptocurrencies to get all available list. |
addresses | Array of strings Array of cryptocurrency addresses |
status | string Status of request |
curl --location --request GET 'https://demo.shkeeper.io/api/v1/ETH-USDC/addresses' \ --header 'X-Shkeeper-Api-Key: fs9GYTyNdkjPHX36'
{- "addresses": [
- "0x0A71f4741DcaD3C06AA51eE6cF0E22675507d0d0",
- "0x700b3453edfE0b1885dA9D41FE472451ceD1292d"
], - "status": "success"
}
Get all transactions related to specified cryptocurrency address
crypto_name required | string Enum: "BTC" "LTC" "DOGE" "XMR" … 16 more Example: ETH-USDC An identifier for cryptocurrency. Check Get cryptocurrencies to get all available list. |
addr required | string Example: 0xE77895BAda700d663f033510f73f1E988CF55756 Cryptocurrency address |
Array of objects (Transaction) Array of found transactions | |
status | string Status of request |
curl --location --request GET 'https://demo.shkeeper.io/api/v1/ETH-USDC/addresses' \ --header 'X-Shkeeper-Api-Key: fs9GYTyNdkjPHX36'
{- "transactions": [
- {
- "addr": "0xE77895BAda700d663f033510f73f1E988CF55756",
- "amount": "3.0000000000",
- "crypto": "ETH-USDC",
- "status": "CONFIRMED",
- "txid": "0xdaae319a0bee00f362f40ae725932c25a9b33bd33f3346ec22464361a56fcd1d"
}
], - "status": "success"
}
Get payment info by transaction and external ID
txid required | string Example: 0xdaae319a0bee00f362f40ae725932c25a9b33bd33f3346ec22464361a56fcd1d Cryptocurrency payment transaction ID |
external_id required | string Example: 233822 An identifier order_id or invoice_id from your store. |
object Transaction information | |
status | string Status of request |
curl --location --request GET 'https://demo.shkeeper.io/api/v1/tx-info/0xdaae319a0bee00f362f40ae725932c25a9b33bd33f3346ec22464361a56fcd1d/233822' \ --header 'X-Shkeeper-Api-Key: fs9GYTyNdkjPHX36'
{- "info": {
- "addr": "0xE77895BAda700d663f033510f73f1E988CF55756",
- "amount": "3.0000000000",
- "crypto": "ETH-USDC"
}, - "status": "success"
}
Get SHKeeper metrics for wallets status
curl --location --request GET 'https://demo.shkeeper.io/metrics' \ --user shkeeper:shkeeper
# HELP geth_last_release_info Version of the latest release from https://github.com/bnb-chain/bsc/releases # TYPE geth_last_release_info gauge geth_last_release_info{name="v1.4.12",published_at="2024-07-24T04:18:53Z",tag_name="v1.4.12",version="1.4.12"} 1.0 # HELP geth_fullnode_version_info Current geth version in use # TYPE geth_fullnode_version_info gauge geth_fullnode_version_info{version="1.4.11"} 1.0 # HELP bnb_fullnode_status Connection status to bnb fullnode # TYPE bnb_fullnode_status gauge bnb_fullnode_status 1.0 # HELP bnb_fullnode_last_block Last block loaded to the fullnode # TYPE bnb_fullnode_last_block gauge bnb_fullnode_last_block 4.2715492e+07 # HELP bnb_wallet_last_block Last checked block # TYPE bnb_wallet_last_block gauge bnb_wallet_last_block 4.271549e+07 # HELP bnb_fullnode_last_block_timestamp Last block timestamp loaded to the fullnode # TYPE bnb_fullnode_last_block_timestamp gauge bnb_fullnode_last_block_timestamp 1.722866516e+09 # HELP bnb_wallet_last_block_timestamp Last checked block timestamp # TYPE bnb_wallet_last_block_timestamp gauge bnb_wallet_last_block_timestamp 1.72286651e+09 # HELP bnb_shkeeper_status Connection status to bnb_shkeeper # TYPE bnb_shkeeper_status gauge bnb_shkeeper_status 1.0 # HELP geth_last_release_info Version of the latest release from https://github.com/ethereum/go-ethereum/releases # TYPE geth_last_release_info gauge geth_last_release_info{name="Bothros (v1.14.5)",published_at="2024-06-06T13:41:53Z",tag_name="v1.14.5",version="1.14.5"} 1.0 # HELP prysm_last_release_info Version of the latest release from https://github.com/prysmaticlabs/prysm/releases # TYPE prysm_last_release_info gauge prysm_last_release_info{name="v5.0.4",published_at="2024-06-21T16:13:40Z",tag_name="v5.0.4",version="5.0.4"} 1.0 # HELP geth_fullnode_version_info Current geth version in use # TYPE geth_fullnode_version_info gauge geth_fullnode_version_info{version="1.14.6"} 1.0 # HELP prysm_fullnode_version_info Current prysm version in use # TYPE prysm_fullnode_version_info gauge prysm_fullnode_version_info 1.0 # HELP ethereum_fullnode_status Connection status to ethereum fullnode # TYPE ethereum_fullnode_status gauge ethereum_fullnode_status 1.0 # HELP ethereum_fullnode_last_block Last block loaded to the fullnode # TYPE ethereum_fullnode_last_block gauge ethereum_fullnode_last_block 6.442062e+06 # HELP ethereum_wallet_last_block Last checked block # TYPE ethereum_wallet_last_block gauge ethereum_wallet_last_block 6.44206e+06 # HELP ethereum_fullnode_last_block_timestamp Last block timestamp loaded to the fullnode # TYPE ethereum_fullnode_last_block_timestamp gauge ethereum_fullnode_last_block_timestamp 1.722866508e+09 # HELP ethereum_wallet_last_block_timestamp Last checked block timestamp # TYPE ethereum_wallet_last_block_timestamp gauge ethereum_wallet_last_block_timestamp 1.722866484e+09 # HELP ethereum_shkeeper_status Connection status to ethereum_shkeeper # TYPE ethereum_shkeeper_status gauge ethereum_shkeeper_status 1.0 # HELP xrp_shkeeper_status Connection status to xrp_shkeeper # TYPE xrp_shkeeper_status gauge xrp_shkeeper_status 0.0