# LanaPay POS

> Server-to-server payment API for physical tills (pos.lanapays.us). The POS
> rings up a sale in fiat (EUR, GBP or USD), scans the customer's Lana card,
> and one API call settles it — in LANA or in cash — with a synchronous answer
> while the customer is still at the counter. The scanned card is passed
> through as one opaque value and interpreted server-side, so POS and ERP
> integrations never change when new currencies arrive.

LanaPay deducts nothing from a sale. The merchant receives the full invoice
**plus a reward on top of it**: 2% as standard, 5% for merchants enrolled in
Lana8Wonder, up to 20% for merchants in the Abundance model. The reward is
funded by the investor financing the purchase — never by the merchant and
never by the customer, who pays exactly the invoice total. There is no setup
fee, no monthly fee, and nothing at all is paid or charged on failed or
expired sales.

The till relies on the synchronous pay response — the answer IS the outcome;
webhooks exist only for the back office / ERP behind it.

## Docs

- [Full documentation (plain markdown)](https://pos.lanapays.us/llms-full.txt): the sale lifecycle, both payment rails, the reward, the complete error table with cashier guidance, the security obligations and the go-live checklist. Start here.
- [OpenAPI 3.1 specification](https://pos.lanapays.us/openapi.json): machine-readable REST contract, including the outgoing webhook events.
- [Documentation, human-readable](https://pos.lanapays.us/docs): the same content as a web page, English and Slovene.
- [Full documentation in Slovene](https://pos.lanapays.us/llms-full.sl.txt): Slovene translation of the full documentation.

## Product

- [Landing page content (markdown)](https://pos.lanapays.us/landing.md): what LanaPay POS is, the three moments at the till, what it offers POS vendors, and the reward tiers.
- [Live configuration](https://pos.lanapays.us/api/v1/public/config): current currencies, exchange rates and reward percentages, as JSON. No authentication, open CORS.
- [Merchant dashboard](https://pos.lanapays.us/login): sign in with a LANA wallet key to enroll a shop and manage API keys, webhooks and sales.
- [Online shops](https://pay.lanapays.us): selling on the web instead of at a counter? pay.lanapays.us is the hosted checkout for e-commerce.

## Notes for AI agents

- The scanned customer QR is a **private key**. Pass it through verbatim in `customer.qr` and nowhere else — never log it, store it, display it, or include it in generated code paths that persist request bodies. Any integration that writes the scan to a receipt journal, database, or log file is wrong and unsafe.
- A `402 CUSTOMER_LANA_FAILED` response means **no money moved — the goods stay behind the counter**. It carries `do_not_hand_over_goods: true`. Do not confuse it with a timeout or 5xx, where the outcome is unknown and recovery-by-order_id applies instead.
- `order_id` is the idempotency key. After any timeout: never re-tender — `GET /api/v1/sales?order_id=…` first; `paid` → fulfil, `pending` → repeat the same pay call, absent → re-create.
- Cash responses may carry `payment.amount_adjusted`. The till must display and collect the **adjusted** amount; `payment.amount_charged` is always the authoritative figure to print.
- Amounts are strings with at most two decimals, e.g. `"19.90"`.
- There is no sandbox or test mode. Creating, reading and cancelling sales moves no money and is safe to exercise; the pay call is always real — test it last, small, with a real customer card.
