> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Transaction Monitoring Statuses

> Reference for every transaction, alert, case, and travel-rule status, with transitions and meanings. Pay-per-call $0.02 per transaction, no contracts.

Transaction Monitoring has four separate status machines: the **transaction**, each **alert**, each **case**, and (where applicable) the **travel-rule check**. This page is the reference.

## Transaction status

Set on creation and updated through the lifecycle.

| Status | Meaning |
| - | - |
| `APPROVED` | Transaction passed all rules below the review threshold. |
| `IN_REVIEW` | Score crossed the review threshold, or a rule explicitly required review. Analyst attention needed. |
| `DECLINED` | Score crossed the decline threshold, or a rule explicitly declined. Transaction rejected. |
| `AWAITING_USER` | The user must act before the transaction can settle: a rule action required additional verification (a remediation session was created), or a Travel Rule transfer needs proof of wallet control. Read the transaction's `action_required` block for the concrete action and URL. |

### Transitions

```mermaid theme={null}
stateDiagram-v2
    [*] --> APPROVED: Score < review threshold, no blocking rules
    [*] --> IN_REVIEW: Score >= review threshold
    [*] --> DECLINED: Score >= decline threshold, or rule decline action
    [*] --> AWAITING_USER: Rule action change_status → AWAITING_USER
    IN_REVIEW --> APPROVED: Analyst cleared
    IN_REVIEW --> DECLINED: Analyst declined
    AWAITING_USER --> APPROVED: Remediation session approved
    AWAITING_USER --> DECLINED: Remediation session declined
    AWAITING_USER --> IN_REVIEW: Remediation session ended in review
```

Note: there is no direct transition from `APPROVED` or `DECLINED` back to other states. Use status patches via the console for corrections; those are logged to the audit trail.

## Alert status

See [Alerts](/transaction-monitoring/alerts) for full detail.

| Status | Meaning |
| - | - |
| `OPEN` | Just generated; unassigned. |
| `INVESTIGATING` | Analyst is actively working it. |
| `AWAITING_USER` | Pending user action (remediation). |
| `PENDING_SAR` | SAR filing in progress. |
| `SAR_FILED` | SAR filed with regulator; case closed. |
| `RESOLVED` | Closed with an action taken. |
| `DISMISSED` | Closed as false positive. |

## Case status

See [Case Management](/console/case-management/cases) for full detail.

| Status | Meaning |
| - | - |
| `OPEN` | Under active investigation. |
| `AWAITING_USER` | Waiting on user-side input. |
| `RESOLVED` | Closed with a resolution: `FALSE_POSITIVE` or `VALID_THREAT`. |

Cases carry a separate **priority** (`LOW`, `MEDIUM`, `HIGH`).

## Travel-rule check status

Virtual-asset transfers under the FATF Travel Rule run a dedicated **13-state exchange**, separate from the transaction status above. It starts at `AWAITING_COUNTERPARTY` (or `UNCONFIRMED_OWNERSHIP` on the beneficiary side) and finishes in `FINISHED`, `CANCELLED`, or `EXPIRED`.

| Status | Meaning |
| - | - |
| `AWAITING_COUNTERPARTY` | Sent to the counterparty; awaiting their response. |
| `UNCONFIRMED_OWNERSHIP` | Beneficiary wallet ownership not yet proven. |
| `ON_HOLD` | Held for manual action (transaction shows `AWAITING_USER`). |
| `COMPLETED` | Originator and beneficiary data matched - safe to broadcast on-chain. |
| `FINISHED` | On-chain hash reported; exchange closed. |
| `CANCELLED` | Cancelled from a non-terminal state. |
| `EXPIRED` | Confirmation timeout elapsed. |
| `COUNTERPARTY_MISMATCHED_DATA` | Beneficiary name did not match. |
| `COUNTERPARTY_VASP_NOT_FOUND` | No rail could resolve the counterparty. |
| `COUNTERPARTY_VASP_NOT_REACHABLE` | Counterparty identified but its `TRP` endpoint was unreachable. |
| `COUNTERPARTY_VASP_GENERAL_DECLINE` | Counterparty declined the exchange. |
| `NOT_ENOUGH_COUNTERPARTY_DATA` | Counterparty response was incomplete (repairable). |
| `NOT_APPLICABLE` | Disabled, below `threshold_amount`, or a passively recorded legacy value. |

Older integrations may still send the legacy values `UNKNOWN`, `COMPLIANT`, `PENDING_ACTION`, `PENDING_COUNTERPARTY`, `FAILED`, and `EXEMPT`; Didit maps them onto the states above automatically.

See [Travel Rule](/transaction-monitoring/travel-rule#lifecycle) for the authoritative reference.

## Provider result status

Every external provider result (wallet screening, fiat monitoring, sanctions screening) is stored with its own status. Surfaced under `provider_results[]` in the transaction response.

| Status | Meaning |
| - | - |
| `PENDING` | Provider query in flight. |
| `COMPLETED` | Result returned successfully. |
| `FAILED` | Provider errored or timed out. |
| `SKIPPED` | Provider deliberately skipped (e.g. transaction below threshold). |

## Rule-run outcomes

Every `TransactionRuleRun` has:

* `matched` (boolean) — did the rule fire?
* `is_test` (boolean) — was the rule in TEST mode?
* `mode` — `ACTIVE`, `DISABLED`, `TEST` at evaluation time.
* `score_delta` — contribution to the score (if matched and active).
* `status_target` — the status the rule asked for (if `change_status` action).

See [Rules](/transaction-monitoring/rules) for the rule anatomy.

## Decision reason codes

Common `reason` values on status transitions:

| Reason | Meaning |
| - | - |
| `rule_score_threshold` | Score crossed review/decline threshold. |
| `rule_change_status` | A rule's `change_status` action forced a status. |
| `analyst_approved` / `analyst_declined` / `analyst_cleared` | Manual analyst action. |
| `user_action_approved` / `user_action_declined` / `user_action_in_review` | Outcome of the linked remediation session (the user action requested while `AWAITING_USER`). |
| `provider_update` | External provider updated the result. |
| `aml_confirmed_sanction` | AML screen confirmed a sanctions match. |
| `blocklist_applicant` / `blocklist_counterparty` | Blocklist enforcement on a party. |

## Next steps

<CardGroup cols={3}>
  <Card title="Risk scoring" icon="gauge" href="/transaction-monitoring/risk-scoring">
    How scores map to statuses.
  </Card>

  <Card title="Alerts" icon="bell" href="/transaction-monitoring/alerts">
    Alert lifecycle.
  </Card>

  <Card title="Cases" icon="folder-open" href="/transaction-monitoring/cases">
    Case lifecycle.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.