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

# Unexpected deposits

An unexpected deposit is a transaction not within current orders/deposit plans, or a deposit in an unsupported token. It is not credited to any payer or order. Read [Events overview](https://cobo.com/payments/payments/en/guides/events/overview.md) first for the envelope, deduplication, and the rules that apply to every event.

## Events on this page

| Event | What it notifies you of | Type |
| - | - | - |
| [`payment.transaction.external.created`](#payment-transaction-external-created) | An unexpected deposit was detected. | **Standard** |
| [`payment.transaction.external.completed`](#payment-transaction-external-completed) | The unexpected deposit cleared compliance screening. | **Standard** |

## `payment.transaction.external.created`

### Trigger conditions

Fires when an unexpected deposit is detected (transactions not within current orders/deposit plans, or deposits in unsupported tokens). The funds are not credited yet; record the deposit as unattributed. Deposits at or below the dust threshold (default 0.05) do not produce events.

### Event content

The key fields are below. For the complete list, see [Transaction fields](https://cobo.com/payments/payments/en/guides/events/advanced.md#transaction-fields).

| Field | Type | Description |
| - | - | - |
| `data_type` | `string` | Always `PaymentTransaction`. |
| `transaction_id` | `string` | The deposit's ID in Cobo. |
| `status` | `string` | The transaction status. |
| `chain_id` | `string` | **Optional.** The chain the deposit arrived on. |
| `token_id` | `string` | **Optional.** The token the deposit arrived in. **An unsupported token is one of the common reasons a deposit ends up here**, so this can name a token you have not enabled. |
| `transaction_hash` | `string` | **Optional.** The on-chain hash. |
| `source` | `object` | Where the funds came from, typically an external address. Use it if you return them. |
| `source.addresses` | `array` | The sender addresses. |
| `destination` | `object` | Where the funds went. |
| `destination.address` | `string` | The receiving address. |
| `destination.amount` | `string` | The amount received. |
| `destination.memo` | `string` | **Optional.** The memo, on chains that use one. |
| `created_timestamp` | `integer` | When the deposit was created, in Unix timestamp (milliseconds). |
| `updated_timestamp` | `integer` | When the deposit last changed status, in Unix timestamp (milliseconds). |

### Sample events

The sample shows the `data` object only. The envelope around it is the same for every event — see [Event structure](https://cobo.com/payments/payments/en/guides/events/overview.md#event-structure).

```json theme={null}
{
  "data_type": "PaymentTransaction",
  "transaction_id": "7b3c9d1e-4444-4a5b-8c6d-000000000001",
  "status": "Submitted",
  "chain_id": "TRON",
  "token_id": "TRON_USDT",
  "transaction_hash": "7f3c2a9d5e1b4c6f8a0d2e4b6c8a0f1d3b5e7c9a1d3f5b7e9c1a3d5f7b9e1c3a",
  "source": { "source_type": "DepositFromAddress", "addresses": ["TUnknownSender9x8w7v6u5t4s3r2q1p0o9n8m"] },
  "destination": { "destination_type": "DepositToAddress", "wallet_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "address": "TTopUpAddrM1001UserAbc7k6j5h4g3f2d1s0a", "amount": "35" },
  "confirmed_num": 0,
  "confirming_threshold": 19,
  "created_timestamp": 1744730000000,
  "updated_timestamp": 1744730000000
}
```

## `payment.transaction.external.completed`

### Trigger conditions

Fires when the unexpected deposit clears compliance screening.

### Event content

The key fields are below. For the complete list, see [Transaction fields](https://cobo.com/payments/payments/en/guides/events/advanced.md#transaction-fields).

| Field | Type | Description |
| - | - | - |
| `data_type` | `string` | Always `PaymentTransaction`. |
| `transaction_id` | `string` | The deposit's ID in Cobo. |
| `status` | `string` | The transaction status. |
| `chain_id` | `string` | **Optional.** The chain the deposit arrived on. |
| `token_id` | `string` | **Optional.** The token the deposit arrived in. **An unsupported token is one of the common reasons a deposit ends up here**, so this can name a token you have not enabled. |
| `transaction_hash` | `string` | **Optional.** The on-chain hash. |
| `source` | `object` | Where the funds came from, typically an external address. Use it if you return them. |
| `source.addresses` | `array` | The sender addresses. |
| `destination` | `object` | Where the funds went. |
| `destination.address` | `string` | The receiving address. |
| `destination.amount` | `string` | The amount received. |
| `destination.memo` | `string` | **Optional.** The memo, on chains that use one. |
| `created_timestamp` | `integer` | When the deposit was created, in Unix timestamp (milliseconds). |
| `updated_timestamp` | `integer` | When the deposit last changed status, in Unix timestamp (milliseconds). |

### Sample events

The sample shows the `data` object only. The envelope around it is the same for every event — see [Event structure](https://cobo.com/payments/payments/en/guides/events/overview.md#event-structure).

```json theme={null}
{
  "data_type": "PaymentTransaction",
  "transaction_id": "7b3c9d1e-4444-4a5b-8c6d-000000000001",
  "status": "Completed",
  "chain_id": "TRON",
  "token_id": "TRON_USDT",
  "transaction_hash": "7f3c2a9d5e1b4c6f8a0d2e4b6c8a0f1d3b5e7c9a1d3f5b7e9c1a3d5f7b9e1c3a",
  "source": { "source_type": "DepositFromAddress", "addresses": ["TUnknownSender9x8w7v6u5t4s3r2q1p0o9n8m"] },
  "destination": { "destination_type": "DepositToAddress", "wallet_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "address": "TTopUpAddrM1001UserAbc7k6j5h4g3f2d1s0a", "amount": "35" },
  "confirmed_num": 19,
  "confirming_threshold": 19,
  "created_timestamp": 1744730000000,
  "updated_timestamp": 1744730600000
}
```
