Skip to main content

Register Transfer

Registers a new transfer in BitOK KYT and optionally triggers automatic AML checks.

This is the main entry point for submitting blockchain transfers for risk analysis.


HTTP Request

POST /v1/transfers/register/


Request Body

JSON object with the following fields:

FieldTypeRequiredDescription
client_idstring/nullNoExternal client identifier (up to 40 chars).
directionstringYesEither incoming or outgoing.
networkstringYesBlockchain network code (ETH, BTC, TRX, …).
tx_hashstringYesTransaction hash containing the transfer.
token_idstringYesToken ID or contract address. Use native for native assets.
output_addressstringYesRecipient address.
disable_auto_checkbooleanNoIf true, transfer is registered only — no automatic AML checks.
force_recheckbooleanNoForces re-check even if previously checked.
risk_modelstring/nullNoRisk model ID to use (optional).

Example Request

{
"client_id": "id0001",
"direction": "incoming",
"network": "ETH",
"tx_hash": "0x46bf4313a1f7f22cf97859d119c609fedad81541330de661f967795cc4f46e89",
"token_id": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"output_address": "0x98cb5718876aab18e3a8429a18ad543f6369a6f3"
}

Response

A successful request returns HTTP 201 Created with a REGISTERED_TRANSFER_EXTRA object.

This object contains:

  • transfer metadata
  • binding status
  • exposure/counterparty/sanctions check states
  • fiat values
  • risk scoring

REGISTERED_TRANSFER_EXTRA — Full Structure

FieldTypeDescription
idstringUnique transfer ID.
client_idstring/nullExternal client ID.
attempt_idstring/nullInternal processing attempt ID.
registered_atstring (ISO8601)Registration timestamp.
risk_levelstringRisk level for transfer (high, medium, low, undefined).
risk_scorenumber/nullNumerical risk score.
networkstringBlockchain network.
token_idstringToken identifier or contract.
token_symbolstringToken symbol.
tx_statusstringStatus of transaction binding (binding, bound, not_found).
tx_hashstringTransaction hash.
occurred_atstring/nullTimestamp when transfer occurred.
input_addressstring/nullSender address.
output_addressstringReceiver address.
directionstringDirection (incoming / outgoing).
amountnumber/nullToken amount.
value_in_fiatnumber/nullValue in USD.
check_stateobjectExposure/counterparty/sanctions check statuses.
check_state.exposurestringExposure check status (queued, checking, checked).
check_state.exposure_checked_atstring/nullTimestamp of exposure check completion.
check_state.counterpartystringCounterparty check status.
check_state.counterparty_checked_atstring/nullTimestamp of counterparty check.
check_state.sanctionsstringSanctions check status.
check_state.sanctions_checked_atstring/nullTimestamp of sanctions check.
fiat_currencystringFiat currency (USD).

Example Response

{
"id": "81453afe-9e53-40d7-b66e-9ec15382f8ed",
"client_id": "id0001",
"attempt_id": null,
"registered_at": "2025-11-18T12:52:35.189368+03:00",
"risk_level": "undefined",
"risk_score": null,
"network": "ETH",
"token_id": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"token_symbol": "USDT",
"tx_status": "binding",
"tx_hash": "0x46bf4313a1f7f22cf97859d119c609fedad81541330de661f967795cc4f46e89",
"occurred_at": null,
"input_address": null,
"output_address": "0x98cb5718876aab18e3a8429a18ad543f6369a6f3",
"direction": "incoming",
"amount": null,
"value_in_fiat": null,
"check_state": {
"exposure": "queued",
"exposure_checked_at": null,
"counterparty": "none",
"counterparty_checked_at": null,
"sanctions": "none",
"sanctions_checked_at": null
},
"fiat_currency": "USD"
}

Try it

POST/v1/transfers/register/
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.
}