Skip to main content
Collect a bank payment without building any checkout UI. Create a payment link from your backend, share the URL over email, SMS, or any messaging channel, and Quidkey hosts the checkout page. Use it for invoicing and ad-hoc payments.
Amounts are integer minor units. 5000 = €50.00. The same format is used across the Payment API. See Amounts & Currencies.
Set test_transaction: true while developing so no real money moves. See Testing.

How It Works

You create a link with one API call and get back a payment_link_url. Share it however you like. When the buyer opens the link, Quidkey shows a hosted checkout page where they enter their details, pick their bank, and approve the payment. Your backend learns the result via webhook. Call POST /api/v1/payment-links with the payment details. You get back a payment_link_url to share, along with expires_at and the link status.
curl -X POST 'https://core.quidkey.com/api/v1/payment-links' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "order": {
      "amount": 5000,
      "currency": "EUR",
      "payment_reference": "INV2024001",
      "test_transaction": true
    }
  }'
Response
{
  "success": true,
  "data": {
    "payment_link_url": "https://core.quidkey.com/payment-link/a1b2c3d4e5f6...",
    "expires_at": "2024-04-07T12:00:00.000Z",
    "status": "active"
  }
}
Save the payment_link_url. This is the URL you’ll share with your buyer. The token in the URL is only returned once, at creation time.
Under the hood, the hosted page reads the link via the public GET /api/v1/payment-links/:token/details and completes payment with POST /api/v1/payment-links/:token/confirm. You don’t call these yourself: Quidkey’s checkout page handles them.
Read a link’s current status and expires_at at any time with GET /api/v1/payment-links/{id}. Use it to reconcile: for example to confirm a link is still active before re-sending it, or as a backstop if you expected a webhook but never received one.
curl 'https://core.quidkey.com/api/v1/payment-links/PAYMENT_LINK_ID' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
The link status is for managing the link itself. The authoritative record of whether the buyer paid is the webhook: fulfil orders on quidkey.payment_request.succeeded, not on the link status.

Full Integration Guide

This page is a quick orientation. Sharing strategies, the checkout experience, custom redirect URLs, link expiry, single-use versus reusable links, and webhooks are all covered in the dedicated Hosted Checkout guide.

Hosted Checkout Overview

The complete walkthrough, including the link lifecycle

Create a Checkout Link

Full request reference, custom redirect URLs, and link expiry

Checkout Experience

See what your buyers see when they open a link

After Payment

Track status, handle webhooks, and manage your links

Other Ways to Accept a Payment

Redirect (Pay by Bank)

Create a payment and redirect the buyer to a Quidkey-hosted bank page

Embedded (with Stripe)

Add Quidkey inline alongside your Stripe Payment Element