Payment links
Take a payment without writing any code. Create a link in the dashboard, send it to your customer, and they pay from any Fonepay-enabled bank or wallet app — no login, no app to install, nothing for you to host.
Two shapes
They are the same object underneath. The only difference is whether the amount is already known when the code is made.
| Kind | What it is | Amount |
|---|---|---|
| Link | A URL you send to one customer — an invoice, an order, a booking. | Usually fixed |
| Counter QR | One printed code that lives on the till. Print it once and leave it there. | The payer types it |
How a payment happens
- Open. The customer opens the link, or scans the printed code with any camera.
- Amount. If the link has one, it is shown and cannot be changed. If not, they type it.
- QR. Qora mints a Fonepay dynamic QR on your own merchant account, exactly as the API does. The page draws it and waits.
- Scanned. The moment their banking app opens the code, the page says so.
- Verified. When Fonepay confirms, the payer sees a receipt and you get a
payment.succeededwebhook like any other payment.
A payment taken this way is an ordinary payment. It appears in the dashboard, in
GET /v1/payments, and in your webhooks. Its source is
link or counter rather than api, and its
metadata.payment_link holds the link's id.
Fetching them over the API
Payments from a link are not a separate resource — filter the ordinary payments list.
curl "https://qora.laayo.com.np/v1/payments?source=counter" \
-H "Authorization: Bearer sk_live_..."
What the money does
The same thing it always does. The QR is minted on your Fonepay merchant account, so Fonepay settles into your own bank on their normal cycle. Qora is never in the path of that money, and a payment link changes nothing about that — it only changes who is allowed to start the payment.
Limits worth knowing
- A link belongs to one mode. A test link can never mint a live payment, and switching the dashboard between test and live does not repoint a link you have already sent.
- A single-use link stops after one successful payment. Right for an invoice, wrong for a counter QR — which is why a counter QR cannot be made single-use.
- Open-amount links accept between रु 10.00 and रु 999,999.99, and you can narrow that further.
- Turning a link off stops it immediately. A link that has taken payments can be turned off but not deleted, so your records keep pointing at something real.
- The public page is rate limited per visitor and per link. A busy counter is fine; a script hammering your link is not.
The URL is the credential. Anyone holding a link can start a payment on your account. That is the point of it — but treat a link the way you would treat a card terminal, and turn one off if it ends up somewhere you did not intend.