# Submit transaction

Use this endpoint to submit transaction data for screening and monitoring. The system analyzes the payment parameters against your selected `ruleset_id` and delivers the result asynchronously to your `callback_url`. To identify the customer, you must provide either an internal `applicant_id` or your `external_applicant_id`.

Endpoint: POST /services/transaction-monitoring
Version: 1.0
Security: API-Key

## Security:

  - `API-Key` (unknown)
    apiKey in header API-Key

## Request fields (application/json):

  - `applicant_id` (string, required)
    A unique identifier of an applicant, that is assigned by our system after an applicant object was created with a “Create an applicant” request
    Example: 27c5caea93ee4656881ef9a30fadd21a3768

  - `external_applicant_id` (string | null)
    A unique identifier of your user in your system
    Example: 8ba166fd-e9ba-49c6-b91a-fdbf0f63f939

  - `external_applicant_registered_at` (string)
    The date and time of user registration in the customer's system. Must be in UTC and follow the `YYYY-MM-DD hh:mm:ss` format. Cannot be a future date
    Example: 2025-12-19 18:44:08

  - `transaction` (object, required)

  - `transaction.direction` (string, required)
    The direction of the transaction
    Enum: "incoming", "outgoing"

  - `transaction.amount` (string | number, required)
    The amount of the transaction
    Example: 150.75

  - `transaction.asset` (string, required)
    The asset ticker of the transaction
    Example: USD

  - `transaction.created_at` (string, required)
    The date and time when the transaction occurred, in UTC
    Example: 2024-07-01 15:27:15

  - `transaction.first_name` (string | null)
    The first name of a person
    Example: Josh

  - `transaction.last_name` (string | null)
    The last name of a person
    Example: Coffey

  - `transaction.payment_method` (string | null)
    The payment method used for the transaction
    Example: credit_card

  - `transaction.payment_instrument_id` (string | null)
    The identifier of the payment instrument used for the transaction
    Example: 8ba166fd-e9ba-49c6-b91a-fdbf0f63f939

  - `transaction.external_transaction_id` (string | null)
    The identifier of the transaction in your system
    Example: 8ba166fd-e9ba-49c6-b91a-fdbf0f63f939

  - `transaction.description` (string | null)
    The free-form description of the transaction
    Example: Monthly subscription payment

  - `ruleset_id` (string, required)
    The unique 36-character hexadecimal identifier of the screening ruleset. This ID is automatically generated after you create a ruleset in the Dashboard. It determines which ruleset will be applied to the transaction
    Example: 27c5caea93ee4656881ef9a30fadd21a3768

  - `callback_url` (string, required)
    The endpoint URL where our system will send real-time webhook notifications via POST request. Your server should respond with a 200 OK status to acknowledge receipt
    Example: https://webhook.site/34374c1f-3b2b-4060-ad26-8a556478df03

## Response 200:

  - `200` (unknown)
    **OK**
The request was successful, and our system returned an expected response.

## Response 200 fields (application/json):

  - `status` (string)
    Example: ok

  - `data` (object)

  - `data.service_request_id` (string)
    Example: 6bff21e17da144418b7643267ba4502930a9

## Response 400:

  - `400` (unknown)
    **Bad Request**
Our system could not process the request due to invalid syntax, missing parameters, or incorrect data format. Check the request structure and try again.

## Response 400 fields (application/json):

  - `type` (string)
    Example: bad_request

  - `errors` (array)

## Response 402:

  - `402` (unknown)
    **Payment Required**
Access to the requested resource is restricted until a payment is successfully processed. Ensure your account has a valid payment method or sufficient funds to complete this action.

## Response 402 fields (application/json):

  - `type` (string)
    Example: insufficient_funds

  - `errors` (array)

## Response 422:

  - `422` (unknown)
    **Unprocessable Content**
The request was well-formed but contains invalid or unprocessable data, such as failed validation or incorrect field values.

## Response 422 fields (application/json):

  - `type` (string)
    Example: validation

  - `errors` (array)

  - `errors.parameter` (string)
    Example: applicant_id

  - `errors.message` (string)
    Example: Either 'applicant_id' or 'external_applicant_id' is required

## Response 500:

  - `500` (unknown)
    **Internal Server Error**
This response indicates that our system encountered an unexpected condition that prevented it from fulfilling the request.

## Response 500 fields (application/json):

  - `type` (string)
    Example: internal_server

  - `errors` (array)

## Response 502:

  - `502` (unknown)
    **Bad Gateway**
This response indicates that our system is unable to reach or communicate properly with an upstream server it relies on, the URL provided is incorrect, or a required token is missing from the request.

