๐ธTransaction Screening API This endpoint registers a financial operation and initiates the complete AML/KYT screening process. It analyzes both the transaction details and the risk profiles of the involved entities (Remitter and Beneficiary). URL: https://app.rillis.io/api/v1/verification/sendRequest Parameters# The request body must contain three main objects: transaction, remitter, and beneficiary, along with your authentication credentials. 1. Root & Authentication# Parameter Type Required Description client_idString Yes Your unique client identifier. client_secretString Yes Your secret API key. transactionObject Yes Contains the financial details of the operation. remitterObject Yes Data regarding the source of funds (Sender). beneficiaryObject Yes Data regarding the destination of funds (Receiver).
2. Transaction Object# This object defines what is being transferred. Parameter Type Required Description external_transaction_idString Yes A unique ID assigned by your system (e.g., invoice number). transaction_typeEnum Yes Values: "FIAT" or "CRYPTO". sending_dollar_amountNumber Yes The estimated equivalent value in USD. sending_amountNumber Yes The amount sent in the original currency. sending_currencyString Fiat Only ISO Code (e.g., "USD", "EUR"). Required if type is FIAT. receiving_amountNumber Yes The amount to be received. receiving_currencyString Fiat Only ISO Code (e.g., "USD"). Required if type is FIAT. networkString Crypto Only Blockchain network (e.g., "Bitcoin", "Ethereum"). assetString Crypto Only The asset symbol (e.g., "BTC", "USDT"). sending_walletString Optional Sender's wallet address (if known for Crypto). receiving_walletString Crypto Only Beneficiary's wallet address.
3. Remitter & Beneficiary Objects# These objects define who is involved. Both remitter and beneficiary share the same structure. Parameter Type Required Description external_idString Yes Unique ID for the user/entity in your system. entity_typeEnum Yes Values: "PERSON", "COMPANY", or "CRYPTO". natural_personObject Conditional Required if entity_type is PERSON. legal_personObject Conditional Required if entity_type is COMPANY. cryptoObject Conditional Required if entity_type is CRYPTO.
A. Person Schema (natural_person)# Used when the entity is an individual. Fields: full_name, nationality (ISO 3166), document_type, document_number, birth_date.
B. Company Schema (legal_person)# Used when the entity is a business. Fields: company_data (Name, Tax ID, Country), legal_representative (List), final_beneficiaries (List of UBOs).
C. Crypto Schema (crypto)# Used when the entity is an unhosted wallet. Fields: address, network, asset.
Examples# Scenario A: FIAT Transaction (Company to Person)# {
"client_id" : "YOUR_CLIENT_ID" ,
"client_secret" : "YOUR_CLIENT_SECRET" ,
"transaction" : {
"external_transaction_id" : "TX-FIAT-998877" ,
"transaction_type" : "FIAT" ,
"sending_dollar_amount" : 1000.00 ,
"sending_amount" : 1000.00 ,
"sending_currency" : "USD" ,
"receiving_amount" : 920.00 ,
"receiving_currency" : "EUR"
} ,
"remitter" : {
"external_id" : "USER-CORP-01" ,
"entity_type" : "COMPANY" ,
"legal_person" : {
"company_data" : {
"company_name" : "Tech Solutions LLC" ,
"country_constitution" : "USA" ,
"email" : "finance@techsol.com"
}
}
} ,
"beneficiary" : {
"external_id" : "USER-IND-55" ,
"entity_type" : "PERSON" ,
"natural_person" : {
"full_name" : "Jane Doe" ,
"nationality" : "DEU" ,
"document_number" : "L882299"
}
}
} Scenario B: CRYPTO Transaction (Person to Wallet)# {
"client_id" : "YOUR_CLIENT_ID" ,
"client_secret" : "YOUR_CLIENT_SECRET" ,
"transaction" : {
"external_transaction_id" : "TX-CRYPTO-112233" ,
"transaction_type" : "CRYPTO" ,
"sending_dollar_amount" : 5000.00 ,
"sending_amount" : 0.15 ,
"network" : "Bitcoin" ,
"asset" : "BTC" ,
"receiving_wallet" : "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
} ,
"remitter" : {
"external_id" : "USER-IND-88" ,
"entity_type" : "PERSON" ,
"natural_person" : {
"full_name" : "Carlos Ruiz" ,
"nationality" : "ARG" ,
"document_number" : "30112233"
}
} ,
"beneficiary" : {
"external_id" : "WALLET-UNK-02" ,
"entity_type" : "CRYPTO" ,
"crypto" : {
"address" : "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa" ,
"network" : "Bitcoin" ,
"asset" : "BTC"
}
}
} Response Schema# A successful request returns a 201 Created status code. The response confirms the registration and provides the internal identifiers needed for tracking. Response Body# A successful request will return a JSON response with the following properties: Parameter Type Description id String Internal unique identifier for the Operation (Parent ID). external_transaction_id String The unique ID provided by you in the request. request_at Long Unix Timestamp (ms) when the request was received. analyzed_at Long/Null Unix Timestamp (ms) when the analysis was completed. null if still in progress. transaction Object Contains the specific state and results of the financial analysis.
Transaction Object Details# Parameter Type Description id String Internal unique identifier for the Transaction Analysis. state Enum The current compliance status (e.g., PROGRESS, COMPLETED, REJECTED). transaction_type Enum Inherited from request: FIAT or CRYPTO. reasons_rejection_analysis Array/Null Automated reasons if the system rejected the transaction. reasons_rejection_operator String/Null Manual notes if a human operator rejected the transaction. rejected_at Long/Null Unix Timestamp (ms) of the rejection, if applicable.
Example Response# {
"id" : "6983a0c061f1341eb94bd182" ,
"external_transaction_id" : "your_external_transaction_id" ,
"request_at" : 1770234048255 ,
"analyzed_at" : null ,
"transaction" : {
"id" : "6983a0c061f1341eb94bd193" ,
"state" : "PROGRESS" ,
"transaction_type" : "CRYPTO" ,
"reasons_rejection_analysis" : null ,
"reasons_rejection_operator" : null ,
"rejected_at" : null ,
"analyzed_at" : null
}
} Error Responses# In case of an error, the API will return an appropriate HTTP status code along with a JSON response containing error details: Status Code Description 400 Bad Request - The request was invalid or cannot be processed. 401 Unauthorized - Authentication credentials are missing or invalid. 403 Forbidden - The client does not have permission to access the requested resource. 429 Too Many Requests - The client has sent too many requests in a given amount of time. 500 Internal Server Error - An error occurred on the server.
Notes# The analysis process typically takes approximately 30 seconds to complete.
If you have configured a webhook, you will receive a notification when the transaction status changes.
Each client_transaction_id must be unique across all your transactions.
Rate Limits# Maximum of 100 requests per minute.
Maximum of 1,000 requests per hour.
Maximum of 10,000 requests per day.
Exceeding these limits will result in a 429 Too Many Requests response. Modified atย 2026-02-05 19:37:58