Skip to main content

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 AML screening rejections on outbound transactions, see AML_REJECTED.
{
  "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

This is a terminal state. The funds are frozen, not returned. Do not resubmit without contacting support first.
1. Confirm the terminal state
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
The transaction.failed event fires when the hold is recorded:
{
  "type": "transaction.failed",
  "data": {
    "transactionId": "txn_abc123",
    "failureCode": "COMPLIANCE_HOLD"
  }
}