| Component | Description |
|---|---|
| Public Key | Used in the x-api-key header to identify your application |
| Secret Key | Used to sign requests (keep this secure, never expose it!) |
| Permissions | Control which features your API key can access (TOP_UP, WITHDRAW, ACCOUNT_DATA) |
| Header | Value |
|---|---|
x-api-key | YOUR_PUBLIC_KEY |
x-txc-payload | BASE64_ENCODED_REQUEST_BODY |
x-txc-signature | HMAC_SHA512_SIGNATURE |
nonce (current timestamp in milliseconds) in every request body: {
"nonce": 1707484035123,
"amountInCents": 10050,
"currency": "UAH"
}x-api-key, x-txc-payload, and x-txc-signature on every request.POST /v1/payment/calculatePOST /v1/paymentpaymentUrl returned in the response.webhookUrl will receive a push notification when the payment completes.POST /v1/withdraw/calculate-fiatPOST /v1/withdraw/cardPOST /v1/withdraw/calculate-cryptoPOST /v1/withdraw/cryptoPOST /v1/withdraw/calculate-fiatPOST /v1/withdraw/codePOST /v1/payment/detailsPOST /v1/withdraw/detailsPOSTContent-Type: application/json
x-api-key: YOUR_PUBLIC_KEY
x-txc-payload: BASE64_ENCODED_BODY
x-txc-signature: HMAC_SHA512_SIGNATURE{
"type": "payment",
"data": {
"paymentId": "43066701-0111-412c-8a0c-b8c06800449d",
"status": "success",
"amountInCents": 10050,
"currencyId": "UAH",
"codeId": "ABC123DEF456",
"createdAt": "2026-02-12T10:30:00.000Z"
}
}| Field | Description |
|---|---|
type | Webhook type, always "payment" for payment webhooks |
paymentId | Unique payment identifier (UUID) |
status | Payment status: "new", "success", or "fail" |
amountInCents | Payment amount in cents |
currencyId | Currency code (UAH, KZT, EUR) |
codeId | Activation code ID (null if payment failed or not yet generated) |
createdAt | Payment creation timestamp (ISO 8601) |
{
"type": "withdraw",
"data": {
"withdrawId": "123e4567-e89b-12d3-a456-426614174000",
"status": "success",
"amountInCents": 100000,
"currencyId": "UAH",
"type": "card",
"createdAt": "2026-02-12T10:30:00.000Z"
}
}| Field | Description |
|---|---|
type | Webhook type, always "withdraw" for withdrawal webhooks |
withdrawId | Unique withdrawal identifier (UUID) |
status | Withdrawal status: "new", "notConfirmed", "confirmed", "busy", "success", or "fail" |
amountInCents | Withdrawal amount in cents |
currencyId | Currency code |
type | Withdrawal type: "card", "code", "btc", "usdtTrc20", or "usdtErc20" |
createdAt | Withdrawal creation timestamp (ISO 8601) |
POST https://your-site.com/webhook
Content-Type: application/json
x-api-key: your_public_key_abc123
x-txc-payload: eyJ0eXBlIjoicGF5bWVudCIsImRhdGEiOns...
x-txc-signature: a3f5c8e9b1d2f4a7c6e8d9f0b2a5c7e9f1d3a6...{
"type": "payment",
"data": {
"paymentId": "43066701-0111-412c-8a0c-b8c06800449d",
"status": "success",
"amountInCents": 10050,
"currencyId": "UAH",
"codeId": "ABC123DEF456",
"createdAt": "2026-02-12T10:30:00.000Z"
}
}paymentId or withdrawId to deduplicate eventsDate.now() in JavaScript){ data: {...} } formaterrorCode and descriptive messages{
"data": {
// Response data here
}
}{
"data": {
"msg": "Error description"
},
"errorCode": 1002
}{
"data": {
"msg": "Human-readable error description",
"field": "fieldName"
},
"errorCode": 1002
}| Code | Error Name | Description | Solution |
|---|---|---|---|
| 1001 | API_KEY_REQUIRED | API key header missing | Add x-api-key header to your request |
| 1002 | API_KEY_INVALID | Invalid or wrong API key | Check your public key is correct |
| 1003 | API_KEY_BLOCKED | API key is blocked | Contact administrator to unblock |
| 1004 | API_KEY_INACTIVE | API key is not active | Contact administrator to activate |
| 1005 | PAYLOAD_MISMATCH | Payload header doesn't match request body | Ensure payload header matches actual body |
| 1006 | SIGNATURE_REQUIRED | Signature header missing | Add x-txc-signature header |
| 1007 | PAYLOAD_HEADER_REQUIRED | Payload header missing | Add x-txc-payload header |
| 1008 | SIGNATURE_INVALID | Signature doesn't match expected value | Verify signature generation (HMAC-SHA512) |
| 1009 | TOP_UP_DISABLED | Top-up permission not enabled for API key | Enable TOP_UP permission for your API key |
| 1010 | API_GLOBALLY_DISABLED | API is globally disabled | Contact support |
| 1011 | ACTION_DISABLED | Required permission not enabled | Check API key permissions |
| 1012 | AMOUNT_NOT_DIVISIBLE | Amount must be divisible by 100 for this currency | Use amount divisible by 100 (see nearestLower/Higher) |
| 1013 | USER_VERIFICATION_REQUIRED | User needs KYC verification | Complete verification process |
| 1014 | INTERNAL_ERROR | Internal server error | Contact support with request details |
| 1015 | AMOUNT_TOO_LOW | Amount below minimum allowed | Increase amount to meet minimum |
| 1016 | AMOUNT_TOO_HIGH | Amount above maximum allowed | Decrease amount to meet maximum |
| 1017 | PAYMENT_NOT_FOUND | Payment doesn't exist or access denied | Verify payment ID and ownership |
| 1018 | API_DISABLED | API is disabled for this environment | Contact support |
| 1019 | CODE_ACTIVATION_FAILED | Code activation failed | Verify code is valid and not already used |
| 1020 | CODE_NOT_FOUND | Activation code doesn't exist | Check code value is correct |
| 1021 | PAYLOAD_ERROR | Request payload is invalid | Check request body structure |
| 1022 | CARD_VALIDATION_FAILED | Card number validation failed | Verify card number format |
| 1023 | MIN_CRYPTO_AMOUNTS_FAILED | Failed to get minimum crypto amounts | Contact support or try again later |
| 1024 | EXCHANGER_DISABLED | Cryptocurrency exchanger is disabled | Contact support |
| 1025 | BANKING_PROVIDER_ERROR | Banking provider error occurred | Contact support with transaction details |
| 1026 | PROVIDER_TEMPORARY_BLOCK | Provider payments temporarily blocked | Try again later or use different payment method |
| 1027 | CODE_ALREADY_REDEEMED | Code has already been used | Each code can only be used once |
| 1028 | WITHDRAW_NOT_FOUND | Withdrawal doesn't exist or access denied | Verify withdrawal ID and ownership |
nonce is included in the request bodyTOP_UP_DISABLED — API key cannot create paymentsACTION_DISABLED — API key lacks a specific feature permissionnearestLower and nearestHigher suggested amounts. Always use /payment/calculate first to validate amounts./account-data/code-details before attempting activation.