Payment Orchestrator
Payment Links
Overview

Payment Links

Payment Links let you send your buyer an address and take the payment on a page hosted by Lunixi:

https://pay.lunixi.com/7KQ2M9XAPT

You create the link from your server through the API (the surface documented in this section); you can also do the same from the dashboard. When the buyer opens the link, they enter the amount, quantity or items and the details you ask for; at the payment step they see the same Lunixi payment form used by the Checkout Form integration. Card fields, installments, 3D Secure and the form settings in your dashboard apply to link payments unchanged.

Payment Links are not a separate product: they are part of your PAYMENT_GATEWAY product. There is no separate fee for links; payments taken through a link are subject to the normal transaction fee.

All amounts are integers in minor units (kuruş): "amountMinor": 150000 = ₺1,500.00. This applies to every *Minor field in request bodies. In webhook data, amounts are returned as minor-unit strings.

When to use it

  • A personal payment request — an invoice, a service fee, a deposit. A single-use, fixed-amount link that closes once paid.
  • Selling a product or ticket — a multi-use link where the buyer picks a quantity and you set a total capacity.
  • Donations or pay-what-you-want — the buyer enters the amount; you set the minimum and the suggested amount buttons.
  • Itemized sales — options such as sizes, sessions or packages; the total is calculated on the server and each item can have its own stock.
  • In-person collection — print the link's QR code or show it on a screen.

Link types

A link's type is defined by two fields. Every combination is valid; usage, amountMode and currency cannot be changed after creation.

usageMeaning
SINGLE_USEAccepts one successful payment; the link becomes COMPLETED once paid. Only one buyer can be at the payment step at a time — while a payment is in progress, a second buyer sees the link as busy.
MULTI_USEAccepts many successful payments. The optional capacity caps the total number of units; when it is reached the link stays open but shows as sold out, and you can raise the capacity.
amountModeMeaning
FIXEDYou set the amount (amountMinor). On a multi-use link you can let the buyer choose a quantity (quantityEnabled).
OPENThe buyer enters the amount. A minimum (minAmountMinor) is required; a maximum and up to 6 suggested amounts are optional.
ITEMIZEDThe buyer picks quantities from 1–50 items. The total is calculated on the server; you set a price and stock per item.
⚠️

3D Secure policy: on OPEN-amount and MULTI_USE links, 3D Secure is always required and cannot be turned off. On single-use, fixed-amount links, the 3D policy in your form settings applies; send checkout.requireThreeDs: true to require it on that link too.

How it works

Create the link (server)

POST /api/v1/payments/links — a request signed with your API key, plus an Idempotency-Key. The response returns the link's id, its 10-character shortCode and the url you share. → Creating Links

Share it

Send the address through your own channel (email, messaging app, invoice), download its QR code with GET /:id/qr, or have Lunixi send it with POST /:id/send. → Managing Links

The buyer pays

The buyer fills in their details on the pay.lunixi.com page and continues to the Lunixi payment form with Pay. If 3D Secure is required, they authenticate with their bank. → Payment Page

Receive the outcome by webhook

When the payment is captured, your endpoint receives payment.captured; the payload carries paymentLinkId and paymentLinkCode. Fulfil the order on this event. A single-use link becomes COMPLETED once the payment is captured and payment.link.completed is published. → Webhooks

Lifecycle

Payment link lifecycleA link is created as ACTIVE. It moves between ACTIVE and PAUSED with pause and resume. An open link becomes COMPLETED when a single-use link is paid, EXPIRED when its expiry passes, and DEACTIVATED when the merchant deactivates it. Lunixi can move a link in any state to TAKEN_DOWN; when reverted, the link returns to its previous state.OPENENDED — NO WAY BACKACTIVEPAUSEDpauseresumesingle-use link paidexpiresAt passeddeactivateCOMPLETEDEXPIREDDEACTIVATEDtaken down by Lunixi (from any state)TAKEN_DOWNif reverted, returns to previous stateLEGENDTAKES PAYMENTSLUNIXI ONLY
You can move between the open states; there is no way back from an ended state — create a new link to take another payment. Only Lunixi moves a link to TAKEN_DOWN, and only Lunixi can revert it.
stateMeaningTakes payments
ACTIVEThe link is open. If startsAt has not arrived yet, the page opens but a payment cannot be started.Yes
PAUSEDYou paused it. The page opens but no payment is taken; reopen it with resume.No
COMPLETEDA single-use link was paid. It does not reopen even if the payment is later refunded.No
EXPIREDexpiresAt has passed.No
DEACTIVATEDYou deactivated it.No
TAKEN_DOWNLunixi took the link down (e.g. a phishing report or brand impersonation). You cannot change or send this link.No

What the buyer sees

  • Your organization's legal name as the primary identity at the top of the page, with your brand (logo, colors, display name) as secondary.
  • The link title and description, the amount or amount options, the buyer fields and custom fields you ask for.
  • On a personal link, the buyer's name and contact details appear masked only (A*** Y***). You can add email-based access verification to the link.
  • An unknown address shows a 404 page; an expired, paid, deactivated or taken-down link shows a 410 page.

Details: Payment Page.

Security and privacy

  • A link code is not a secret. Anyone who has the link can open the page. That is why the page shows no buyer personal data: the buyer details you prefill (prefill) are written to the payment record on the server and are not sent to the browser. The only exception is a link with access verification: a buyer who enters the code sent to their email sees these details in the form. A national ID number never appears on the page.
  • Amount, currency and merchant come from the link only. The buyer cannot change them; an amount from the browser is accepted only on an OPEN link and within your limits.
  • A link never turns into another link. Codes are never reused: the address of a deactivated or expired link will not open another payment, even years later.
  • Report this link. A buyer can report a suspicious link to Lunixi from the page; reports are reviewed by Lunixi.

Test environment

  • The base URL is the same; your API key decides the environment. Links created with your mk_test_sk_… key are in the TEST environment: their page carries a fixed TEST banner stating that no payment is taken, and no real money moves. At the payment step you use the TestBank scenarios on the Testing page.
  • A key only sees links in its own environment: a request with a test key for a live link returns 404.
  • In TEST, messages Lunixi sends (link sending, reminders, receipts, payment notifications, access verification codes) go only to the email addresses of your organization's verified members; other recipients are recorded as FAILED / test_mode_recipient_not_allowed. No SMS is sent in TEST.

Limits

  • One currency per link; it must be one your account's payment providers support in that environment.
  • SplitPay (multi-card) is not available on link payments, and saved cards are not offered to the buyer.
  • There is no file-upload field for buyers. Page languages: Turkish and English.
  • The link QR code is a URL QR; it is not a TR Karekod.
  • Pre-authorized links (authorize, then capture), bulk link creation, link and item images, and an embeddable link component for your site: coming soon.

Next steps

  • Creating Links — authentication, every field, sample requests
  • Managing Links — listing, updating, pausing, sending, QR
  • Payment Page — the buyer experience, branding, access verification, receipts
  • Webhooks — payment.link.* events and the fulfilment rule