# Receive assets with Travel Rule

This workflow covers detecting and processing incoming deposits with Travel Rule compliance. Ripple Custody automatically handles most of this process.

## Prerequisites

- [Travel Rule setup](/products/custody/compliance/travel-rule/setup) complete
- Wallet addresses registered with Notabene


## Process flow


```mermaid
sequenceDiagram
    participant Blockchain
    participant Custody
    participant Notabene

    Blockchain->>Custody: 1. Incoming transfer detected
    Custody->>Custody: Funds quarantined

    Custody->>Custody: 2. Screen risk (if configured)
    alt Screening failed
        Custody->>Custody: AUTO_REJECTED (no Travel Rule check)
    else Screening passed or not configured
        Custody->>Notabene: 3. Check for existing Travel Rule message
        alt Travel Rule message exists
            Notabene-->>Custody: Return message data
        else No Travel Rule message
            Custody->>Notabene: Create Travel Rule message
        end
    end

    Custody->>Custody: 4. Compliance decision

    alt AUTO_APPROVED
        Custody->>Custody: 5. Release funds
        Custody->>Notabene: Notify settlement
    else AUTO_REJECTED or NEED_EXPLICIT_DECISION
        Custody->>Custody: Funds remain quarantined
    end
```

## Step 1: Transaction detection and quarantine

When an incoming transaction is detected on the blockchain, Ripple Custody automatically:

1. Detects the incoming transfer.
2. Quarantines the funds pending compliance checks.


**No action required** — this is automatic.

## Step 2: Risk screening

If transaction screening is configured (Chainalysis or Elliptic), Ripple Custody screens the transaction first.

- **If screening fails** (high risk score): The transaction is immediately rejected. No Travel Rule check occurs.
- **If screening passes**: The workflow proceeds to the Travel Rule check.


## Step 3: Travel Rule check

Ripple Custody checks [Notabene](https://notabene.id) for an existing incoming Travel Rule message for this transaction:

- **If a Travel Rule message exists**: The message data is retrieved from the originating VASP.
- **If no Travel Rule message exists**: Ripple Custody creates a Travel Rule message with basic settlement address information.


## Step 4: Compliance decision

Ripple Custody evaluates the results:

| Screening Result | Travel Rule Result | Decision |
|  --- | --- | --- |
| Approved | Approved | `AUTO_APPROVED` |
| Rejected | — | `AUTO_REJECTED` (Travel Rule skipped) |
| Approved | Rejected | `AUTO_REJECTED` |
| Inconclusive | Inconclusive | `NEED_EXPLICIT_DECISION` |


If only one check is configured (screening only or Travel Rule only), the decision is based on that single check.

## Step 5: Fund release or rejection

**If `AUTO_APPROVED`:**

1. Funds are released from quarantine.
2. After on-chain settlement, Notabene is notified.


**If `AUTO_REJECTED`:**

1. Funds remain quarantined.
2. Notabene is notified of rejection.


**If `NEED_EXPLICIT_DECISION`:**
Funds remain quarantined. Manual review is required in Ripple Custody (see below).

## Handle "no data" scenarios

When an incoming transfer arrives but the originating VASP has not provided Travel Rule data, the transfer may enter `NEED_EXPLICIT_DECISION` status, requiring manual handling.

### Manual approval or rejection

After manual review in Ripple Custody, the compliance team can approve or reject the transfer:

- **Approved**: Funds are released and Notabene is notified after on-chain settlement.
- **Rejected**: Funds remain quarantined and Notabene is notified of rejection.


## Next steps

- [Send without PII](/products/custody/compliance/travel-rule/outgoing-no-pii) — Outgoing transfers when PII is not required.
- [Send with PII](/products/custody/compliance/travel-rule/outgoing-with-pii) — Outgoing transfers when PII is required.