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

# Create Payment Link

> Create a hosted checkout after the account's payment link wallet is ready

Creates a hosted checkout for one token on one network. Funds settle into the account's payment link wallet for that currency, so [set up the wallet](/fx/api-reference/payment-link-wallets/create-wallet) first and wait for `ready`.

Requires `payins:write` and a UUID in the `Idempotency-Key` header.

## Request

```json theme={null}
{
  "currency": "USDT",
  "network": "ethereum",
  "amount": "2.1",
  "expiry_minutes": 30,
  "reference": "order-123",
  "payer": {
    "entity_type": "INDIVIDUAL",
    "relationship_type": "THIRD_PARTY",
    "country_code": "GB",
    "first_name": "Alex",
    "last_name": "Example",
    "date_of_birth": "1990-01-01"
  }
}
```

Hop selects the prepared wallet from the **account and currency**; do not pass a wallet ID. The network must be in the wallet's latest `available_networks`. `amount` is positive with up to six decimal places and must meet the applicable payment minimum. `expiry_minutes` defaults to 30 and accepts 1–2880. Optional `return_url` must use HTTPS; `reference` accepts up to 255 characters.

Use the payer's actual identity. Individuals require `first_name`, `last_name` and `date_of_birth`; companies use `entity_type: COMPANY` with `legal_name` and `registration_number`. `relationship_type` accepts `SELF_OWNED` or `THIRD_PARTY`.

## Response

HTTP `201` returns a new `payment_request` with an ID beginning `preq_`. An idempotent replay returns HTTP `200` with the original request.

```json theme={null}
{
  "object": "payment_request",
  "id": "preq_4k2m9x7v1q8n3r6t0p5cahbz",
  "account_id": "acct_y7mxdf48446z91cqfdx6vym3",
  "currency": "USDT",
  "network": "ethereum",
  "amount": "2.1",
  "reference": "order-123",
  "status": "pending",
  "redirect_url": "https://checkout.example.com/pay/4k2m9x7v",
  "expires_at": "2026-10-21T06:30:00Z",
  "instructions": {
    "address": "0x0954d452b7c0e5917059bcfff6695b42330d2b5c",
    "tag": null,
    "network": "ETHEREUM",
    "protocol": "ERC20",
    "uri": "ethereum:0x0954d452b7c0e5917059bcfff6695b42330d2b5c",
    "alternatives": []
  },
  "received_amount": null,
  "settled_amount": null,
  "payin_id": null,
  "created": "2026-10-21T06:00:00Z",
  "updated": "2026-10-21T06:00:00Z",
  "created_by": "ak_9admlg0248ynbfm2ci1qicry",
  "updated_by": "ak_9admlg0248ynbfm2ci1qicry"
}
```

Direct the payer to `redirect_url`, or have them send only the requested token on the specified network to the address in `instructions`, before `expires_at`. `instructions` mirrors the checkout provider's deposit details for that token and network.

If the wallet is missing or not ready, the request returns **`409 PAYMENT_LINK_WALLET_NOT_READY`** (`details.payment_link_wallet_id` names a pending wallet). Finish setup, then retry with the same body and idempotency key. Creating a payment request never provisions its wallet implicitly, and an existing checkout replay stays readable without repeating setup.

Track receipt and settlement with [Get Payment Link](/fx/api-reference/payment-link-wallets/get-payment-link). `payin.received` and the account balances confirm the customer credit.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.