Sent once when a deposit or withdrawal is held for manual compliance review
Transaction Under Review Webhook
This webhook is sent when a user's deposit or withdrawal has been paused for manual compliance review. It lets you tell your user that their transaction was received and is being reviewed, instead of it appearing to have silently stalled.
It is delivered to the /tx endpoint appended to your Webhook URL (the same TRANSACTION channel as transaction status updates). Filter on the type field.
Most compliance checks resolve automatically within seconds to a few minutes and produce no event. This webhook is only sent once a transaction has been held for several minutes and is waiting on a manual decision.
Semantics
- Sent at most once per held transaction. In rare recovery scenarios the event can be duplicated — deduplicate on
transactionId+type. - No reason is included. The event intentionally carries no information about why the transaction is being reviewed, and our support teams cannot share review details either.
- No action is required from you or your user. The review is internal. When it concludes, the transaction proceeds or is declined through the standard events.
- There is no closing event of this type. The outcome is signalled by the terminal
TRANSACTIONwebhook you already consume: the usual completed/confirmed event when the transaction is approved (for exampleSEPA_PAYIN_COMPLETED,ON_CHAIN_DEPOSIT_CONFIRMED), or the corresponding*_DENIEDevent when it is declined.
Covered transaction types
The txType field carries the type of the held transaction:
txType | Flow |
|---|---|
SEPA_PAYIN_COMPLETED | Incoming SEPA transfer |
SEPA_PAYOUT_INITIATED | Outgoing SEPA transfer |
ON_CHAIN_DEPOSIT_CONFIRMED | Incoming on-chain deposit |
ON_CHAIN_WITHDRAWAL_INITIATED | Outgoing on-chain withdrawal |
LN_INCOMING_CONFIRMED | Incoming Lightning payment |
LN_OUTGOING_INITIATED | Outgoing Lightning payment |
Payload
| Field | Description |
|---|---|
uid | Unique id of this webhook delivery |
type | Always TRANSACTION_UNDER_REVIEW |
transactionId | Id of the held transaction, matching the id on its other TRANSACTION webhooks |
accountId | The account the transaction belongs to |
syncedOwnerId | Owner of the account |
userId / businessId / applicationId | One of these, depending on whether the owner is a consumer, a business, or your corporate account |
txType | The held transaction's type (table above) |
amount | Amount in the currency's smallest unit, as a string |
currency | Transaction currency |
heldAt | ISO 8601 timestamp of when the transaction was placed in review |
ts | Delivery timestamp (milliseconds) |
The body shape is identical across all covered transaction types; only the values and the owner id field vary. The examples below cover every txType and every owner shape.
Incoming SEPA transfer (business account)
{
"uid": "a7c31e52-90bb-4f6d-8c21-3d4e5f6a7b8c",
"type": "TRANSACTION_UNDER_REVIEW",
"transactionId": "0cf9a1d4-5b6e-4c7d-8e9f-0a1b2c3d4e5f",
"accountId": "9b8a7c6d5e4f30211203f4e5d6c7b8a9",
"syncedOwnerId": "7d6c5b4a-3e2f-4d5c-8b9a-0f1e2d3c4b5a",
"businessId": "7d6c5b4a-3e2f-4d5c-8b9a-0f1e2d3c4b5a",
"txType": "SEPA_PAYIN_COMPLETED",
"amount": "250000",
"currency": "EUR",
"heldAt": "2026-10-06T09:12:45.820Z",
"ts": 1791278011443
}Outgoing SEPA transfer (corporate account)
{
"uid": "2e9c4a1b-6d53-4f8e-a07b-9c8d7e6f5a4b",
"type": "TRANSACTION_UNDER_REVIEW",
"transactionId": "6a5b4c3d-2e1f-4a9b-8c7d-6e5f4a3b2c1d",
"accountId": "31d2c3b4a5968778695a4b3c2d1e0f9e",
"syncedOwnerId": "e4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
"applicationId": "e4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
"txType": "SEPA_PAYOUT_INITIATED",
"amount": "1800000",
"currency": "EUR",
"heldAt": "2026-10-06T10:03:11.502Z",
"ts": 1791281042780
}Incoming on-chain deposit (consumer)
{
"uid": "8b7a6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
"type": "TRANSACTION_UNDER_REVIEW",
"transactionId": "bf4dbe08-2cb6-43c2-9892-a887e8f4937f",
"accountId": "d2f1b6a09001a2b3c4d5e6f708192a3b",
"syncedOwnerId": "104894c7-95fc-4dde-97dd-cb25b2587b91",
"userId": "104894c7-95fc-4dde-97dd-cb25b2587b91",
"txType": "ON_CHAIN_DEPOSIT_CONFIRMED",
"amount": "10000000",
"currency": "USDC",
"heldAt": "2026-10-06T08:27:54.019Z",
"ts": 1791275304231
}Outgoing on-chain withdrawal (consumer)
{
"uid": "5f1d2c3b-7a88-4a10-9c55-0e1f2a3b4c5d",
"type": "TRANSACTION_UNDER_REVIEW",
"transactionId": "3c2b1a0d-9e8f-4c7b-a6d5-4e3f2a1b0c9d",
"accountId": "7c6b5a4d3e2f10098a7b6c5d4e3f2a1b",
"syncedOwnerId": "104894c7-95fc-4dde-97dd-cb25b2587b91",
"userId": "104894c7-95fc-4dde-97dd-cb25b2587b91",
"txType": "ON_CHAIN_WITHDRAWAL_INITIATED",
"amount": "1250000",
"currency": "BTC",
"heldAt": "2026-10-06T11:41:22.137Z",
"ts": 1791286952601
}Incoming Lightning payment (consumer)
{
"uid": "0d9e8f7a-6b5c-4d3e-a2f1-b0c9d8e7f6a5",
"type": "TRANSACTION_UNDER_REVIEW",
"transactionId": "9f8e7d6c-5b4a-4f3e-b2d1-c0a9b8c7d6e5",
"accountId": "5e4d3c2b1a0f99887766554433221100",
"syncedOwnerId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"userId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"txType": "LN_INCOMING_CONFIRMED",
"amount": "150000",
"currency": "BTC",
"heldAt": "2026-10-06T07:55:09.644Z",
"ts": 1791273339902
}Outgoing Lightning payment (consumer)
{
"uid": "4c3b2a1d-0e9f-4a8b-b7c6-d5e4f3a2b1c0",
"type": "TRANSACTION_UNDER_REVIEW",
"transactionId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"accountId": "0f1e2d3c4b5a69788796a5b4c3d2e1f0",
"syncedOwnerId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"userId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"txType": "LN_OUTGOING_INITIATED",
"amount": "320000",
"currency": "BTC",
"heldAt": "2026-10-06T12:14:37.318Z",
"ts": 1791288947110
}
