> For the complete documentation index, see [llms.txt](https://docs-sdk.crypto-chief.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-sdk.crypto-chief.com/processing/processing.md).

# SDKs overview

Official open-source SDKs for the Crypto Chief crypto processing API. Go, Node.js / TypeScript, Python, PHP, Kotlin / JVM, .NET / C#, and Java are available now.

Official, open-source client libraries for the [Crypto Chief Processing API](https://crypto-chief.com/processing/). Each SDK handles request signing, retries, typed requests and responses, webhook verification, and amount precision — so you can accept crypto payments, send payouts, and sign on-chain transactions without touching the raw HTTP API.

{% hint style="info" %}
The **Go**, **Node.js / TypeScript**, **Python**, **PHP**, **Kotlin / JVM**, **.NET / C#**, and **Java** SDKs are available today.
{% endhint %}

## Available SDKs

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>🐹 Go</strong></td><td>Accept payments, send payouts, sign transactions, and verify webhooks. <strong>Available</strong>.</td><td><a href="/processing/go.md">Go SDK</a></td></tr><tr><td><strong>🟨 JavaScript / TypeScript</strong></td><td>Accept payments, send payouts, sign transactions, and verify webhooks. <strong>Available</strong>.</td><td><a href="/processing/js.md">Node.js / TypeScript SDK</a></td></tr><tr><td><strong>🐍 Python</strong></td><td>Accept payments, send payouts, sign transactions, and verify webhooks. <strong>Available</strong>.</td><td><a href="/processing/python.md">Python SDK</a></td></tr><tr><td><strong>🐘 PHP</strong></td><td>Accept payments, send payouts, sign transactions, and verify webhooks. <strong>Available</strong>.</td><td><a href="/processing/php.md">PHP SDK</a></td></tr><tr><td><strong>🟪 Kotlin / JVM</strong></td><td>Accept payments, send payouts, sign transactions, and verify webhooks. <strong>Available</strong>.</td><td><a href="/processing/kotlin.md">Kotlin SDK</a></td></tr><tr><td><strong>🎯 .NET / C#</strong></td><td>Accept payments, send payouts, sign transactions, and verify webhooks. <strong>Available</strong>.</td><td><a href="/processing/dotnet.md">.NET / C# SDK</a></td></tr><tr><td><strong>☕ Java</strong></td><td>Accept payments, send payouts, sign transactions, and verify webhooks. <strong>Available</strong>.</td><td><a href="/processing/java.md">Java SDK</a></td></tr></tbody></table>

## Quick start

{% tabs %}
{% tab title="Go" %}
Install:

```bash
go get github.com/crypto-chiefs/cryptochief-crypto-processing-go@latest
```

Initialize the client and confirm connectivity:

```go
package main

import (
    "context"
    "fmt"
    "log"

    "github.com/crypto-chiefs/cryptochief-crypto-processing-go"
)

func main() {
    c, err := cryptochief.New("MERCHANT_ID", "API_KEY")
    if err != nil {
        log.Fatal(err)
    }

    assets, err := c.Blockchain.ContractsAvailable(context.Background(), "")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("enabled assets:", len(assets.Items))
}
```

{% endtab %}

{% tab title="Node.js" %}
Install:

```bash
npm install @cryptochiefs/cryptochief-crypto-processing-node
```

Initialize the client and confirm connectivity:

```ts
import { CryptoChiefClient } from '@cryptochiefs/cryptochief-crypto-processing-node';

const client = new CryptoChiefClient({
  merchantId: process.env.MERCHANT_ID!,
  apiKey: process.env.API_KEY!,
});

const { items } = await client.blockchain.contractsAvailable();
console.log('enabled assets:', items.length);
```

{% endtab %}

{% tab title="Python" %}
Install:

```bash
pip install cryptochief-crypto-processing-python
```

Initialize the client and confirm connectivity:

```python
import asyncio
from cryptochief import CryptoChiefClient

async def main():
    async with CryptoChiefClient(merchant_id="MERCHANT_ID", api_key="API_KEY") as client:
        resp = await client.blockchain.contracts_available()
        print("enabled assets:", len(resp.items or []))

asyncio.run(main())
```

{% endtab %}

{% tab title="PHP" %}
Install:

```bash
composer require crypto-chiefs/cryptochief-crypto-processing-php
```

Initialize the client and confirm connectivity:

```php
<?php
require __DIR__ . '/vendor/autoload.php';

use CryptoChief\Processing\Client;

$client = new Client(
    merchantId: 'MERCHANT_ID',
    apiKey:     'API_KEY',
);

$resp = $client->blockchain()->contractsAvailable();
echo 'enabled assets: ' . count($resp->items ?? []) . "\n";
```

{% endtab %}

{% tab title="Kotlin" %}
Install (Gradle Kotlin DSL):

```kotlin
dependencies {
    implementation("com.crypto-chief:cryptochief-crypto-processing-kotlin:0.13.0")
}
```

Initialize the client and confirm connectivity:

```kotlin
import com.cryptochief.processing.CryptoChiefClient
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    CryptoChiefClient.create {
        merchantId = "MERCHANT_ID"
        apiKey     = "API_KEY"
    }.use { client ->
        val resp = client.blockchain.contractsAvailable()
        println("enabled assets: ${resp.items.size}")
    }
}
```

{% endtab %}

{% tab title=".NET / C#" %}
Install:

```bash
dotnet add package CryptoChief.Processing
```

Initialize the client and confirm connectivity:

```csharp
using CryptoChief.Processing;

var client = new CryptoChiefClient(
    Environment.GetEnvironmentVariable("MERCHANT_ID")!,
    Environment.GetEnvironmentVariable("API_KEY")!);

var resp = await client.Blockchain.ContractsAvailableAsync();
Console.WriteLine($"enabled assets: {resp.Items.Count}");
```

{% endtab %}

{% tab title="Java" %}
Install (Maven):

```xml
<dependency>
  <groupId>com.crypto-chief</groupId>
  <artifactId>cryptochief-crypto-processing-java</artifactId>
  <version>0.13.0</version>
</dependency>
```

Initialize the client and confirm connectivity:

```java
import com.cryptochief.processing.CryptoChiefClient;

public class App {
    public static void main(String[] args) {
        try (var client = CryptoChiefClient.create("MERCHANT_ID", "API_KEY")) {
            var resp = client.blockchain().contractsAvailable();
            System.out.println("enabled assets: " + resp.items().size());
        }
    }
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Your **API key is a signing secret** — keep it server-side and load it from an environment variable. Never commit it to version control or ship it in client code.
{% endhint %}

## Key features

* **Typed requests & responses** for every documented endpoint.
* **Automatic request signing** — HMAC-SHA256 v1 headers, computed on every attempt.
* **Contract calls without hand-encoded calldata** — Solidity ABI for EVM/TRON, Anchor + Borsh for Solana, Jetton/NFT/comment helpers for TON.
* **Webhook verification** with typed event payloads.
* **Arbitrary-precision amounts** — never floating-point.
* **Idempotent payouts** and **automatic retries** on transient failures.
* **Local RSA decryption** of generated wallet private keys (opt-in).
* **Pay-in history by deposit address** — the orders one address served, for the support ticket that arrives with an address and no order.
* **Chain and asset catalogues** — the chains the platform is connected to, every coin and token it supports, and the subset your project can be paid in.
* **Filterable sweep history** — the whole project's sweeps or one wallet's, narrowed by what triggered them, by status, or by a single search string (address, transaction hash, or task ID).
* **`gas_source` on sweeps** — decide whether a TRON sweep burns the wallet's own TRX or runs on energy the platform rents.

## Authentication

Every request is signed with headers the SDK sets for you:

```
Merchant:       <your Merchant ID>
X-CC-Timestamp: <Unix time, seconds>
X-CC-Nonce:     <32 hex, new for every request>
X-CC-Signature: v1=hex(hmacSHA256(API_KEY, stringToSign))
```

String to sign for `X-CC-Signature`, lines joined with `\n`, no line break after the last one:

```
CC-HMAC-SHA256-REQ-V1
<X-CC-Timestamp>
<X-CC-Nonce>
<HTTP method in upper case>
<path, e.g. /v1/payout/execute>
<query string without "?", or empty>
<Merchant>
<Idempotency-Key, or empty>
<lowercase hex SHA-256 of the body>
```

`Idempotency-Key` joins the headers when you set one; it is part of the string to sign.

Webhooks are signed with the same API key, over their own string to sign: `X-Webhook-Delivery`, `X-CC-Timestamp` and `X-CC-Signature`. Each SDK verifies them against the raw body — see its Webhooks guide.

Both credentials come from your dashboard → **Integration** tab. See the Authentication guide for your SDK — [Go](/processing/go/authentication.md), [Node.js](/processing/js/authentication.md), [Python](/processing/python/authentication.md), [PHP](/processing/php/authentication.md), [Kotlin](/processing/kotlin/authentication.md), [.NET / C#](/processing/dotnet/authentication.md), or [Java](/processing/java/authentication.md).

## Supported chains

Crypto Processing supports payments and payouts across **25+ chains**, including Ethereum, BNB Smart Chain, Polygon, Tron, TON, Solana, and Bitcoin. See Supported chains for [Go](/processing/go/concepts/chains.md), [Node.js](/processing/js/concepts/chains.md), [Python](/processing/python/concepts/chains.md), [PHP](/processing/php/concepts/chains.md), [Kotlin](/processing/kotlin/concepts/chains.md), [.NET / C#](/processing/dotnet/concepts/chains.md), or [Java](/processing/java/concepts/chains.md).

Rather than hardcode that list, ask the API. Three questions have three separate calls, and they are not interchangeable: which chains the platform's scanner is connected to, every coin and token the platform supports, and which of those **your project** can be paid in right now. Build anything a customer sees from the last one — the catalogue includes assets you have not enabled, and offering one of those fails order creation with `ASSET_NOT_ENABLED` after the customer has already chosen it. Each SDK's Supported chains page names its own three methods.

## Getting help

* REST API reference: [docs-processing.crypto-chief.com](https://docs-processing.crypto-chief.com)
* Source & issues:
  * Go — [cryptochief-crypto-processing-go](https://github.com/crypto-chiefs/cryptochief-crypto-processing-go)
  * Node.js / TypeScript — [cryptochief-crypto-processing-node](https://github.com/crypto-chiefs/cryptochief-crypto-processing-node)
  * Python — [cryptochief-crypto-processing-python](https://github.com/crypto-chiefs/cryptochief-crypto-processing-python)
  * PHP — [cryptochief-crypto-processing-php](https://github.com/crypto-chiefs/cryptochief-crypto-processing-php)
  * Kotlin / JVM — [cryptochief-crypto-processing-kotlin](https://github.com/crypto-chiefs/cryptochief-crypto-processing-kotlin)
  * .NET / C# — [cryptochief-crypto-processing-dotnet](https://github.com/crypto-chiefs/cryptochief-crypto-processing-dotnet)
  * Java — [cryptochief-crypto-processing-java](https://github.com/crypto-chiefs/cryptochief-crypto-processing-java)
* Questions: open a GitHub issue on the relevant SDK, or contact support from your dashboard.

## Contributing

The SDKs are open-source and contributions are welcome. Each SDK ships a test suite — run it before opening a PR, and add a test that exercises the wire shape for any new endpoint.
