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

# Payment links

> Share a URL that collects a payment without your own checkout page.

A payment link is a hosted start page. Create it once, share the URL, and the customer pays through Vestrapay checkout.

## Create a link

From the merchant dashboard: Payments → Payment links. The create API uses a merchant session, not the secret key:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST https://server.staging.vestrapay.app/v1/merchants/payment-links \
  -H "Authorization: Bearer MERCHANT_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Pay for Order 123",
    "amount": "250.00",
    "currency": "NGN",
    "channels": ["card", "bank_transfer"],
    "redirectUrl": "https://yourapp.com/thank-you",
    "feeBearer": "customer"
  }'
```

Send customers to `data.paymentLinkUrl`. Omit `amount` for a customer-enters-amount link.

`metadata` on a link is a form schema, not the opaque object on initialize.

## What the customer does

1. Opens the link.
2. Fills any prompts you configured.
3. We initialize checkout: `POST /v1/merchants/payment-links/:slug/pay`.
4. They pay on hosted checkout.
5. Confirm with [webhooks](/payments/webhooks) and [verify](/payments/verify).

Public display: `GET /v1/merchants/payment-links/:slug/display`.
