Build with Dekaplet using a clear payment and webhook workflow.

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.

Recommended Integration Flow
  1. Generate an API key from the merchant dashboard and store it securely.
  2. Fetch supported currencies and icon metadata for your checkout or admin UI.
  3. Check the minimum supported amount for the selected currency pair.
  4. Estimate the destination asset amount from USD.
  5. Create the payment link and display the returned payment details.
  6. Check transaction status or wait for signed webhook updates.
  7. Retrieve synced balances whenever you need the latest stored native and USD values.
  8. Verify webhook signatures and make your handler idempotent before going live.
Base URLs and Authentication
Base API URL https://www.dekaplet.com/api
Authentication Bearer API key in the Authorization header
Response Format JSON

Authenticate every request with your active API key.

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.

Header Authorization: Bearer <api_key>
Format Displayed in plain text when generated
Best Practice Store it in a secure server-side environment variable
Authentication headers
  • Send your API key in the Authorization header as a Bearer token.
  • Include Accept: application/json on every API request.
  • Treat the key like a password and rotate it immediately if you suspect it has been exposed.
Headers Example
{
    "headers": {
        "Authorization": "Bearer pk_your_api_key_here",
        "Accept": "application/json",
        "Content-Type": "application/json"
    }
}

Retrieve the latest synced balances for your configured account.

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.

Endpoint
Method GET
URL https://www.dekaplet.com/api/balances
Auth Requires a Bearer API key
What this endpoint returns
  • The configured account identifier linked to your account.
  • The latest stored balance for each returned asset.
  • The pending native amount and stored USD equivalents for each asset.
Response Example
{
    "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"
            }
        ]
    }
}

Create a payment link and return the payment details to your application.

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.

Endpoint
Method POST
URL https://www.dekaplet.com/api/payment-links
Auth Requires a Bearer API key
Required request fields
amount USD amount to charge. Must be greater than zero.
currency Destination asset ticker, for example BTC, ETH, or TRX.
Optional request fields
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.
Request Body
{
    "amount": 150,
    "currency": "BTC",
    "is_fixed_rate": false,
    "is_fee_paid_by_user": false,
    "order_id": "order_1001",
    "order_description": "Premium subscription payment"
}
Response Example
{
    "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"
        }
    }
}

Fetch supported currencies, icons, and related metadata.

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.

Endpoint
Method GET
URL https://www.dekaplet.com/api/currencies
Auth Requires a Bearer API key
What this endpoint returns
  • A list of configured currencies ordered for API consumption.
  • Fully qualified icon URLs that can be displayed directly in your UI.
  • Metadata such as network, wallet regex, precision, and smart-contract details where available.
Response Example
{
    "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"
        }
    ]
}

Check the minimum supported payment amount for a currency pair.

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.

Endpoint
Method GET
URL https://www.dekaplet.com/api/minimum-amount
Auth Requires a Bearer API key
Query Parameters
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.
Request Example
{
    "currency_from": "btc",
    "currency_to": "btc",
    "fiat_equivalent": "USD",
    "is_fixed_rate": false,
    "is_fee_paid_by_user": false
}
Response Example
{
    "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
        }
    }
}

Estimate the payment amount from USD to a supported asset.

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.

Endpoint
Method GET
URL https://www.dekaplet.com/api/estimate
Auth Requires a Bearer API key
Query Parameters
amount USD amount to convert. Must be at least 1.
currency Destination asset ticker, for example BTC, ETH, or TRX.
Request Example
{
    "amount": 150,
    "currency": "BTC"
}
Response Example
{
    "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
        }
    }
}

Check a transaction and sync its latest status.

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.

Endpoint
Method GET
URL https://www.dekaplet.com/api/payment-links/status/{payment_id}
Auth Requires a Bearer API key
What this endpoint does
  • Looks up the payment by payment_id for your authenticated account.
  • Retrieves the latest transaction status when required.
  • Updates the Dekaplet transaction record.
  • Refreshes stored balances when the payment status changes.
  • Sends a signed webhook notification only when the saved status changes.
Status Response Example
{
  "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"
  }
}

Configure your webhook endpoint to receive payment status updates.

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.

Required configuration
Webhook URL https://example.com/webhooks/dekaplet
Webhook Secret Not configured
Forwarded Headers
  • 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.
Forwarded Webhook Payload
{
    "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
    }
}

Verify webhook signatures before trusting the payload.

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.

Signature Formula

sha256 = HMAC_SHA256(X-Dekaplet-Timestamp + "." + raw_request_body, webhook_secret)

Node.js Example
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');
}
Always verify the signature against the raw request body, not a re-serialized JSON object. If your framework mutates JSON formatting, capture the unmodified body before parsing it.

Handle API and webhook errors consistently.

Check the HTTP status code first, then inspect the JSON body for validation details or processing failures.

Common API Errors
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.
Validation Error Example
{
  "success": false,
  "message": "Validation failed.",
  "errors": {
    "amount": [
      "The amount field is required."
    ],
    "currency": [
      "The currency field is required."
    ]
  }
}

Go live with a short production checklist.

Use this checklist to launch safely and avoid the most common payment and webhook issues.

Checklist
  1. Generate your active API key from the dashboard.
  2. Store the key in a server-side environment variable.
  3. Call https://www.dekaplet.com/api/payment-links with a Bearer token and a valid request body.
  4. Configure your webhook URL and webhook secret in the dashboard.
  5. Verify X-Dekaplet-Signature using the raw request body and timestamp header.
  6. Make your webhook handler idempotent by ignoring duplicate X-Dekaplet-Delivery values.
  7. Log both successful and failed webhook deliveries for easier reconciliation.
  8. Refresh your API key immediately if you suspect it has been exposed.
This public documentation explains the full integration flow, while API key generation and webhook configuration are managed from the dashboard.

Start accepting crypto payments

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 Now
Testimonials

What Our Clients Say

See 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.