Shkeeper.io
SHKeeper is a self-hosted and open-source cryptocurrency gateway payment processor. It's integrate with popular CMS, any e-commerce, your own code or product
Install / Use
/learn @vsys-host/Shkeeper.ioREADME
SHKeeper.io<!-- omit in toc -->
- About SHKeeper
- Demo
- Helpful links
- Available coins
- Features
- Installation
- Developing
- Payment flow
- API
- Auth
- Retrieve the list of available cryptocurrencies
- Invoice creation
- Retrieve created addresses
- Retrieve transactions by address
- Retrieve information by external_id
- Retrieve information by the pair of transaction_id and external_id
- Wallet encryption (Enter decryption_key via API)
- Retrieving metrics
- Payout
- Payout related endpoints
- Receiving callback
- Ready-made modules
- Be involved
- Contact us
<a name="about-shkeeper"></a>
1. About SHKeeper
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.
<a name="demo"></a>
1.1. Demo
SHKeeper demo version is available from us (works in testnet network), so you can try it yourself without installing it:
https://demo.shkeeper.io/
Login: admin
Password: admin
<a name="helpful-links"></a>
1.2. Helpful links
Details of the latest version can be found here: https://github.com/vsys-host/shkeeper.io/commits/main/
Find the comprehensive list of API endpoints here https://shkeeper.io/api/
Tutorial video: https://www.youtube.com/watch?v=yYK_JAm1_hg
Find the knowledge base here: https://shkeeper.io/kb/launch/what-is-shkeeper
Latest announcements: https://shkeeper.io/news
<a name="available-coins"></a>
2. Available coins
SHKeeper offers a direct way to receive BTC, ETH, LTC, DOGE, XMR, XRP, TRX, BNB, SOL, MATIC, AVAX, FIRO, USDT (ERC20, TRC20, BEP-20, Polygon, Avalanche), USDC (ERC20, TRC20, BEP-20, Polygon, Avalanche).
<img width="2060" height="800" alt="Group 2614" src="https://github.com/user-attachments/assets/d44d5343-cd90-473f-a63f-dd1b1b74e8c5" /><a name="features"></a>
3. Features
- Non-custodial
- Multi-currency
- No transaction fees & third parties
- Direct crypto payments
- Easily embed payment buttons / QR-code
- Ability to set your exchange rates, commissions, or fees
- Crediting the overpayment to the balance
- Partial payments
- Setting auto-payments into a cold wallet
- Increased privacy and security
- No KYC or AML
- Multipayout
<a name="installation"></a>
4. Installation
Install k3s and helm on a fresh server (tested on Ubuntu 22):
# curl -sfL https://get.k3s.io | sh -
# mkdir /root/.kube && ln -s /etc/rancher/k3s/k3s.yaml /root/.kube/config
# curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Create Shkeeper chart configuration file values.yaml with BTC, LTC, DOGE, XMR enabled:
# cat << EOF > values.yaml
#
# General
#
storageClassName: local-path
#
# BTC and forks
#
btc:
enabled: true
ltc:
enabled: true
doge:
enabled: true
#
# Monero
#
monero:
enabled: true
fullnode:
enabled: true
EOF
Install Shkepeer helm chart:
# helm repo add vsys-host https://vsys-host.github.io/helm-charts
# helm repo add mittwald https://helm.mittwald.de
# helm repo update
# helm install kubernetes-secret-generator mittwald/kubernetes-secret-generator
# helm install -f values.yaml shkeeper vsys-host/shkeeper
Login to Shkeeper: http://<ip>:5000/
Install auto SSL
Install cert-manager:
# helm repo add jetstack https://charts.jetstack.io
# helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.9.1 \
--set installCRDs=true
Create CRDs, replace "demo.shkeeper.io" and "support@v-sys.org" with your own domain and email address:
cat << EOF > ssl.yaml
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: shkeeper-cert
namespace: shkeeper
spec:
commonName: demo.shkeeper.io
secretName: shkeeper-cert
dnsNames:
- demo.shkeeper.io
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-production
spec:
acme:
email: support@v-sys.org
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: your-own-very-secretive-key
solvers:
- http01:
ingress:
class: traefik
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: shkeeper
namespace: shkeeper
spec:
entryPoints:
- web
- websecure
routes:
- match: Host(`demo.shkeeper.io`)
kind: Rule
services:
- name: shkeeper
port: 5000
namespace: shkeeper
tls:
secretName: shkeeper-cert
EOF
Apply CRDS:
# kubectl apply -f ssl.yaml
After a few minutes, your Shkeeper should be reachable on https://<your domain> and have a valid SSL.
Additional configuration for Bitcoin Lightning (advanced users only)
Enable autossl-enabled Ingress on port 9000 for LNURL:
cat << EOF > /var/lib/rancher/k3s/server/manifests/traefik-config.yaml
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: traefik
namespace: kube-system
spec:
valuesContent: |-
additionalArguments:
- "--certificatesresolvers.default.acme.email=acme@shkeeper.io"
- "--certificatesresolvers.default.acme.storage=/data/acme.json"
- "--certificatesresolvers.default.acme.httpchallenge.entrypoint=web"
ports:
lnurl:
port: 9000
exposedPort: 9000
expose:
default: true
EOF
Port 9000 should be publicly available for LNURL to work.
Edit values.yaml to include domain: and external_ip: at the top level. The domain will be used for generating LNURL and external_ip is used for Lightning p2p communication.
#
# General
#
storageClassName: local-path
external_ip: 1.2.3.4
domain: my-shkeeper.example.com
...
<a name="developing"></a>
5. Developing
<a name="payment-flow"></a> Find the comprehensive list of endpoints here https://shkeeper.io/api/
5.1. Payment flow
The process of accepting payments through SHKeeper works as follows: Once you have installed SHKeeper and see active Wallets in the SHKeeper admin panel, you can start configuring your store to work with SHKeeper. SHKeeper operates on an invoice-based system, where each created invoice in SHKeeper corresponds to a unique address for the respective cryptocurrency. This allows you to identify the customer who made the payment.
Creating an invoice requires passing the X-Shkeeper-Api-Key in the header, and you also need to know the cryptocurrency name to form the endpoint for the request.
To begin, you need to obtain a list of cryptocurrencies available for invoice creation from SHKeeper (these are the ones that are online and not disabled in the admin panel).
<p align="center"> <img src="https://github.com/user-attachments/assets/66374540-21de-4cb1-a07f-0813600b743c" alt="image6"> </p>To do this, use the endpoint /api/v1/crypto. This endpoint does not require authorization. The retrieved list can be displayed to the customer to choose the desired cryptocurrency for payment.
Next, create an invoice for the selected cryptocurrency using the endpoint /api/v1/{crypto_name}/payment_request. An invoice in SHKeeper should be created at the stage when you already know the unique order_id /invoice_id in your system, and only for the cryptocurrency chosen by the customer (do not create invoices for all cryptocurrencies received from SHKeeper immediately, as this will generate excess addresses that will not be used later). Invoices in SHKeeper are unique, one invoice will be created in the SHKeeper system for one external_id. The customer can change their mind and generate an address for another cryptocurrency; in this case, simply create an invoice for the new cryptocurrency as usual, and SHKeeper will automatically update the information in the already created invoice and provide you with a new payment address. If the customer pays to the previously generated address, SHKeeper will process the payment, and you will receive a notification (callback) about this payment, as SHKeeper saves all addresses generated by the customer. For each cryptocurrency, the customer receives a unique cryptocurrency address linked to their specific order_id (invoice_id). This address remains the same even if you send another request to SHKeeper to create the same invoice.
When creating an invoice in SHKeeper, provide a
Related Skills
node-connect
332.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
81.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
332.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
81.7kCommit, push, and open a PR
