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

# COMPLIANCE_HOLD error

> A transaction's funds are frozen pending a manual compliance review; no funds were credited or moved

## What happened

A deposit or transaction was flagged during compliance screening and its funds have been frozen pending a manual review. The transaction is in a terminal state with `failureCode: compliance_hold`. No funds were credited to the customer.

This code applies specifically to the deposit-frozen path. For compliance-review rejections on outbound transactions, see [COMPLIANCE\_REVIEW\_REJECTED](/errors/compliance-review-rejected).

```json theme={null}
{
  "type": "COMPLIANCE_HOLD",
  "title": "Transaction held for compliance review",
  "status": 422,
  "detail": "This transaction is held pending a regulatory compliance review.",
  "resolution": "Contact support. This cannot be retried without a compliance review.",
  "docs": "/errors#compliance-hold",
  "instance": "/v2/transactions/txn_abc123",
  "correlationId": "corr_xyz789",
  "timestamp": "2026-01-15T09:30:00.000Z"
}
```

## Common causes

* **Screening match on a deposit** -- the inbound transfer matched an elevated-risk or sanctions signal during compliance review, and the deposit policy routes all non-clear decisions to a frozen hold
* **Manual hold placed by Conduit's compliance team** -- the transaction was held pending further investigation

## Recovery

<Warning>
  This is a terminal state. The funds are frozen, not returned. Do not resubmit
  without contacting support first.
</Warning>

**1. Confirm the terminal state**

```bash theme={null}
curl -X GET https://api.conduit.financial/v2/transactions/txn_abc123 \
  -H "x-api-key: YOUR_API_KEY"
```

The response will show `status: "failed"` and `failureCode: "compliance_hold"`.

**2. Contact your account manager**

A compliance hold requires manual review by the compliance team. Provide:

* The transaction ID (`txn_abc123`)
* The correlation ID from the error response
* The customer ID and any context about the transaction source

Do not submit new transactions for the same source until the hold is resolved.

## Prevention

* **Handle `transaction.failed` with this code** -- branch on `failureCode === 'compliance_hold'` to surface a neutral "this transfer requires review" message to the customer without disclosing compliance details
* **Do not retry** -- submitting a replacement transaction for the same source is unlikely to succeed and may flag additional transactions

## Related webhooks

The `transaction.failed` event fires when the hold is recorded:

```json theme={null}
{
  "type": "transaction.failed",
  "data": {
    "transactionId": "txn_abc123",
    "failureCode": "compliance_hold"
  }
}
```

## Related endpoints

* [GET /v2/transactions/:id](/api-reference/transactions/get-a-transaction-by-id) -- read transaction state
