Home
Home
  1. ๐Ÿ’ธTransaction Screening API
  • ๐Ÿš€ Getting Started
  • ๐Ÿ”Ž Screening API
    • Overview
    • Blacklist Matching Logic
    • ๐Ÿ“ก Endpoints
      • Blockchain Analysis
      • Individuals Analysis
      • Organizations Analysis
      • Screening Entities Summary Analysis
      • Create BlackList
      • Get All BlackList Records
      • Get Blacklist Record by ID
      • Delete Blacklist Record by ID
      • Update Blacklist Record by ID
      • Update Blacklist Settings Account
  • ๐ŸŒŠ Flow API
    • Overview
    • Flow Step: Identity Verification
    • Flow Step: Onboarding Individual
    • Flow Step: Onboarding Organization
    • ๐Ÿ“ก Endpoints
      • Authentication token
      • Get Flow Instances
      • Get Flow Instance By Id
      • Get File from Flow Instance
      • Identity: Get Details
      • Identity: Get Files
      • Identity: Update Status
      • Onboarding: Get Details
      • Onboarding: Get File
      • Onboarding: Get Multiple Files
      • Onboarding: Update Status
      • Onboarding: Get Entity by document number
      • Onboarding: Get Entity List by document number
    • ๐Ÿ“ค Webhooks
      • Overview
      • Flow
      • Identity Verification
      • Onboarding Individual
      • Onboarding Organizations
      • Identity Verification by Onboarding
  • ๐Ÿ’ธTransaction Screening API
    • ๐Ÿ”‘ Authentication
    • Overview
    • Transaction Analysis
    • Monitoring & History
    • Document Types
    • Supported Currencies
    • Diagram
    • ๐Ÿ“ค Webhooks
    • ๐Ÿ“ก Endpoints
      • Submit Transaction
      • List Transactions
      • List Document types
      • List Cryptocurrencies
      • Register remitter
      • Register Beneficiary
  • ๐Ÿ“‚ Resources
    • Concept Details
    • Enum Validation
Home
Home
  1. ๐Ÿ’ธTransaction Screening API

Transaction Analysis

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/send
Method: POST
API Reference: To see the technical details, parameters, and live testing for this process, go to:
POST - Submit Transaction

Request Parameters#

The request body must contain three main objects: transaction, remitter, and beneficiary, along with your authentication credentials.

1. Root & Authentication#

ParameterTypeRequiredDescription
client_idStringYesYour unique client identifier.
client_secretStringYesYour secret API key.
transactionObjectYesContains the financial details of the operation.
remitterObjectYesData regarding the source of funds (Sender).
beneficiaryObjectYesData regarding the destination of funds (Receiver).

2. Transaction Object#

This object defines what is being transferred.
ParameterTypeRequiredDescription
external_transaction_idStringYesA unique ID assigned by your system (e.g., invoice number).
transaction_typeEnumYesValues: "FIAT" or "CRYPTO".
sending_dollar_amountNumberYesThe estimated equivalent value in USD.
sending_amountNumberYesThe amount sent in the original currency.
sending_currencyStringFiat OnlyISO Code (e.g., "USD", "EUR"). Required if type is FIAT.
receiving_amountNumberYesThe amount to be received.
receiving_currencyStringFiat OnlyISO Code (e.g., "USD"). Required if type is FIAT.
networkStringCrypto OnlyBlockchain network (e.g., "Bitcoin", "Ethereum").
assetStringCrypto OnlyThe asset symbol (e.g., "BTC", "USDT").
sending_walletStringOptionalSender's wallet address (if known for Crypto).
receiving_walletStringCrypto OnlyBeneficiary's wallet address.

3. Remitter & Beneficiary Objects#

These objects define who is involved. Both remitter and beneficiary share the same structure.
ParameterTypeRequiredDescription
external_idStringYesUnique ID for the user/entity in your system.
entity_typeEnumYesValues: "PERSON", "COMPANY", or "CRYPTO".
natural_personObjectConditionalRequired if entity_type is PERSON.
legal_personObjectConditionalRequired if entity_type is COMPANY.
cryptoObjectConditionalRequired 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:
ParameterTypeDescription
idStringInternal unique identifier for the Operation (Parent ID).
external_transaction_idStringThe unique ID provided by you in the request.
request_atLongUnix Timestamp (ms) when the request was received.
analyzed_atLong/NullUnix Timestamp (ms) when the analysis was completed. null if still in progress.
transactionObjectContains the specific state and results of the financial analysis.

Transaction Object Details#

ParameterTypeDescription
idStringInternal unique identifier for the Transaction Analysis.
stateEnumThe current compliance status (e.g., PROGRESS, COMPLETED, REJECTED).
transaction_typeEnumInherited from request: FIAT or CRYPTO.
reasons_rejection_analysisArray/NullAutomated reasons if the system rejected the transaction.
reasons_rejection_operatorString/NullManual notes if a human operator rejected the transaction.
rejected_atLong/NullUnix 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 CodeDescription
400Bad Request - The request was invalid or cannot be processed.
401Unauthorized - Authentication credentials are missing or invalid.
403Forbidden - The client does not have permission to access the requested resource.
429Too Many Requests - The client has sent too many requests in a given amount of time.
500Internal Server Error - An error occurred on the server.

Notes#

The analysis process typically takes approximately 30 seconds to complete.
You can check the status of a transaction using the Transaction Status endpoint.
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
Previous
Overview
Next
Monitoring & History
Built with