<!-- Source: https://docs.infraio.xyz/vi/payment-links/overview -->
<!-- Last updated: 2026-10-04 -->

# Link thanh toán — Tổng quan

**Link thanh toán** là một URL có thể chia sẻ, đưa người mua vào một
trang thanh toán dựng sẵn mà bạn đã cấu hình sẵn. Không SDK, không
tích hợp server — phát hành nó trong dashboard, chia sẻ, và cùng
webhook `payment.settled` được phát khi vốn xác nhận on-chain.

Bên dưới, một link thanh toán **chính là** một [CheckoutSession](https://docs.infraio.xyz/vi/concepts/sessions) —
"Link thanh toán" chỉ là tên gọi phía dashboard của một session không
được tạo bởi luồng SDK do người mua chủ động. Cùng webhook contract,
cùng việc ghi nhận thanh toán on-chain, cùng phí.

Use case phổ biến:

- Xuất hóa đơn cho một khách hàng đơn lẻ mà không cần code
- Trang sales nơi bạn không có cart tùy chỉnh
- Follow-up B2B: paste link vào email
- Trang tip cố định kiểu "Buy me a coffee"

## Tạo một link

Tạo payment link trong dashboard:

1. Đăng nhập vào [merchant dashboard](https://app.infraio.xyz)
2. **Payments → Payment Links → + New link**
3. Chọn một trong hai path:
   - **New order** — nhập line items, currency, thông tin khách hàng,
     và metadata tùy chọn. Dashboard tạo Order và link thanh toán trong
     cùng một lệnh gọi.
   - **Existing order** — chọn một order `PENDING` (ví dụ
     người mua đã từ bỏ link trước đó). Phát hành lại một link mới
     đứng sau cùng order, để lịch sử order giữ nguyên.
   - Ở **New order**, có thể chuyển sang **Chỉ số tiền** để thu một số tiền cố định mà không cần liệt kê sản phẩm.
4. Save → dashboard hiển thị URL `https://checkout.infraio.xyz/cst_…`
   với nút copy và download QR code. Link test-mode dùng
   `checkout-dev.infraio.xyz` để môi trường được mã hóa trong hostname.

> **Note:**
>
> Mỗi link thanh toán hiện tại là single-use: khi người mua trả tiền,
> session là `COMPLETED`. Nếu một session hết hạn trước khi thanh
> toán (TTL mặc định 30 phút), mở trang chi tiết order và bấm
> **Re-create link** để phát hành một link mới cho cùng order.

## Người mua thấy gì

1. Họ vào `checkout.infraio.xyz/<session_key>` — cùng UI checkout do
   hệ thống host mà bạn sẽ nhận được từ session do SDK phát hành.
2. Họ đi qua luồng chuẩn: chọn asset → gửi tiền → chờ confirmation
   được mô tả trong [Checkout — Tổng quan](https://docs.infraio.xyz/vi/checkout/overview).
3. `payment.settled` được phát đến webhook của bạn với order, intent,
   receipt, tx hash on-chain, và số confirmation — cùng payload như
   bất kỳ thanh toán đã settle nào khác. Xem [Webhooks](https://docs.infraio.xyz/vi/webhooks/overview)
   để biết schema.

## Dashboard cho bạn những gì

Link thanh toán hiện đi kèm:

- **List view** — mọi link bạn đã phát hành, cursor-paginated, với
  trạng thái, số tiền, số order cha, khách hàng, expiry, và mở bằng
  một cú click đến URL người mua.
- **Filters** — trạng thái (`ACTIVE` / `COMPLETED` / `EXPIRED` /
  `CANCELED`), khoảng ngày, và tìm kiếm tự do trên số order, tên
  khách hàng, email, hoặc external ref.
- **CSV export** — một cú click, tôn trọng filter hiện tại.
- **KPI strip** — đếm theo trạng thái cho môi trường hiện tại
  (`live` hoặc `test`), khớp với những gì bảng đang hiển thị.
- **Trang chi tiết** — tóm tắt order, lịch sử session (mỗi lần thử
  cho order này), lịch sử on-chain với link đến block explorer, và
  hành động **Re-create link** cho các session đã hết hạn trước khi
  thanh toán.

## Hạn chế hiện tại

- **Không có API programmatic** — link phải được tạo trong dashboard.
  Bạn có thể tạo session single-use tương đương qua
  `POST /b2b/v1/checkout-sessions/quick` (xem [Tham chiếu API](https://docs.infraio.xyz/vi/api-reference)),
  nhưng link có thể chia sẻ chỉ được tạo trong dashboard.
- **Không xác thực theo từng người mua** — bất kỳ ai có URL đều có thể
  trả. Mỗi link là single-use, điều này giới hạn rủi ro đó.
- **Branding là toàn cục** — link dùng logo, brand colour, và border
  radius theo merchant từ **Settings → Branding**. Override branding
  theo từng link không khả dụng.

## Xem thêm

- [Khái niệm → Sessions](https://docs.infraio.xyz/vi/concepts/sessions) — điều gì đang xảy ra
  ở lớp session và intent trong khi một người mua đang thanh toán.
- [Checkout → Tổng quan](https://docs.infraio.xyz/vi/checkout/overview) — người mua thực sự
  thấy gì.
- [Webhooks → Tổng quan](https://docs.infraio.xyz/vi/webhooks/overview) — event `payment.settled`
  mà server của bạn phản ứng.
