Aller au contenu principal

Payment Links

Payment links let you collect payments without a backend system or e-commerce platform. You create a link in your space, share the URL or QR code, and the customer completes the payment on a hosted payment page.

There are two ways to work with them:

  • Configure everything in your space — currency, payment methods, validity and the amount are fixed in the link itself. Share the URL or QR code and you are done.
  • Pass details in from your own form — a lightweight HTML form on your website supplies billing addresses, line items or amounts per payment. No server-side logic required.

Common use cases​

  • Static product pages — for example flash sales or landing pages
  • Donation pages — with dynamic or fixed amounts
  • Embedded forms on websites without backend logic
  • Simplified payment processes for individual purchases
info

If you need to manage reminders or send payment links via email automatically, consider using Charge Flows instead.

  1. Open your space settings.
  2. Click Features and enable the Payment Link toggle.
  3. Save the changes.
  1. Open the payment link list in your space.
  2. Click Create payment link.
  3. Enter a name.
  4. Configure the options below and click Create.
OptionWhat it controls
CurrencyThe currency the payment is collected in.
LanguageThe language of the payment page.
Protection modeWhether a key is required to access the payment link.
Allowed payment method configurationsWhich payment methods the customer can choose from.
Available from / untilThe date and time window in which the link is valid.
Maximal number of transactionsHow many payments may be made through the link.
Billing / shipping address handling modeWhether addresses are requested, prefilled or skipped.
info

Only the name is mandatory — every other option is optional. Defining as much as possible in the link is nevertheless a good idea: values that are not fixed in the link can be supplied (and therefore changed) in the request.

After creating the link, you are shown:

  1. A public URL that you can share via email, social media and similar channels.
  2. A QR code for print or in-person use.

Passing parameters from your own form​

Instead of fixing everything in the link, you can submit payment details with the request. Payment links accept GET or POST parameters — we recommend POST — that include billing addresses, amounts or line items.

Quick setup checklist​

  1. Create a payment link under Space > Payment Links > Create. Give the link a name and optionally predefine values such as currency or line items to prevent tampering.
  2. Embed the link — use the generated URL in a POST form on your website and pass additional parameters, such as the billing address, dynamically if needed.
  3. Secure and validate — avoid GET requests to prevent URL size issues, use address validation for a better experience, and predefine as much as possible in the link to restrict what the buyer can modify.

Example HTML form​

<form action="<< put here payment link url >>" method="POST">

<input type="text" name="billingAddress[givenName]" placeholder="Given Name" />
<input type="text" name="billingAddress[familyName]" placeholder="Family Name" />
<input type="text" name="billingAddress[street]" placeholder="Street" />
<input type="text" name="billingAddress[postcode]" placeholder="Postcode" />
<input type="text" name="billingAddress[city]" placeholder="City Name" />
<input type="text" name="billingAddress[country]" placeholder="Country Code" />

<input type="hidden" name="lineItems[0][uniqueId]" value="test" />
<input type="hidden" name="lineItems[0][sku]" value="test" />
<input type="hidden" name="lineItems[0][name]" value="Test" />
<input type="hidden" name="lineItems[0][amountIncludingTax]" value="10.87" />
<input type="hidden" name="lineItems[0][type]" value="PRODUCT" />
<input type="hidden" name="lineItems[0][quantity]" value="1" />

<input type="hidden" name="metaData[additionalData]" value="Further data you want to store along the transaction." />

<input type="hidden" name="currency" value="CHF" />

<!-- Further parameters as you need. -->

<input type="submit" value="Pay" />
</form>
info

Use the POST method to avoid length restrictions and to handle parameters more securely.

Parameters​

Payment links accept the same parameters used in our transaction creation API — see Web Service API. Parameters must be submitted in UTF-8 and follow the key-value format supported by HTML forms.

Billing and shipping address​

Use billingAddress[...] and shippingAddress[...] to provide:

  • country (ISO 3166-1 alpha-2, required)
  • givenName
  • familyName
  • street
  • postcode
  • city

Customer information​

  • customerEmailAddress — used to send confirmation emails.
attention

customerId is ignored: it is not supported for payment links, and neither are one-click payments (see below).

Line items​

Minimum required per line item:

  • lineItems[0][amountIncludingTax]
  • lineItems[0][name]
  • lineItems[0][quantity]
  • lineItems[0][type] — for example PRODUCT, SHIPPING or DISCOUNT
  • lineItems[0][uniqueId]

Additional fields such as taxes, attributes or SKUs are supported.

attention

If you pass line items in the form request instead of predefining them in the payment link, they can be modified by the buyer. The same applies to the merchant reference.

Currency​

  • currency — for example CHF, EUR or USD.

If the currency is not defined in the payment link, you must include it in the request.

Redirect URLs​

  • successUrl — where the customer is redirected after a successful payment.
  • failedUrl — where the customer is redirected after a failed payment.
info

Use absolute URLs such as https://example.com/thank-you, not relative ones.

Merchant reference​

  • merchantReference — shown in the transaction overview and used for searches.

Meta data​

  • metaData[key] = value — stores additional key-value data along the transaction.

Example:

<input type="hidden" name="metaData[comment]" value="Order from newsletter campaign" />

Availability window​

  • availableFrom — for example 2025-01-01T00:00:00Z
  • availableUntil — for example 2025-01-07T23:59:59Z
info

The availability window is only enforceable if it is configured directly in the payment link, not if it is passed through the form.

Validation best practices​

  • Use client-side address validation to improve the experience and reduce errors.
  • We always validate form data server-side before processing.
  • Errors are displayed on a fallback error page, which is not ideal for the user flow — catching problems in your own form first gives the better experience.

Terms and conditions​

If required, add a checkbox to your form so the customer confirms your terms and conditions.

For a stronger guarantee, use the Terms & Conditions add-on, which enforces acceptance on the payment page itself.

Why one-click payments are not supported​

Payment links do not support one-click payments, because:

  • we do not authenticate users, and
  • payment credentials cannot be reused securely without authentication.

Even if one-click is enabled on a payment method, it is ignored when the payment is made through a payment link. See Tokenization for the integrations where one-click is available.