Login
Register
  • Русский
  • English
Login
Register
  • Русский
  • English
  • GET STARTED
  • GITHUB
    • 🐘 SDK PHP
    • 👨‍💻 SDK GOLANG
    • ✳️ SDK NODE JS
  • BASICS
    • 🔑 API key authentication
    • ⏱️ Rate limits and pricing
  • AUTHENTICATION
    • 👨‍💼 User authentication
    • 👨‍💼 User registration
    • 🔐 Password recovery
  • INFORMATION
    • 🆕 Adding a new address
    • 🆎 Getting information at the address
    • 🔍 Search for supported cryptocurrencies at
    • 💰 Available currencies
  • RISK CHECK
    • ♻️ Check lifecycle and statuses
    • 🆕 Adding a new quick check
    • 📑 Getting a list of quick checks
    • 📊 Getting information on quick verification
    • 🔄 Rerun a quick check
    • 👁️ Address tracking
  • TRANSACTION CHECK
    • 🧾 How transaction checks work
    • 🆕 Creating a transaction check
    • 📑 List of transaction checks
    • 📊 Getting a transaction check
  • INVESTIGATION
    • 📝 Getting a list of investigations
    • 🕵️‍♂️ Creating an investigation
    • 📋 Receiving information on the investigation
    • 📊 Getting data on the investigation graph
    • 🧐 In-depth investigation within the framework of the investigation
    • 🔄 Investigation launch
  • BALANCES
    • 💰 Getting user`s balance
    • 📜 Creating a payment invoice
    • 💵 Currencies allowed for replenishment
  • KYC VERIFICATION
    • 🆕 Create KYC verification
    • 📑 List KYC verifications
    • ▶️ Start verification session
    • 📷 Upload photos and documents
    • 📋 Get verification details
    • ⚙️ Get session parameters
    • 🔄 Update verification step
    • 🔍 Check document data
    • 👁️ Start liveness check
    • ✅ Verify liveness data
    • 🔤 Recognize document (OCR)

🧾 Transaction check: how it works

A transaction check (tx-check) takes a transaction hash, detects the network on its own, extracts the parties of the transfer and scores the risk of every address. The resulting score is the maximum across the parties, and the response shows which address produced it.

The difference from a quick check: there the subject is an address in a given currency, here it is the whole transaction, and you do not have to specify the network.

These methods live on the versioned /api/v1 surface, not on /api. It has a different response envelope and different pagination — do not mix it up with the quick check methods.

🌐 Base URL and response envelope

POST https://amlkyc.tech/api/v1/tx-checks
Authorization: Bearer <API_TOKEN>
Accept: application/json
Content-Type: application/json

A successful response always has the same shape:

{
  "success": true,
  "message": "Tx check created.",
  "data": { }
}

So does an error:

{
  "success": false,
  "message": "Insufficient balance."
}

Validation errors add an errors object with the offending fields.

🔐 Access

Transaction checks are enabled for an account on request — contact support. Until they are enabled, every method answers 403 with message: Tx check is not enabled for this account.

The API key itself needs no extra setup: any key issued in the dashboard will do.

For the authorization header itself see API key authentication.

🧮 Networks and hash formats

The network is derived from the shape of the hash and then confirmed by querying the network itself — the network parameter is optional.

Hash shapeCandidate networks
0x + 64 hexeth, bsc, polygon, arbitrum, base, optimism, avax, zksync, iotex, merlin, hsk
64 hex, no prefixtrx, btc, ltc, doge, bch, ton
86–88 base58 characterssolana
43–44 base58 characterssui
43 base64 characters + =ton

If the hash is confirmed in several networks at once (usually the EVM family), the first confirmed one is used; a network you passed is honoured when it is among the confirmed ones.

🚦 Statuses

statusstatus_labelMeaning
0newThe check has been created and queued
1processingScoring of the parties is running
2doneFinished: summary, results and score are filled in
3failedData could not be obtained, the reason is in error

The result is fetched by polling the check record: poll every few seconds until status_label becomes done or failed.

# poll until it finishes
until curl -s "https://amlkyc.tech/api/v1/tx-checks/$ID" \
      -H "Authorization: Bearer $API_TOKEN" -H 'Accept: application/json' \
    | tee /tmp/tx.json | grep -qE '"status_label":"(done|failed)"'; do sleep 5; done
cat /tmp/tx.json

The check runs in the same queue as quick checks and takes from a few seconds to a couple of minutes — budget a client timeout of about 10 minutes, not seconds.

⚠️ Error codes in `error`

The field is filled in only for the failed status:

errorWhat happened
transaction_details_unavailableThe network confirmed the transaction, but its details (the parties of the transfer) could not be fetched
risk_sources_unavailableThe parties are known, but not a single address could be scored
internal_errorInternal error, all retries exhausted
The charge happens when the check is created, after the network confirms the transaction. A failed status is not refunded — it is worth repeating the check later.

💳 Pricing and limits

  • You are charged one check per successful POST /api/v1/tx-checks; the price comes from your tariff plan (the tx_check_price field) and defaults to 1. In the balance history the operation is marked with the tx_check purpose.
  • Sending the same hash again while the check is still running costs nothing — the current record is returned. Sending an already finished (done) check is a new paid run.
  • If the hash is not found (422) or the sources are silent (503), no charge is made.
  • The rate limit is shared across the whole API — 60 requests per minute, see Rate limits and pricing.

📚 Methods

MethodPurpose
POST /api/v1/tx-checksCreate a check from a hash
GET /api/v1/tx-checksList checks with filters
GET /api/v1/tx-checks/{id}Check record and result
Last Updated:: 9/29/26, 11:48 AM
Contributors: afinogen, Claude Opus 5
Prev
RISK CHECK
Next
INVESTIGATION