Skip to main content

Pay by Link

Pay by link feature allows starting the payment dialog directly via link or scanning of QR code. In this scenario the payment dialog is displayed in full-screen mode.

Prerequisites

  • Enable payment service
  • Create a Point of sale and copy the Point of sale ID

Possible Flows

Direct

  • Tenant creates a new link
  • Tenant displays the link somewhere
  • Customer clicks on link
  • Customer is shown the "classic" dialog in full-screen mode

Email

  • Tenant triggers send of email to customer
  • Customer receives email where he can either
  • Click on link (button) in email
  • Scan QR code displayed in email
  • Customer is shown the "classic" dialog in full-screen mode

SMS

  • Tenant triggers send of SMS to customer
  • Customer receives SMS with link
  • Customer clicks on link and is shown the "classic" dialog in full-screen mode

Each link holds following data:

  • Enabled / Disabled - link can be manually disabled if needed
  • Link name - will be used in payment dialog as name
  • Link description - will be used in payment dialog as description
  • Link type - payment for a payment flow, accountInfo for an account info flow
  • Point of sale - link to point of sale
  • Amount (fixed)
  • Link reuse - single / multiple
  • Link expiration - never or until
  • Locale - to be used in email, SMS and dialog
  • Country - preselect country for dialog
  • Meta data - meta-data to be included in payment

A link can be in one of the following states:

StateDescription
enabledLink is active and can be used by customers
disabledLink has been manually disabled via API or portal
lockedSingle-use link payment is in progress. Link is temporarily locked from use
consumedSingle-use link that was successfully paid — permanently blocked from further use
expiredLink has passed its expires_on date

The URL for a pay-by-link follows this format:

{baseUrl}/{locale}/pay-by-link/{linkId}

A QR code for the link can be retrieved directly via the Service API by requesting GET /service/payments/link/{linkId} with the Accept: image/png header. This QR code is also included automatically in email notifications.

Expiration and reuse

If needed the Pay by link can have an expiration date (is valid until a day). Additionally, we can define if a link is single or multiple use.

A single-use link is designed for scenarios like invoice payments where a double payment must be prevented. The lifecycle works as follows:

  1. Customer opens the link — the link is temporarily locked to prevent concurrent payment attempts
  2. Payment succeeds → link transitions to consumed state permanently; any further attempt to use the link is rejected
  3. Payment fails or is abandoned → the lock is released and the link becomes available again for a retry

This means a failed or abandoned payment does not consume the link — the customer can try again.

note

Once a single-use link reaches the consumed state it cannot be re-enabled.

Multiple-use links remain enabled after each successful payment and can be reused indefinitely, subject to the expiration date.

Meta data

Additionally, to hard coded metadata provided in the link data, tenant can inject metadata on the fly via query string parameters.

This can be done either:

  • adding query string parameters to the existing / generated link
  • calling GET link service API call with metadata query string parameters

Example:

https://.../{linkId}?data[customer_id]=123&data[order_id]=456

This approach enables for instance a single link (like a top-up link) to be used multiple times and the customer data is injected dynamically.

https://.../{linkId}?data[customer_id]={customer_id}

Tenant can send out link(s) via Email or SMS to his end customers. This can be either done manually in Fliqa portal or via Service API call.

Pay by link email

Billing

Each send out email / SMS is charged according to the billing settings.

Service API

Links are managed via the Service API which supports:

  • Creating, updating, enabling and disabling links
  • Sending email / SMS notifications to customers
  • Retrieving link status and notification delivery status