# Direct Link pay-in: crypto wallet address

Generate a crypto wallet address for the customer to send funds to, with no Omno UI. Confirmation is asynchronous.

## Steps

### 1. Create the pay-in

`POST /v3/public/payin` with a `directRouteId`, as in [Pay-in: APM](/direct-link/payin-apm).

### 2. Generate the wallet address

Start processing with `POST /v3/public/payin/{payinId}/process/direct-link`. The response carries the destination the customer sends funds to. The exact response field depends on your crypto provider — your Omno integration team confirms it during integration.

### 3. Customer sends funds

The customer sends crypto to the generated address. Confirmation is asynchronous (network confirmations).

### 4. Final status

The final status arrives via [webhook](/guides/concepts/webhooks); verify with a GET on the transaction.

## Failure states

- **Timeout / no funds received** — `TIMEOUT`; the customer never sent funds or confirmations didn't arrive in time.
- **Pending resolving asynchronously** — `PENDING` until network confirmation; final status via webhook.
- **PSP failure** — `FAILED`.


## Build it →

- [Pay-in: APM](/direct-link/payin-apm) · [Payout](/direct-link/payout) · [Other APIs → Pay-ins](/apis)