# Merchant guide

AIPAY turns the same wallet into a point of sale, a payment-link generator and an order tracker. Everything is non-custodial: **payments go straight to the receiving address you configure**. AIPAY never holds your funds and takes no cut today.

> **Not available yet:** receiving merchant payments *on MSGChain via an AIPAY on-chain contract* (the developer gas-share path) is **not open**. This page covers only the local, working EVM + Solana merchant flow. See [../llms.txt](../llms.txt).

## 1. Become a merchant

AIPAY has no separate merchant signup. The only difference between a user and a merchant is a profile with a shop name and a receiving address.

1. Make sure a wallet exists (see [getting-started.md](getting-started.md)); the merchant tools use your wallet.
2. Open **https://aipay.im/en/merchant/settings**.
3. Set:
   - **Shop name** — shown to customers.
   - **Receiving address** — the address that will be paid. Use an address you control, on the chain(s) you want to accept.
4. Save. The merchant dashboard, POS and orders are now usable.

Store your shop settings, products and orders locally — include them in your [backup](backup.md).

## 2. Take a payment at the counter (POS)

1. Open **https://aipay.im/en/merchant/pos**.
2. Choose the **chain** and **asset** (for example Base + USDC, or Solana + USDC). If reached from a product, the amount and memo are filled in automatically.
3. Enter the amount.
4. AIPAY creates a payment request with a unique **reference** and shows a **QR code**:
   - EVM chains use an **EIP-681** payment URI (works with wallet apps that understand it).
   - Solana uses a **Solana Pay** URI.
5. The customer pays. AIPAY watches the chain for a transfer to your address carrying that reference and **confirms the order automatically** once the chain reaches the expected confirmation depth.
6. If automatic detection is not possible (for example a transfer sent from an unusual contract), paste the **transaction hash** into the manual-confirm field to verify and confirm the order explicitly.

Payments are labelled with a reference so two identical amounts from two customers remain distinguishable.

## 3. Share a payment link

For online / remote customers:

1. Open **https://aipay.im/en/merchant/dashboard**.
2. Choose **Create payment link** and fill in:
   - **Amount**
   - **Currency** (USDC, SOL, ETH or USDT)
   - **Description** (optional, e.g. invoice number)
3. AIPAY produces a link that opens the **checkout page** — a URL of the form `https://aipay.im/<locale>/pay?intent=...` containing the amount, asset and a unique reference.
4. Copy it and send it to the customer (chat, email, invoice, QR code).

On the checkout page the customer can:

- pay directly if their device has an AIPAY wallet with a matching key (unlock → sign → broadcast), or
- pay from **any other wallet** by scanning the QR code / copying the address, then pasting the transaction hash; AIPAY verifies the payment on-chain with the reference and confirms the order.

Because the link carries a reference, AIPAY can match the payment back to the order without any account.

## 4. Track orders

- **https://aipay.im/en/merchant/orders** — every payment request with its status.
- A background watcher confirms pending orders by itself: it polls the chains for the reference and updates the order when the payment appears. Pending orders expire (about **15 minutes on EVM**, up to **24 hours on Solana**) to avoid watching stale sales forever.
- Confirmed orders carry the transaction hash so you can open the block explorer.
- **https://aipay.im/en/merchant/analytics** — simple sales overview for the local data.

Since orders live in this browser, keep a backup and do not rely on clearing site data.

## 5. Products and quick charge

- **https://aipay.im/en/merchant/products** — maintain a small catalogue (name, price, currency).
- Tap **Charge** on a product to open the POS with the amount, currency and memo pre-filled.

## 6. Practical rules

- **Do not change your receiving address casually.** Older payment links and QR codes point at the address captured when they were created.
- **Match the chain.** Accept on the chains you can actually use; a customer paying on a chain you did not intend may be unrecoverable. See [chains.md](chains.md).
- **Keep a little native coin** in the receiving wallet for any outgoing action (refunds, moves).
- **Confirm before releasing goods.** On Ethereum and Polygon the confirmation wait can be minutes; Layer 2s and Solana are much faster.
- **Test with a small amount** on every new chain or asset before your first real sale.

## What is not enabled

- MSG / MSGChain merchant payouts via an AIPAY on-chain contract — not open.
- Fiat on-ramp, NFT gallery and EVM swaps — disabled (they do not affect POS, links or orders).
