Skip to content

Development environment: content is being written, nothing points to production.

Documentation contents

Guides

Payment links

Get paid without a website: create a link, share it and follow its payments, from the dashboard or through the v3 API.

A payment link is a payment page ready to share: send it by WhatsApp, e-mail or SMS, or print its QR code. Every payer who opens it pays on the Konnect checkout with the payment methods routed to your payment account. Konnect never holds the funds: the money goes straight from the payer to your account at the provider.

In the dashboard

Menu Payment links, then New link:

  1. A title (what the payer sees, for example "Pottery workshop, Saturday 10 am") and an optional description.
  2. The amount: fixed, or open with a minimum and a maximum (donations, deposits, contributions).
  3. The usage: single (the link completes after one successful payment) or reusable, with an optional maximum number of payments.
  4. An optional expiry date (one year at most).
  5. The payment methods offered (every method of your account by default), the payer details to ask for (name, e-mail, phone: hidden, optional or required), a thank you message and a return URL.

Once the link is created, the share panel gives the link, its QR code (SVG or PNG) and WhatsApp, e-mail and SMS buttons. The link page shows its payments, the amount collected and the conversion rate. Creating and editing a link needs the payments.create permission, disabling it payments.cancel, reading links payments.view.

Through the API

With your API key (or a session and organisationId):

POST /payment-links HTTP/1.1
Host: api.konnect.network
x-api-key: <your key>
Content-Type: application/json
Idempotency-Key: 5d1f6c1e-1b7a-4b55-9a3f-0e2d1c4b5a69

{
  "title": "Pottery workshop, Saturday 10 am",
  "amountType": "fixed",
  "amount": 45000,
  "usage": "reusable",
  "maxUses": 12,
  "payerFields": { "name": "required", "email": "optional", "phone": "hidden" },
  "successMessage": "Thank you, see you on Saturday."
}

The answer holds url (the public page, https://checkout.konnect.example/l/<slug>), status and the counters paymentsCount, succeededCount and collectedAmount (in millimes).

RoutePurpose
GET /payment-linksList, filters status, account, q, paginated by cursor
GET /payment-links/{linkId}One link
PATCH /payment-links/{linkId}Change (the payment account and the slug stay)
POST /payment-links/{linkId}/disable then /enableDisable, enable again
POST /payment-links/{linkId}/duplicateCopy the settings into a new link
GET /payment-links/{linkId}/statsPayments by status, amount collected, conversion
GET /payments?link={linkId}The payments started from the link

Statuses and rules

  • active: the link takes payments; disabled: you disabled it; expired: its expiry date passed; completed: the maximum number of successful payments is reached.
  • Each payer creates a v3 payment (channel link, field paymentLinkId) valid for 30 minutes. Your payment.succeeded webhooks and the others arrive as for any payment.
  • A single-use link is held while a payer is paying: a second payer gets "payment in progress" (409 link_busy) until that payment ends or expires. Two payers at the same time never both get the last payment.
  • Raising the maximum number of payments of a completed link makes it active again. A link is never deleted, since its payments point to it: disable it instead.