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

# Payment link endpoints

> Share a no-code payment link for USDC and USDT payments, or fetch merchant info plus a live exchange rate with the public slug lookup endpoint.

Share a URL. No backend code required.

## Payment link URL

```text theme={null}
https://merchant.minisend.xyz/pay/{slug}
```

Set your slug in **Settings**. Example: `mystore` → `https://merchant.minisend.xyz/pay/mystore`.

The page shows your business name, logo, payout currency, and a live exchange rate preview. The customer enters a USDC amount ($0.01 to $10,000) and is taken to the hosted checkout.

## Merchant info endpoint

For custom payment pages or live rate previews. Public — no auth.

```text theme={null}
GET https://merchant.minisend.xyz/api/merchant/pay/info?slug={slug}
```

### Query

<ParamField query="slug" type="string" required>
  Your payment link slug.
</ParamField>

### Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://merchant.minisend.xyz/api/merchant/pay/info?slug=mystore"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(
    'https://merchant.minisend.xyz/api/merchant/pay/info?slug=mystore'
  );
  const merchant = await res.json();
  ```

  ```python Python theme={null}
  import requests

  res = requests.get(
      "https://merchant.minisend.xyz/api/merchant/pay/info",
      params={"slug": "mystore"},
  )
  merchant = res.json()
  ```
</CodeGroup>

### Response

```json theme={null}
{
  "business_name": "My Store",
  "logo_url": "https://example.com/logo.png",
  "tagline": "Coffee, brewed in Nairobi",
  "slug": "mystore",
  "payout_currency": "KES",
  "payout_method": "MOBILE",
  "indicative_rate": 129.0
}
```

<ResponseField name="business_name" type="string" required />

<ResponseField name="logo_url" type="string | null" required />

<ResponseField name="tagline" type="string | null" required>
  Shown beneath the business name.
</ResponseField>

<ResponseField name="slug" type="string" required />

<ResponseField name="payout_currency" type="string" required>
  `KES`, `NGN`, `GHS`, or `UGX`.
</ResponseField>

<ResponseField name="payout_method" type="string" required>
  `MOBILE`, `BUY_GOODS`, `PAYBILL`, or `BANK_TRANSFER`.
</ResponseField>

<ResponseField name="indicative_rate" type="number | null" required>
  Local currency per 1 USDC. Best-effort — `null` if the upstream rate provider is unreachable.
</ResponseField>

Returns `404` if the slug doesn't exist or the merchant is inactive.

## Payment link session creation

The hosted `/pay/{slug}` page calls this endpoint when the customer submits the form. Documented for transparency; you don't call it directly.

```text theme={null}
POST https://merchant.minisend.xyz/api/merchant/pay
```

### Body

| Field         | Type   | Required | Description             |
| ------------- | ------ | -------- | ----------------------- |
| `slug`        | string | Yes      | Merchant's slug         |
| `amount`      | number | Yes      | USDC, `0.01` to `10000` |
| `description` | string | No       | Optional note           |

### Response (201)

Same shape as [create checkout](/api-reference/create-checkout):

```json theme={null}
{
  "session_id": "cs_7f8a9b2c-1234-5678-abcd-ef0123456789",
  "checkout_url": "https://merchant.minisend.xyz/checkout/cs_7f8a9b2c-1234-5678-abcd-ef0123456789",
  "deposit_address": "0x1234567890abcdef1234567890abcdef12345678",
  "amount_usdc": 25.00,
  "expires_at": "2026-04-13T14:30:00.000Z"
}
```

30-minute expiry, same webhook events as API-created sessions.
