Skip to main content
Corsa can automatically freeze a transaction when a monitoring rule matches, preventing it from settling until a compliance analyst reviews the associated alert. This page explains how the halting mechanism works, the difference between synchronous and asynchronous evaluation, and how frozen transactions move through status changes.

How halting works

When you create a rule, you choose one of two response modes:
  • Alert only — Create an alert for analyst review. The transaction proceeds normally.
  • Alert + Halt transaction — Create an alert and freeze the transaction until it is explicitly released.
When a rule with the HALT_TRANSACTION action matches a transaction, the evaluation returns a FREEZE decision. If multiple rules match, the final decision is FREEZE if any matching rule includes a halt action.

Evaluation modes

Corsa supports two ways to evaluate transactions against your rules. The key difference is who acts on the decision.

Asynchronous evaluation (automatic)

This is the default mode for production transaction monitoring. When you ingest a transaction through the API, Corsa automatically evaluates it against all active rules in the background. If a rule with HALT_TRANSACTION matches:
  1. The transaction status is set to FROZEN.
  2. A compliance alert is created with the highest priority from all matching rules.
  3. The alert includes metadata indicating the transaction was halted.
No additional integration is needed — halting happens automatically as part of the ingestion pipeline.

Synchronous evaluation (on-demand)

You can also evaluate a transaction on demand by calling the evaluation endpoint directly: Endpoint: POST /v1/evaluation/evaluate
POST /v1/evaluation/evaluate
Content-Type: application/json

{
  "transactionId": "txn-uuid-123",
  "transactionData": {
    "amount": 75000,
    "currency": "USD",
    "type": "WITHDRAW",
    "clientId": "client-uuid-123"
  }
}
The response includes a decision field:
DecisionMeaning
ALLOWNo matching rule requires halting. The transaction can proceed.
FREEZEAt least one matching rule includes a halt action. You should hold the transaction.
In synchronous mode, Corsa returns the decision but does not automatically freeze the transaction. Your system is responsible for acting on the FREEZE decision — for example, by holding settlement until the alert is resolved.

Choosing the right mode

ModeWhen to use
Async (automatic)Standard production flow. Transactions are ingested and evaluated automatically. Freezing and alert creation happen without additional code.
Sync (on-demand)Pre-settlement checks where your system needs to make a go/no-go decision before processing a transaction. Useful for payment gateways and real-time authorization flows.
You can use both modes together. For example, use synchronous evaluation as a pre-check before processing, then ingest the transaction for ongoing asynchronous monitoring.

Transaction statuses

Every transaction in Corsa has a status that reflects its current state:
StatusDescription
PENDINGThe transaction is in progress or awaiting processing.
SUCCESSThe transaction completed successfully.
FROZENThe transaction is halted pending compliance review.
CANCELLEDThe transaction was cancelled.
FAILEDThe transaction failed.

Status flow for halted transactions

A typical halted transaction follows this path:
  1. Transaction is ingested with status PENDING.
  2. Async evaluation triggers a rule with HALT_TRANSACTION.
  3. Status changes to FROZEN. A compliance alert is created.
  4. An analyst reviews the alert and the transaction details.
  5. Based on the review, the analyst updates the transaction status:
    • PENDING or SUCCESS if the transaction is cleared.
    • CANCELLED if the transaction should not proceed.

Releasing a frozen transaction

After reviewing the associated alert, update the transaction status to release it: Endpoint: PUT /v1/transactions/{id}/updateStatus
PUT /v1/transactions/txn-uuid-123/updateStatus
Content-Type: application/json

{
  "type": "SUCCESS",
  "reason": "Reviewed and cleared by compliance team"
}
The status change is recorded in the transaction’s status history for audit purposes, including the timestamp and reason.

Configuring halt rules

To add halting to a rule, select Alert + Halt transaction in the Rule Builder configure step, or include HALT_TRANSACTION in the actions array when creating a rule via API:
{
  "actions": [
    {
      "type": "CREATE_ALERT",
      "config": {
        "category": "TRANSACTION_MONITORING",
        "priority": "HIGH",
        "status": "NEW"
      }
    },
    {
      "type": "HALT_TRANSACTION",
      "config": {}
    }
  ]
}
Halting blocks transaction settlement on every match. Use this for high-confidence rules where false positives are rare, and ensure your team has capacity to review frozen transactions promptly.

What’s next?

Building rules

Configure halt actions in the Rule Builder wizard.

Conditions reference

See all operators, entities, and aggregations available for conditions.

Rules and Evaluation API

Full API reference for rule management and evaluation.