The Dekaplet API lets you retrieve supported currencies, validate minimum payment requirements, estimate USD conversions, create payment links, monitor transaction status, retrieve synced balances, and receive signed webhook updates. This guide walks your team through the full integration flow from authentication to production readiness.
| Base API URL | https://www.dekaplet.com/api |
|---|---|
| Authentication | Bearer API key in the Authorization header |
| Response Format | JSON |
Generate or refresh your API key from the dashboard before making API requests. Each account has one active key at a time, so refreshing the key immediately replaces the previous one.
Authorization header as a Bearer token.Accept: application/json on every API request.{
"headers": {
"Authorization": "Bearer pk_your_api_key_here",
"Accept": "application/json",
"Content-Type": "application/json"
}
}
Use the balances endpoint to fetch the stored balances for your configured account. Dekaplet also refreshes these balances automatically whenever a tracked payment status changes, and each balance includes both the native asset value and its stored USD equivalent.
| Method | GET |
|---|---|
| URL | https://www.dekaplet.com/api/balances |
| Auth | Requires a Bearer API key |
{
"success": true,
"message": "Balances retrieved successfully.",
"data": {
"sub_partner_id": "111394288",
"balances": [
{
"currency": "USDDTRC20",
"amount": 0.7,
"pending_amount": 0,
"usd_amount": 0.7,
"pending_usd_amount": 0,
"updated_at": "2026-04-13T20:35:51-04:00"
},
{
"currency": "USDTBSC",
"amount": 1.000134184735,
"pending_amount": 0,
"usd_amount": 1.000134184735,
"pending_usd_amount": 0,
"updated_at": "2026-04-13T20:35:51-04:00"
}
]
}
}
Use the payment links endpoint to create a new transaction. The request amount is treated as a USD value, and the currency field selects the destination payment asset. The API returns the payment identifiers, pricing details, blockchain destination, and timing metadata your application needs to display or store.
| Method | POST |
|---|---|
| URL | https://www.dekaplet.com/api/payment-links |
| Auth | Requires a Bearer API key |
amount |
USD amount to charge. Must be greater than zero. |
|---|---|
currency |
Destination asset ticker, for example BTC, ETH, or TRX. |
is_fixed_rate |
Set to true to request a fixed-rate payment when supported. |
|---|---|
is_fee_paid_by_user |
Set to true if network fees should be paid by the customer. |
order_id |
Optional merchant reference for reconciliation. |
order_description |
Optional human-readable description stored with the payment. |
{
"amount": 150,
"currency": "BTC",
"is_fixed_rate": false,
"is_fee_paid_by_user": false,
"order_id": "order_1001",
"order_description": "Premium subscription payment"
}
{
"success": true,
"message": "Payment link created successfully.",
"data": {
"payment": {
"payment_id": "5169465938",
"purchase_id": "4512369874",
"invoice_id": "4315278456",
"payment_status": "waiting",
"type": "crypto2crypto",
"product": "sub-partner-payment"
},
"pricing": {
"price_amount": 150,
"price_currency": "USD",
"pay_amount": 0.00231,
"pay_currency": "BTC",
"amount_received": 0,
"is_fixed_rate": false,
"is_fee_paid_by_user": false
},
"blockchain": {
"pay_address": "bc1qexampleaddress1234567890",
"network": "BTC",
"smart_contract": null,
"burning_percent": null,
"network_precision": 8
},
"timing": {
"created_at": "2026-04-13T20:35:51-04:00",
"updated_at": "2026-04-13T20:35:51-04:00",
"expiration_estimate_date": "2026-04-13T21:35:51-04:00",
"valid_until": "2026-04-13T21:35:51-04:00",
"time_limit": 3600
},
"additional_info": {
"order_id": null,
"order_description": null,
"payin_extra_id": null,
"customer_email": null,
"ipn_callback_url": "https://www.dekaplet.com/api/merchant/payments/status",
"origin_ip": "203.0.113.25"
}
}
}
Use the currencies endpoint to retrieve the list of configured cryptocurrencies available in Dekaplet. Each item includes the display name, network, icon URL, and supporting metadata such as wallet validation patterns and precision.
| Method | GET |
|---|---|
| URL | https://www.dekaplet.com/api/currencies |
| Auth | Requires a Bearer API key |
{
"success": true,
"message": "Currencies retrieved successfully.",
"data": [
{
"code_id": 1,
"code": "BTC",
"name": "Bitcoin",
"network": "BTC",
"icon_url": "/assets/images/coins/btc.svg",
"logo_file": "btc.svg",
"wallet_regex": "^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$",
"priority": 1,
"extra_id_exists": false,
"extra_id_regex": null,
"track": 1,
"cg_id": "bitcoin",
"is_maxlimit": false,
"smart_contract": null,
"network_precision": 8,
"usd_rate": 64000.12,
"enabled": true,
"created_at": "2026-04-06T20:35:51-04:00",
"updated_at": "2026-04-13T20:35:51-04:00"
},
{
"code_id": 2,
"code": "ETH",
"name": "Ethereum",
"network": "ETH",
"icon_url": "/assets/images/coins/eth.svg",
"logo_file": "eth.svg",
"wallet_regex": "^0x[a-fA-F0-9]{40}$",
"priority": 2,
"extra_id_exists": false,
"extra_id_regex": null,
"track": 1,
"cg_id": "ethereum",
"is_maxlimit": false,
"smart_contract": null,
"network_precision": 18,
"usd_rate": 3200.44,
"enabled": true,
"created_at": "2026-04-06T20:35:51-04:00",
"updated_at": "2026-04-13T20:35:51-04:00"
}
]
}
Use the minimum amount endpoint to determine the smallest supported deposit for a specific source and destination currency pair. This is useful before presenting an amount field or validating a payment request.
| Method | GET |
|---|---|
| URL | https://www.dekaplet.com/api/minimum-amount |
| Auth | Requires a Bearer API key |
currency_from |
Source currency ticker used for the minimum amount lookup. |
|---|---|
currency_to |
Destination currency ticker used for the minimum amount lookup. |
fiat_equivalent |
Optional fiat reference currency. Defaults to USD. |
{
"currency_from": "btc",
"currency_to": "btc",
"fiat_equivalent": "USD",
"is_fixed_rate": false,
"is_fee_paid_by_user": false
}
{
"success": true,
"message": "Minimum amount retrieved successfully.",
"data": {
"currency_from": "btc",
"currency_to": "btc",
"fiat_equivalent": "USD",
"is_fixed_rate": false,
"is_fee_paid_by_user": false,
"min_amount": 0.00034,
"fiat_equivalent_amount": 21.78,
"raw": {
"min_amount": 0.00034,
"fiat_equivalent": 21.78
}
}
}
Use the estimate endpoint to convert a USD amount into the destination payment asset before creating a payment link. This endpoint always uses usd as the base currency and converts it to the requested asset ticker.
| Method | GET |
|---|---|
| URL | https://www.dekaplet.com/api/estimate |
| Auth | Requires a Bearer API key |
amount |
USD amount to convert. Must be at least 1. |
|---|---|
currency |
Destination asset ticker, for example BTC, ETH, or TRX. |
{
"amount": 150,
"currency": "BTC"
}
{
"success": true,
"message": "Estimate retrieved successfully.",
"data": {
"amount": 150,
"currency_from": "usd",
"currency_to": "btc",
"estimated_amount": 0.00231,
"rate": 1.54e-5,
"fee": null,
"raw": {
"currency_from": "usd",
"amount_from": 150,
"currency_to": "btc",
"estimated_amount": 0.00231
}
}
}
Use the transaction status endpoint to retrieve the latest payment state for a specific payment ID. Dekaplet syncs the transaction first, updates the stored record, refreshes balances when needed, and sends your webhook notification automatically if the stored status changes.
| Method | GET |
|---|---|
| URL | https://www.dekaplet.com/api/payment-links/status/{payment_id} |
| Auth | Requires a Bearer API key |
payment_id for your authenticated account.{
"success": true,
"message": "Payment status retrieved successfully.",
"data": {
"payment_id": "5169465938",
"invoice_id": "4315278456",
"purchase_id": "4512369874",
"payment_status": "finished",
"price_amount": 150,
"price_currency": "USD",
"pay_amount": 0.00231,
"pay_currency": "BTC",
"actually_paid": 0.00231,
"pay_address": "bc1qexampleaddress1234567890",
"network": "BTC",
"confirmed_at": "2026-04-13T20:35:51-04:00"
}
}
After Dekaplet processes a payment status change, it forwards the event to the webhook URL saved in your account settings. Production webhook URLs must use HTTPS, and a webhook secret is required whenever a webhook URL is saved.
| Webhook URL | https://example.com/webhooks/dekaplet |
|---|---|
| Webhook Secret | Not configured |
X-Dekaplet-Event: Event name, currently payment.updated.X-Dekaplet-Delivery: unique UUID for the webhook delivery.X-Dekaplet-Timestamp: ISO 8601 timestamp used to generate the signature.X-Dekaplet-Source: Event source, currently dekaplet.X-Dekaplet-Signature: sha256=... HMAC signature generated with your webhook secret.{
"id": "3d58cb81-b6ec-4203-a4df-d09c67b2c1d8",
"event": "payment.updated",
"created_at": "2026-04-13T20:35:51-04:00",
"source": "dekaplet",
"merchant": {
"user_id": null
},
"payment": {
"payment_id": "5169465938",
"invoice_id": "4315278456",
"purchase_id": "4512369874",
"payment_status": "finished",
"price_amount": 150,
"price_currency": "USD",
"pay_amount": 0.00231,
"pay_currency": "BTC",
"actually_paid": 0.00231,
"pay_address": "bc1qexampleaddress1234567890",
"network": "BTC",
"confirmed_at": "2026-04-13T20:35:51-04:00"
},
"provider": {
"name": "dekaplet",
"signature_header": "X-Dekaplet-Signature"
},
"provider_payload": {
"payment_id": "5169465938",
"payment_status": "finished",
"price_amount": 150,
"price_currency": "USD",
"pay_amount": 0.00231,
"pay_currency": "BTC",
"actually_paid": 0.00231
}
}
Build the signature string using the raw request body and the exact timestamp header sent with the webhook. Dekaplet signs webhook payloads with HMAC SHA-256.
sha256 = HMAC_SHA256(X-Dekaplet-Timestamp + "." + raw_request_body, webhook_secret)
import crypto from 'crypto';
const timestamp = req.headers['x-dekaplet-timestamp'];
const signature = req.headers['x-dekaplet-signature'];
const rawBody = requestBodyAsString;
const secret = process.env.DEKAPLET_WEBHOOK_SECRET;
const signedPayload = `${timestamp}.${rawBody}`;
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(signedPayload)
.digest('hex');
if (signature !== expected) {
throw new Error('Invalid webhook signature');
}
Check the HTTP status code first, then inspect the JSON body for validation details or processing failures.
401 |
Authentication failed or the account associated with the API key could not be resolved. |
|---|---|
422 |
Validation failed, for example because of a missing amount, an invalid currency, or a merchant account that is not fully configured for payment processing. |
500 |
Internal processing failed or an upstream payment request could not be completed. |
{
"success": false,
"message": "Validation failed.",
"errors": {
"amount": [
"The amount field is required."
],
"currency": [
"The currency field is required."
]
}
}
Use this checklist to launch safely and avoid the most common payment and webhook issues.
https://www.dekaplet.com/api/payment-links with a Bearer token and a valid request body.X-Dekaplet-Signature using the raw request body and timestamp header.X-Dekaplet-Delivery values.Send, receive, and manage Bitcoin, Ethereum, and other cryptocurrencies instantly. Dekaplet makes crypto transactions fast, secure, and reliable — for merchants, freelancers, and businesses of all sizes.
Get Started NowSee how businesses, freelancers, and merchants trust Dekaplet for fast, secure, and hassle-free crypto payments. Our platform makes receiving and managing digital currencies simple and reliable.