# Cross-Chain Payments (Merchant)

> Quick version: nothing changes for you. Customers can pay you with any token on any chain, you still receive exactly what you asked for, on the chain you asked for.

## What this looks like in your dashboard

When a payment is created and the customer clicks "Pay with another token / chain" on the payment page, Makapay handles the cross-chain swap transparently. From your perspective:

* **Payment link**: identical to today.
* **Recipient address**: identical (the existing CREATE2 wallet).
* **Amount received**: exactly what you asked for, in the token and on the chain you specified.
* **Fees**: identical (1% + $0.10 deducted on settlement).
* **Gas Tank**: identical (covers destination-chain gas as today).
* **Webhooks**: fire at the same "payment received" point — when settlement completes after block confirmations.

The only visible change: a small blue banner appears on the customer payment page (`/pay/[id]`) when a cross-chain payment is in flight. It says **"Cross-chain payment in flight — payment expiry has been automatically extended by 15 minutes."** This explains why the original countdown timer might have hit zero but the payment is still active.

## When does the merchant cancel button get blocked?

If you try to cancel a payment that has an active cross-chain swap (any of: customer signed and broadcast, deBridge order in `Created`, solver `Fulfilled` but not yet swept), you'll get an error:

> Cannot cancel — a cross-chain swap is in flight (status: Created). Wait for the swap to fulfil or be auto-cancelled.

This protects the customer's locked funds. Two outcomes will unblock the cancel button:

1. **Swap fulfils**: the payment completes normally. Funds reach you. No cancel needed.
2. **Swap auto-cancels**: after 5 minutes in `Created` state, Makapay automatically cancels the deBridge order. The customer gets their source funds refunded; the cancel button on your side becomes available again.

You don't need to do anything during this window. The lockout is purely about avoiding orphaned funds.

## Compatibility

| Feature                     | Same-chain payment | Cross-chain via deBridge                      |
| --------------------------- | ------------------ | --------------------------------------------- |
| Payment link UI             | identical          | identical                                     |
| Recipient address (CREATE2) | identical          | identical                                     |
| Receive token               | merchant choice    | merchant choice (unchanged)                   |
| Receive chain               | EVM or MakaChain   | EVM only (deBridge doesn't support MakaChain) |
| Fee model                   | 1% + $0.10         | 1% + $0.10 (no extra)                         |
| Gas Tank deduction          | yes                | yes                                           |
| Webhook timing              | post-settlement    | post-settlement (same)                        |
| Merchant action required    | none               | none                                          |
| POS terminal flow           | yes                | not in Phase 1                                |

If a payment is on **MakaChain**, the cross-chain swap option is not surfaced (deBridge doesn't support MakaChain). Customers will see only the standard same-chain payment flow.

If a payment is on **POS terminal**, the cross-chain option is not surfaced (timing is too slow for cashier UX). Customers see only the standard QR-scan flow.

## What the customer sees

See [Cross-Chain Payments (Customer Guide)](/features/cross-chain-payments.md) for the full customer-facing UI walkthrough.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.makapay.io/features/cross-chain-payments-merchant.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
