Skip to main content

Register Transfer Attempt

Registers a deposit or withdrawal attempt without requiring an existing blockchain transaction.

This endpoint is used when a client initiates a transfer attempt (deposit/withdrawal), and BitOK should track and evaluate it even before the blockchain transaction becomes available.


HTTP Request

POST /v1/transfers/register-attempt/


Request Body

A JSON object with the following fields:

FieldTypeRequiredDescription
client_idstring/nullNoExternal ID of the client associated with the attempt (max 40 chars).
attempt_idstring/nullNoExternal ID of the attempt (max 100 chars).
directionstringYesTransfer direction:
incoming
outgoing
networkstringYesBlockchain network code (e.g., ETH, TRX).
token_idstring/nullNoToken identifier. Contract address for ERC-20 tokens or "native" for chain-native assets.
input_addressstring/nullConditionallyRequired if direction = incoming.
output_addressstring/nullConditionallyRequired if direction = outgoing.
amountfloat/nullNoTransfer amount.
risk_modelstring/nullNoCustom risk model ID. If omitted, the default model applies.

Response

Returns a full REGISTERED_TRANSFER_EXTRA object.

Below is the complete structure used across all BitOK transfer APIs.


REGISTERED_TRANSFER_EXTRA

Top-level Fields

FieldTypeDescription
idstringUUID of the registered transfer.
created_atstring (ISO8601)Timestamp when the transfer was created.
check_typestringAlways "manual" for attempts; other values appear in different flows.
check_statusstringRisk processing status — checking, checked.
checked_atstring/nullWhen the risk evaluation was completed.
directionstringincoming or outgoing.
networkstringBlockchain network code.
token_idstring/nullToken used in the transfer.
amountfloat/nullTransfer amount.
fiat_valuefloat/nullValue converted to fiat.
fiat_currencystringFiat currency code (USD).
client_idstring/nullExternal client ID.
attempt_idstring/nullExternal attempt ID.
risk_levelstringAML risk level — high, medium, low, undefined.
risk_scorefloat/nullNumerical risk score.
transactionobject/nullBound blockchain transaction (if matched).
addressobject/nullBound address info (for address-based checks).
categoriesarrayAML risk categories with value distribution.
exposureobject/nullExposure calculation results.
counterpartyobject/nullCounterparty analysis results.

categories[] — AML Category Breakdown

Each entry describes part of the transfer amount associated with a risky category.

FieldTypeDescription
categorystringAML category code (scam, sanctions, exchange, etc.).
amountnumberUSD amount associated with this category.
sharenumberPortion of the total transaction value (0.0–1.0).

exposure Object

FieldTypeDescription
check_statusstringExposure check status — checking, checked.
checked_atstring/nullWhen exposure was calculated.
risk_levelstringExposure risk level.
risk_scorenumber/nullExposure risk score.
fiat_valuenumber/nullExposure amount in USD.
fiat_currencystring"USD".
categoriesarraySame structure as categories above.

counterparty Object

FieldTypeDescription
check_statusstringStatus of the counterparty analysis.
checked_atstring/nullWhen counterparty risk was evaluated.
risk_levelstringCounterparty AML risk level.
risk_scorenumber/nullNumerical counterparty risk score.
proximitystringdirect, indirect, or self.
fiat_valuenumber/nullCounterparty exposure amount in USD.
fiat_currencystring"USD".
entity_categorystring/nullAML category of the counterparty.
categoriesarrayCategory breakdown (same format as above).

Try it

POST/v1/transfers/register-attempt/
API KEY ID
API KEY SECRET
Body (JSON)
HTTP Request
Press "Send Request" to generate HTTP request.
HTTP …
{
// Response will be shown here after the request.
}