This document is generated by Apidog. Apidog: All-in-one workspace for API design, document, debug, test, mock
| 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"
}
}status: "fail";paymentId, but with status: "success".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 support 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 | Contact support to сomplete 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 | The specific client (clientId) used for creating deposit/payment (Your user that used to create request for payment) requests has reached the provider's temporary risk limit because of multiple consecutive failed, cancelled, or incomplete payment attempts. New payment creation requests for this client are temporarily restricted. Please wait and try again later or contact support for further instructions. |
| 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 |
| 1029 | BALANCE_TOO_LOW | Low Balance | Balance is not enough for withdraw |
| 1030 | GLOBAL_UNSUCCESSFUL_PAYMENT_LIMIT_REACHED | Maximum limit of unsuccessful deposit creation attempts has been reached for the account | The account used for API payment creation has exceeded the global risk threshold due to a large number of consecutive failed, cancelled, or incomplete payment attempts across multiple clients. New payment creation requests are temporarily restricted for the entire account. Please contact support to restore access. |
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.errorCode in the API Error Codes Reference section and review its description and possible solutions.1025 BANKING_PROVIDER_ERRORPOST /v1/payment10000{
"nonce": 1716307200000,
"amountInCents": 10000,
"currency": "UAH",
"clientId": "user-123"
}{
"data": {
"msg": "Banking provider error"
},
"errorCode": 1025
}