Deposit Endpoints¶
This section covers API endpoints related to deposits. Deposit operations allow users to add cryptocurrencies and fiat currencies to their platform balance by receiving funds from external sources. Different cryptocurrency networks and fiat payment methods have specific conditions, fees, and reference requirements.
Get Personal Deposit Methods¶
Returns deposit methods available to the authenticated user, considering their segments. It also represents the user's deposit limits and fees.
Required Permissions¶
allow_deposit
Rate Limit¶
30 requests per minute
Query Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
currency | string | No | Filter by currency code |
is_enabled | boolean | No | Filter by enabled status |
Response Fields¶
Returns list of objects:
| Field | Type | Description |
|---|---|---|
code | string | Unique identified of the method |
name | string | Human readable name of the |
method_type | string | Type of method. One of: crypto, card and other possible in the future |
currency | string | Code of currency to be withdrawn from balance |
coin | string | Code of coin asset to be received in destination. It carries the info of token symbol and network |
contract_address | string | Contract address for token (if applicable) |
network | string | Network code |
min_amount | string | Minimum amount allowed for withdrawal |
max_amount | string | Maximum amount allowed for withdrawal |
fee_percent | string | Percentage fee applied to the withdrawal amount (e.g., "0.5" for 0.5%) |
fee_percent_min | string | Minimum fee amount applied based on the percentage (e.g., "1.00" for 1 unit of currency) |
fee_percent_max | string | Maximum fee amount applied based on the percentage (e.g., "10.00" for 10 units of currency) |
fee_absolute | string | Fixed fee amount applied to the withdrawal (e.g., "2.00" for 2 units of currency) |
required_confirmations | integer | Required number of blockchain confirmations (for crypto methods) |
is_enabled | bool | Whether the method is currently enabled for the user |
spend_precision | integer | Number of decimal places allowed for the withdrawal amount. Usually 8. |
receive_precision | integer | Number of decimal places allowed for the received amount. Usually 8. |
Response Example¶
[
{
"code": "USDTTRC20",
"name": "USDT Tron",
"method_type": "crypto",
"currency": "USDT",
"coin": "USDTTRC20",
"network": "TRX",
"contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"min_amount": "0.00000001",
"max_amount": null,
"fee_percent": "0.00000000",
"fee_percent_min": null,
"fee_percent_max": null,
"fee_absolute": "0.00000000",
"required_confirmations": 0,
"is_enabled": true,
"spend_precision": 8,
"receive_precision": 8
},
{
"code": "USDTERC20",
"name": "USDT Ethereum",
"method_type": "crypto",
"currency": "USDT",
"coin": "USDTERC20",
"network": "ETH",
"contract_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"min_amount": "0.00000001",
"max_amount": null,
"fee_percent": "0.00000000",
"fee_percent_min": null,
"fee_percent_max": null,
"fee_absolute": "0.00000000",
"required_confirmations": 0,
"is_enabled": true,
"spend_precision": 8,
"receive_precision": 8
},
{
"code": "BTC",
"name": "BTC Bitcoin",
"method_type": "crypto",
"currency": "BTC",
"coin": "BTC",
"network": "BTC",
"contract_address": null,
"min_amount": "0.00000001",
"max_amount": null,
"fee_percent": "0.00000000",
"fee_percent_min": null,
"fee_percent_max": null,
"fee_absolute": "0.00000000",
"required_confirmations": 0,
"is_enabled": true,
"spend_precision": 8,
"receive_precision": 8
}
]
Generate Deposit Address¶
Generates a new deposit address for a specific currency and method.
Required Permissions¶
allow_deposit
Rate Limit¶
600 requests per minute
Request Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
currency | string | Yes | Currency code for the deposit |
method | string | No | Specific deposit method code. If not provided, the default method for the currency will be used. See the Get Personal Deposit Methods endpoint for available methods |
callback_url | string | No | URL that will be called with status updates |
custom_id | string | No | Custom identifier for tracking this deposit address |
Notes¶
Deposit address does not bound to specific deposit method or coin or even blockchain network. That is means that you can deposit for example USDCERC20 to POL deposit address and deposit will be successfully processed. So always check which assed is deposited in deposit object.
Example Request¶
{
"currency": "BTC",
"method": "BTC",
"callback_url": "https://example.com/callbacks/deposits",
"custom_id": "my-deposit-address-123"
}
Example Response¶
{
"address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"tag": null,
"network": "bitcoin",
"currency": "BTC"
}
For currencies that require a tag/memo (like XRP, XLM, EOS):
{
"address": "rLW9gnQo7BQhU6igk5keqYnH3TVrCxGRzm",
"tag": "123456",
"network": "ripple",
"currency": "XRP"
}
Full example response:
{
"currency": "USDT",
"method": "USDTERC20",
"callback_url": "https://example.com/test_callback",
"custom_id": "1121212",
"address": "0x1f5CE5FBFe3E9af3971dD833D26BA9b5C936f7bE",
"tag": null,
"label": null,
"received_amount_usdt": "0.00000000",
"received_count": 0,
"received_count_success": 0,
"assigned_at": "2025-09-04T13:06:40.622038Z"
}
Response Fields¶
| Field | Type | Description |
|---|---|---|
address | string | Deposit address |
tag | string | Destination tag/memo (if required by the currency) |
network | string | Network code |
currency | string | Currency code |
List Deposits¶
Returns a list of deposits.
Required Permissions¶
allow_deposit
Rate Limit¶
600 requests per minute
Query Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Number of results to return (default: 100, max: 200) |
offset | integer | No | Number of results to skip (for pagination) |
status | string | No | Filter by status (see Deposit Status Values) |
currency | string | No | Filter by currency |
custom_id | string | No | Filter by custom ID |
start_at | string | No | Filter by start datetime on field created_at (inclusive, ISO 8601 format) |
end_at | string | No | Filter by end datetime on field created_at (inclusive, ISO 8601 format) |
Response¶
The API uses a standard offset-based pagination system with limit and offset parameters. The response is a direct array of deposit objects without pagination metadata wrapper.
[
{
"code": "DEP123456",
"custom_id": "my-deposit-123",
"callback_url": "https://example.com/callbacks/deposits",
"created_at": "2023-01-15T14:30:15Z",
"updated_at": "2023-01-15T14:35:20Z",
"done_at": "2023-01-15T14:35:20Z",
"method": "BTC",
"network": "bitcoin",
"contract": null,
"status": "success",
"reason_code": null,
"reason_message": null,
"currency": "BTC",
"coin": "BTC",
"amount": "0.05000000",
"fee_amount": "0.00000000",
"actual_confirmations": 3,
"required_confirmations": 2,
"txid": "7b5968e39e0d4c980a234931b8a2fd21e804eb7e9f7eb5af75b3d89e2972ad3d",
"attributes": {
"address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
}
}
// More deposits...
]
Response Fields¶
| Field | Type | Description |
|---|---|---|
code | string | Unique deposit code |
custom_id | string | Custom identifier provided when generating the address |
callback_url | string | URL that will be called with status updates |
created_at | string | Creation timestamp (ISO 8601 format) |
updated_at | string | Last update timestamp (ISO 8601 format) |
done_at | string | Completion timestamp (ISO 8601 format) |
method | string | Deposit method code |
network | string | Network code |
contract | object | Contract details (for token deposits) |
status | string | Current status of the deposit |
reason_code | string | Error code (if the deposit failed) |
reason_message | string | Error message (if the deposit failed) |
currency | string | Currency code |
coin | string | Coin symbol |
amount | string | Deposit amount |
fee_amount | string | Fee amount |
actual_confirmations | integer | Current number of blockchain confirmations |
required_confirmations | integer | Number of confirmations required for completion |
txid | string | Transaction ID on the blockchain |
attributes | object | Additional attributes (like address and tag) |
Pagination¶
The API uses simple offset-based pagination with limit and offset parameters. Offset is limited for maximum 10000, if you set more - error will be returned. The default limit is 100, and the maximum limit is 200. The response is a direct list of deposit objects without pagination metadata wrapper. If you need to fetch more than 200 deposits, you should use the start_at and end_at parameters to fetch deposits in smaller date ranges. List is sorted by creation date in descending order.
Deposit Status Values¶
| Status | Description |
|---|---|
pending | Deposit is detected, in confirmation procedure |
quarantine | Deposit suspended for quarantine procedure |
suspended | System or manager suspended deposit |
success | Deposit successfully completed |
failed | Deposit was rejected or failed |
Confirmation Status¶
Note that not only actual_confirmations need to be higher than required_confirmations to mark the deposit as success. But we also do additional checks on the deposit such as AML screening. If the deposit is marked as pending or quarantine, it means that the deposit is still in the process of being confirmed.
Get Deposit Details¶
Returns details of a specific deposit.
Required Permissions¶
allow_deposit
Rate Limit¶
600 requests per minute
Path Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Unique deposit code |
Response¶
Same as a single deposit object from the list endpoint.
Callback Notifications¶
If a callback_url was provided when generating the deposit address, the system will send POST requests to this URL when the deposit status changes.
Important Note: You may not receive callbacks for every intermediate status change or field update if changes occur very rapidly. When operations transition through multiple states quickly, intermediate callbacks may be skipped. However, you will always receive callbacks for the final states of operations. Design your callback handling to be idempotent and not dependent on receiving every single state transition.
Callback Security
Currently, callbacks are not signed. The signature mechanism for callbacks is planned for a future update. You should validate callback data by making an authenticated API request to verify the deposit status.
Callback Payload¶
The callback payload contains the same data as the deposit details response, with essential fields for status updates:
{
"code": "DEP123456",
"custom_id": "my-deposit-123",
"created_at": "2023-01-15T14:30:15Z",
"updated_at": "2023-01-15T14:35:20Z",
"done_at": "2023-01-15T14:35:20Z",
"status": "success",
"reason_code": null,
"reason_message": null,
"currency": "BTC",
"amount": "0.05000000",
"fee_amount": "0.00000000",
"txid": "7b5968e39e0d4c980a234931b8a2fd21e804eb7e9f7eb5af75b3d89e2972ad3d",
"attributes": {
"address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
}
}
Securing Callbacks¶
Since callbacks are not currently signed, you should implement these security measures:
- Whitelist IPs: Accept callbacks only from the service's IP addresses. Contact support to get the list of server IPs.
- Verify Data: Always make an authenticated API request to
/deposit/{code}to verify the status and details of any deposit after receiving a callback. - Use HTTPS: Ensure your callback URL uses HTTPS to encrypt the data in transit.
Common Use Cases¶
- Generating deposit addresses: Create addresses for user deposits
- Monitoring deposits: Track the status of incoming deposits
- Reconciling deposits: Verify that deposits have been correctly credited to your account