---
title: "SDK capabilities and installation"
description: "Choose a current SDK and understand how devices, shared seats, credits and customer self-service work together."
slug: "/docs/v1/sdks/capabilities"
section: "SDKs and languages"
order: 41
audience: "all"
level: "beginner"
last_updated: "2026-10-26"
version: "v1"
related: ["/docs/v1/sdks/overview", "/docs/v1/licensing/floating", "/docs/v1/licensing/credits", "/docs/v1/workspace/customer-portal"]
draft: false
---
## New to licensing?

[Build a Python desktop or web app, step by step](/docs/v1/tutorials/python). Start with one successful export, then add shared seats, credits and self-service. [Download the project files](/docs/downloads/kdpika-python-projects-1.0.0.zip).

## One contract across five SDKs

Python 2.0.1, JavaScript 2.0.1, PHP 2.0.1, C# 2.0.1 and Rust 0.2.1 implement the same current license contract. Choose the SDK for your app, not for your store. [Downloads and installation](/docs/v1/sdks/overview).

| Capability | Python | Rust | PHP | JavaScript | C# |
| --- | --- | --- | --- | --- | --- |
| Signed checks and controlled offline access | Supported | Supported | Supported | Supported | Supported |
| Required signed device fingerprint | Supported | Supported | Supported | Supported | Supported |
| Floating checkout, heartbeat, checkin | Supported | Supported | Supported | Supported | Supported |
| Idempotent online credit consumption and balance | Supported | Supported | Supported | Supported | Supported |
| Customer portal | Hosted server feature | Hosted server feature | Hosted server feature | Hosted server feature | Hosted server feature |

## Choose the access model

- **Normal licenses:** activate, check the signed result, then unlock only its allowed features. Offline access remains bounded by signed expiry and your configured policy.
- **Device matching:** SDKs derive product-salted hashes on the supported native OS. Advanced strict/flexible policy follows your workspace entitlements. A virtual-machine hint alone does not reject a device. Software fingerprints are not hardware attestation.
- **Floating licenses:** reserve a seat, keep its signed lease valid, then release it. Handle `ALL_SEATS_IN_USE`. Cached access stops when the signed seat lease expires; ordinary offline grace cannot extend that lease. PHP applications must call `tick()` during long work.
- **Usage credits:** allocate credits through the dashboard/API, consume before the protected operation and retain one idempotency key per real job. Handle `INSUFFICIENT_CREDITS`; do not invent a new key after an uncertain reply. Credits require an online response and are not consumed by a normal feature check.
- **Customer portal:** customers sign in using a verified access link or license key to review licenses, machines, balances, transactions and active shared sessions. Allowed machine/session actions remain authorized and rate-limited by the server. It does not sell plans, take payments or issue refunds.

## WooCommerce

The connector delivers licenses from eligible confirmed orders, synchronizes selected product/plan settings and provides My Licenses. Current license details include credit balances and shared-seat usage. It does not collect a desktop device fingerprint or keep an app's seat alive: the SDK inside the app does that. A store purchase does not automatically grant usage credits in this release. [Store setup](/docs/v1/guides/woocommerce).

## Runtimes and limits

Python supports 3.11–3.14; Rust requires 1.90+; PHP requires 64-bit PHP 8.2+; JavaScript runs in Node.js 22+ or Electron's main process; C# targets .NET 10 LTS. Browser JavaScript and WASM hardware fallback are unsupported. Your installed SDK must match the current required-fingerprint contract; historical 1.x / Rust 0.1.x packages do not.

Always verify a valid result before reading paid features. Stop protected actions after a refused/expired lease or credit charge. No SDK can provide instant offline revocation or make client software impossible to modify. Focused mocked tests are not a substitute for running your packaged app on its target OS.
